Устройства, требующие специальной
настройки
Некоторые устройства требуют небольшой дополнительной настройки помимо
обычных псевдонимов вида устройство-модуль.
Символьные устройства с главным номером 10: Мыши, сторожевые
псы (watchdogs) и генераторы случайных чисел
Обычно периферийные устройства определяются при помощи их главных
номеров, например 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_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
(<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. Вся система
"настроек" модулей сейчас претерпевает некоторые изменения, и
поэтому могут появиться некоторые различия на момент чтения вами
этого документа
|
Пред. | Начало | След. |
Как kerneld определяет, какой
модуль загружать? | | Наблюдение за действиями kerneld |