Мини-HOWTO: Модули ядра Linux |
---|
Пред. | | |
Пересобираем ядро для включения поддержки модулей
Почти все функции ядра могут быть собраны в виде модулей. Исключением
является драйвер файловой системы, на которой находится корневой раздел
(обычно это файловая система ext2)
Однако, некоторые вещи очень сложно настроить, если их поддержка собрана
в виде модуля, и я бы рекомендовал встроить в ядро:
С другой стороны, существуют такие комбинации драйверов, которые
работают ТОЛЬКО если они собраны в виде
модулей, особенно если их несколько:
Драйвер принтера на параллельном порту,
Драйвер внешнего дисковода, подключаемого к параллельному порту
(такие как IOMEGA ZipDrive или
JazzDrive, или BackPack CD-ROM), и
Демон PLIP
Вам надо самим решить, что вы встроите в ядро, а что соберете в виде
модулей. Не забудьте про то, что я вам говорил выше. Выбирать вы будете в
процессе исполнения второй из следующих трех команд:
cd /usr/src/linux
make menuconfig
make dep clean modules modules_install zImage
|
После этого надо обновить зависимости модулей. Это делается
следующей командой:
Теперь новое ядро надо включить в процедуру загрузки системы.
Я предполагаю, что вы для этого используете 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,
и что вы поместили в вышеуказанное место правильно собранное ядро.
Теперь его можно установить в процедуру загрузки командой:
После этого вам надо перейти к одному из следующих разделов
(это зависит от того, какой дистрибутив у вас установлен):
Настройка поддержки модулей в дистрибутивах Debian и RedHat
Перед тем, как переходить к исполнению советов, приведенных в этой
главе, убедитесь в том, что вы проделали все, что описано в разделе
"Пересобираем ядро для включения поддержки модулей".
Процедуры загрузки системы дистрибутивов 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
|
Теперь систему можно перезагрузить, и, если все пойдет хорошо,
то модули будут прекрасно работать.
Настройка поддержки модулей в дистрибутиве Slackware
Перед тем, как переходить к исполнению советов, приведенных в этой
главе, убедитесь в том, что вы проделали все, что описано в разделе
"Пересобираем ядро для включения поддержки модулей".
Теперь вам надо отредактировать файл /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. В этом
случае вы можете связаться с автором этого документа, и он
вам поможет настолько, насколько это возможно.