Мини-HOWTO: Модули ядра Linux | ||
---|---|---|
Пред. |
Почти все функции ядра могут быть собраны в виде модулей. Исключением является драйвер файловой системы, на которой находится корневой раздел (обычно это файловая система ext2)
Однако, некоторые вещи очень сложно настроить, если их поддержка собрана в виде модуля, и я бы рекомендовал встроить в ядро:
Драйверы сетевых карт Ethernet.
Драйверы SCSI CD-ROM.
С другой стороны, существуют такие комбинации драйверов, которые работают ТОЛЬКО если они собраны в виде модулей, особенно если их несколько:
Драйвер принтера на параллельном порту,
Драйвер внешнего дисковода, подключаемого к параллельному порту (такие как IOMEGA ZipDrive или JazzDrive, или BackPack CD-ROM), и
Демон PLIP
Вам надо самим решить, что вы встроите в ядро, а что соберете в виде модулей. Не забудьте про то, что я вам говорил выше. Выбирать вы будете в процессе исполнения второй из следующих трех команд:
cd /usr/src/linux make menuconfig make dep clean modules modules_install zImage |
После этого надо обновить зависимости модулей. Это делается следующей командой:
depmod -a |
Теперь новое ядро надо включить в процедуру загрузки системы. Я предполагаю, что вы для этого используете LILO, потому что это единственный загрузчик, с которым я имел дело.
Я настоятельно рекомендую вам НЕ использовать автоматическую процедуру установки нового ядра в процедуру загрузки, потому что, если это ядро не загрузится, вам будет очень сложно восстановить систему без полной переустановки, что не очень приятно. По этой причине у меня в файле /etc/lilo.conf есть следующие строки:
image=/usr/src/linux/arch/i386/boot/zImage label=new alias=n read-only vga=ask optional |
Здесь указано, что существует еще один ВАРИАНТ загрузки системы (который не будет работать, если образ этого ядра не существует), при котором ядро загружается из файла /boot/newlinux. При его запуске система предложит вам выбрать видеорежим, в котором будет загружаться ядро.
Я предполагаю, что у вас есть подобные строки в файле /etc/lilo.conf, и что вы поместили в вышеуказанное место правильно собранное ядро. Теперь его можно установить в процедуру загрузки командой:
lilo |
После этого вам надо перейти к одному из следующих разделов (это зависит от того, какой дистрибутив у вас установлен):
Перед тем, как переходить к исполнению советов, приведенных в этой главе, убедитесь в том, что вы проделали все, что описано в разделе "Пересобираем ядро для включения поддержки модулей".
Процедуры загрузки системы дистрибутивов Debian и RedHat идентичны, поэтому у них совпадает и процедура настройки модулей.
Зайдите в систему в качестве root-а, и, при помощи вашего любимого текстового редактора, создайте файл /etc/rc.d/init.d/modules.init, написав в нем следующее:
# Modules initialisation. # Инициализация модулей. # # Start up the module auto-loading daemon. # Запуск демона автозагрузки модулей /sbin/kerneld # Mount all currently unmounted auto-mounted partitions. # подключаем все неподключенные разделы. /sbin/mount -a |
После создания этого файла в качестве root-а сделайте следующее:
cd /etc/rc.d chmod 755 init.d/* cd rc3.d ln -s ../init.d/modules.init 05modules.init |
Теперь систему можно перезагрузить, и, если все пойдет хорошо, то модули будут прекрасно работать.
Перед тем, как переходить к исполнению советов, приведенных в этой главе, убедитесь в том, что вы проделали все, что описано в разделе "Пересобираем ядро для включения поддержки модулей".
Теперь вам надо отредактировать файл /etc/rc.d/rc.M примерно следующим образом:
В районе строки 18 есть раздел, содержащий следующее:
# Экран отключается после 15 минут простоя # Screen blanks after 15 minutes idle time. /bin/setterm -blank 15 |
Сразу после этого раздела вставьте следующее:
# Load the kernel module auto-loader. # Загружаем демон автозагрузки модулей. /sbin/kerneld |
Примерно через 12 строк вы увидите следующее:
# if there is no /etc/HOSTNAME, fall back on this default: # если файл /etc/HOSTNAME не существует, то используем значение по умолчанию: |
Непосредственно перед этими строками вставьте следующее (не забывайте про пустые строки):
# Mount remaining unmounted auto-mount drives. # Подключаем оставшиеся неподключенные разделы. /sbin/mount -a |
После внесения этих изменений запишите файл.
Более никаких изменений в Slackware не требуется.
Перед тем, как переходить к исполнению советов, приведенных в этой главе, убедитесь в том, что вы проделали все, что описано в разделе "Пересобираем ядро для включения поддержки модулей".
Точная последовательность действий в других дистрибутивах, конечно же, не может быть определена, но, скорее всего, она будет совпадать с одной из вышеописанных. Для того, чтобы определить, которая из них вам подходит, вы можете просмотреть содержимое каталога /etc/rc.d, следующим образом:
cd /etc/rc.d ls -l *.d rc.* |
В зависимости от того, что вы увидите на экране, у вас есть три варианта действий:
Если в этом списке есть каталог init.d и несколько каталогов с именем вида rc?.d, где вместо знака вопроса стоят различные цифры, и в этом списке НЕТ файла с именем rc.M, то этот дистрибутив можно настроить так, как описано в главе "Настройка поддержки модулей в дистрибутивах Debian и RedHat".
Если в этом списке НЕТ каталога init.d, но есть файл rc.M, то этот дистрибутив можно настроить так, как описано в главе "Настройка поддержки модулей в дистрибутиве Slackware".
Если ваш список не удовлетворил предыдущим двум вариантам, то процедура загрузки вашей системы не описана в этом HowTo. В этом случае вы можете связаться с автором этого документа, и он вам поможет настолько, насколько это возможно.