Устройства, требующие специальной настройки

Некоторые устройства требуют небольшой дополнительной настройки помимо обычных псевдонимов вида устройство-модуль.

Символьные устройства с главным номером 10: Мыши, сторожевые псы (watchdogs) и генераторы случайных чисел

Обычно периферийные устройства определяются при помощи их главных номеров, например ftape имеет главный номер (major) 27. Однако, если вы взглянете в каталог /dev, и поищете там символьные устройства с главным номером 10, вы увидите там набор абсолютно разных устройств, включая:

Очевидно, что эти устройства контролируются несколькими различными модулями, а не одним. Поэтому, для настройки конфигурации 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_hostadapter

Драйвера 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-ы, стриммеры и прочие на другом.

Когда недостаточно просто загрузить модуль: Строка post-install

Иногда, простой загрузки модуля недостаточно для того, чтобы все нормально работало. Например, если у вас драйвер звуковой платы собран в виде модуля, то очень часто требуется установить необходимый уровень громкости звука. Только проблема состоит в том, что установки громкости обнуляются при следующей загрузке модуля. Ниже приведен способ решения от Ben Galliart ():

Конечное решение требует установки пакета 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. Вся система "настроек" модулей сейчас претерпевает некоторые изменения, и поэтому могут появиться некоторые различия на момент чтения вами этого документа