Пересобираем ядро для включения поддержки модулей

Почти все функции ядра могут быть собраны в виде модулей. Исключением является драйвер файловой системы, на которой находится корневой раздел (обычно это файловая система ext2)

Однако, некоторые вещи очень сложно настроить, если их поддержка собрана в виде модуля, и я бы рекомендовал встроить в ядро:

С другой стороны, существуют такие комбинации драйверов, которые работают ТОЛЬКО если они собраны в виде модулей, особенно если их несколько:

Вам надо самим решить, что вы встроите в ядро, а что соберете в виде модулей. Не забудьте про то, что я вам говорил выше. Выбирать вы будете в процессе исполнения второй из следующих трех команд:

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

Перед тем, как переходить к исполнению советов, приведенных в этой главе, убедитесь в том, что вы проделали все, что описано в разделе "Пересобираем ядро для включения поддержки модулей".

Процедуры загрузки системы дистрибутивов Debian и RedHat идентичны, поэтому у них совпадает и процедура настройки модулей.

  1. Зайдите в систему в качестве 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
              
  2. После создания этого файла в качестве 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 примерно следующим образом:

  1. В районе строки 18 есть раздел, содержащий следующее:

    # Экран отключается после 15 минут простоя
    # Screen blanks after 15 minutes idle time.
    /bin/setterm -blank 15
              

    Сразу после этого раздела вставьте следующее:

    # Load the kernel module auto-loader.
    # Загружаем демон автозагрузки модулей.
    /sbin/kerneld
              
  2. Примерно через 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.*
      

В зависимости от того, что вы увидите на экране, у вас есть три варианта действий:

  1. Если в этом списке есть каталог init.d и несколько каталогов с именем вида rc?.d, где вместо знака вопроса стоят различные цифры, и в этом списке НЕТ файла с именем rc.M, то этот дистрибутив можно настроить так, как описано в главе "Настройка поддержки модулей в дистрибутивах Debian и RedHat".

  2. Если в этом списке НЕТ каталога init.d, но есть файл rc.M, то этот дистрибутив можно настроить так, как описано в главе "Настройка поддержки модулей в дистрибутиве Slackware".

  3. Если ваш список не удовлетворил предыдущим двум вариантам, то процедура загрузки вашей системы не описана в этом HowTo. В этом случае вы можете связаться с автором этого документа, и он вам поможет настолько, насколько это возможно.