10.7. Добавление нового загружаемого модуля ядра
Проблема
В системе было установлено новое оборудование (сетевая или звуковая карта, устройство USB). Требуется установить новый модуль ядра (драйвер) для этого устройства.
Решение
В ядрах 2.4 и 2.6 используется одна и та же процедура. Перейдите в каталог с деревом сборки (например, ~/src/linux-2.4.25). Вам потребуется актуальный файл .config; скопируйте его на верхний уровень дерева сборки и выполните следующую команду:
# make oldconfig
В процессе настройки конфигурации найдите нужный драйвер и выберите его оформление в виде модуля (например, модуль tulip является универсальным драйвером для многих карт Ethernet). Затем выполните команды:
$ make dep
$ make modules
# make modules install
# depmod -av
Загрузите модуль командой modprobe:
# modprobe tulip
Процесс не требует перезагрузки системы.
Комментарий
Если использовать oldconfig по какой-либо причине не удастся, используйте make menuconfig. Этот способ займёт больше времени, и вам придётся внимательно следить за тем, чтобы не упустить важные моменты настройки.
При установке сторонних модулей, не входящих в дерево ядра, следуйте инструкциям производителя. Как правило, процесс включает загрузку исходных текстов, сборку модуля и его загрузку через modprobe. Некоторые производители, такие как nVidia, предоставляют специальные скрипты, автоматизирующие процесс установки.
Многие дистрибутивы Linux автоматически загружают модули для обнаруженного оборудования при старте системы. Если этого не происходит, необходимо вручную прописать модуль в стартовые файлы. Для Red Hat и SuSE — это /etc/modules.conf, для Debian — /etc/modules, а для Slackware — /etc/rc.modules.
Чтобы упростить управление модулями, можно включить поддержку kmod — автоматического загрузчика модулей, которая по умолчанию активирована в большинстве дистрибутивов. В конфигурации ядра для этого нужно выбрать пункт «Automatic kernel module loading» (в ядре 2.6) или «Kernel module loader» (в ядре 2.4) в разделе «Loadable module support».
Не используйте kerneld, начиная с версии ядра 2.2 он был заменён на kmod.
См. также
Раздел «Введение» настоящей главы; раздел 10.2.