Некоторые устройства требуют небольшой дополнительной настройки помимо обычных псевдонимов вида устройство-модуль.
Символьные устройства с главным номером 10:Разнообразные устройства
Обычно периферийные устройства определяются при помощи их главных номеров, например ftape имеет главный номер (major) 27. Однако, если вы взглянете в каталог /dev, и поищете там символьные устройства с главным номером 10, вы увидите там набор абсолютно разных устройств, включая:
Мыши, подключенные к различным портам (шинная мышь (busmouse), PS/2-мыши)
Сторожевые псы (watchdog)
Генератор случайных чисел ядра random
Интерфейс расширенного управления питанием APM (Advanced Power Management)
Очевидно, что эти устройства контролируются несколькими различными модулями, а не одним. Поэтому, для настройки конфигурации kerneld для этих разнообразных устройств необходимо указать не только главное, но и дополнительное (minor) число:
alias char-major-10-1 psaux # Для мыши PS/2 alias char-major-10-130 wdt # Для сторожевого пса (watchdog) WDT |
Для этого вам понадобится ядро версии не ранее 1.3.82; более ранние версии не передавали дополнительное число kerneld. Таким образом, kerneld не может выяснить, какому конкретно из подобных устройств понадобился соответствующий модуль.
Драйвера SCSI-устройств состоят из двух частей: драйвера SCSI-адаптера (например, Adaptec 1542) и драйвера конкретного SCSI-устройства, которое вы используете, например, жесткий диск, CD-ROM или стриммер. Все это может быть загружено в виде модулей. Но при этом, если вы хотите обратиться, например, к CD-ROM-у, подключенному к SCSI-адаптеру Adaptec, ядро и kerneld знает лишь то, что необходимо загрузить модуль sr_mod для поддержки SCSI CD-ROM-ов - ему не известно, к какому SCSI-контроллеру подключен этот CD-ROM, и, соответственно, не известно какой модуль загружать для поддержки SCSI-контроллера.
Для разрешения этой проблемы можно добавить строку в /etc/conf.modules, в которой будет указано, который из многих доступных модулей драйверов SCSI-контроллеров надо загружать:
alias scd0 sr_mod # sr_mod для SCSI CD-ROM-а ... alias scsi_hostadapter aha1542 # ... требует драйвер SCSI Adaptec |
Это работает только с ядрами версии 1.3.82 и выше.
Кроме того, это работает, если у вас только один SCSI-контроллер. Если у вас их несколько, то все немного усложняется.
В общем случае, нельзя заставить kerneld загрузить драйвер SCSI-адаптера, если драйвер для другого SCSI-адаптера уже загружен - вы должны либо встроить оба драйвера в ядро (не в модули), или загружать модули вручную.
Подсказка: Правда, существует способ заставить kerneld загружать несколько SCSI-драйверов. James Tsiao подсказал решение
Вы можете просто заставить kerneld загружать второй scsi-драйвер, установив зависимости в файле modules.dep вручную. Туда просто нужно добавить следующее:
/lib/modules/2.0.30/scsi/st.o: /lib/modules/2.0.30/scsi/aha1542.oЧтобы заставить kerneld загружать aha1542.o до загрузки st.o. Мой домашний компьютер настроен в точности так, как указано выше, и он прекрасно работает для всех моих дополнительных scsi-устройств, включая стриммер, cd-rom, и стандартные scsi-устройства. Трудность состоит в том, что команда depmod -a не может определить эти зависимости автоматически, поэтому необходимо добавлять их вручную, и при этом не запускать depmod -a при загрузке. Но после настройки kerneld прекрасно будет загружать aha1542.o.
Нужно помнить, что такой механизм работает, если у вас разные виды SCSI-устройств на разных SCSI-контроллерах, например, жесткие диски на одном, а CD-ROM-ы, стриммеры и прочие на другом.
Иногда, простой загрузки модуля недостаточно для того, чтобы все
нормально работало. Например, если у вас драйвер звуковой платы
собран в виде модуля, то очень часто требуется установить
необходимый уровень громкости звука. Только проблема состоит в том,
что установки громкости обнуляются при следующей загрузке модуля.
Ниже приведен способ решения от Ben Galliart
(<bgallia@luc.edu>
):
Конечное решение требует установки пакета setmix А затем добавим следующую строку к файлу /etc/conf.modules:
post-install sound /usr/local/bin/setmix -f /etc/volume.conf
Таким образом, после загрузки модуля звуковой платы, kerneld запускает команду, указанную в строке post-install sound. В результате звуковой модуль будет настроен командой /usr/local/bin/setmix -f /etc/volume.conf.
Этот путь можно использовать и для других модулей, например, модуль lp можно настроить программой tunelp, добавив строку
post-install lp tunelp options |
Для того, чтобы kerneld обработал эти опции, вам необходим kerneld версии 1.3.69f или выше.
Замечание: В более старых версиях этого мини-HOWTO упоминалась опция "pre-remove", которая могла использоваться для запуска команды до выгрузки модуля. Однако, она никогда не работала и ее использование вообще сомнительно - наиболее вероятно, что эта опция исчезнет из следующего релиза kerneld. Вся система "настроек" модулей сейчас претерпевает некоторые изменения, и поэтому могут появиться некоторые различия на момент чтения вами этого документа