On Fri, Oct 27, 2006 at 02:40:29PM +0300, Valentin Lavrinenko wrote: > Существует ли способ, не обращаясь к исходникам, определить, > какие major, minor обслуживает тот или иной модуль ядра? В общем случае нет. Иногда может помочь modinfo (если в модуле есть alias вида char-major-* или block-major-*), но это не всегда работает по следующим причинам: - В некоторых модулях соответствующие alias могут быть просто не прописаны разработчиком (они нужны только для автозагрузки модулей при обращении к файлам на статическом /dev, всё остальное работает и без них). - Зачастую major/minor регистрирует общий модуль, не работающий непосредственно с аппаратурой, а тот модуль, который обслуживает нужное устройство, просто использует общие функции. Именно такая ситуация с драйвером parport_serial - есть общий драйвер для последовательных портов и отдельный модуль для поддержки комбинированных PCI-устройств, имеющих как последовательные, так и параллельные порты. - Наконец, в последнее время многие новые драйверы используют динамический выбор major - конкретный номер выделяется только при загрузке модуля. А minor почти всегда назначались динамически (исключениями являются разве что IDE и ttyS* для ISA-устройств). Вообще при использовании ядер 2.6.x и udev следить за конкретными номерами major/minor уже не так нужно - вместо этого можно добавить правила udev для обнаружения устройств с требуемыми характеристиками (PCI-устройства можно различать, например, по положению на шине PCI, некоторые USB-устройства имеют уникальные серийные номера, ...) и назначения им требуемых имён, не зависящих от major/minor.