Как это настроить?

Сначала достаньте необходимые части: подходящее ядро и последние утилиты из пакета modules. Затем надо установить утилиты modules. Это делается очень просто - распакуйте исходные тексты и запустите make install. Эта команда скомпилирует и установит следующие программы в каталог /sbin: genksysm, insmod, lsmod, modprobe, depmod и kerneld. Я рекомендую добавить несколько строк в загрузочные скрипты (для проведения некоторых настроек при загрузке Linux). Добавьте следующие строки в файл /etc/rc.d/rc.S (если у вас Slackware), или в /etc/rc.d/rc.sysinit (если у вас установлен SysVinit, т.е. Debian, RedHat, Caldera):

        # Запускаем kerneld, это должно произойти почти сразу
        # в процессе загрузки, обязательно ДО запуска fsck на файловых системах,
        # это может быть необходимо для автозагрузки драйверов дисков
        if [ -x /sbin/kerneld ]
        then
                /sbin/kerneld
        fi

        # Далее следуют стандартные команды fsck
        # А также команда для монтирования (mount) вашей корневой файловой системы в режиме чтение/запись

        # Обновление файла зависимостей модулей ядра
        # Ваша корневая файловая система ДОЛЖНА быть подключена в режиме чтение/запись на этот момент
        if [ -x /sbin/depmod ]
        then
                /sbin/depmod -a
        fi

Эти команды могут уже присутствовать в ваших SysV init скриптах. Первая часть запускает собственно kerneld. Вторая часть запускает depmod -a в момент загрузки системы. Программа depmod строит список всех доступных модулей и анализирует их взаимосвязи, чтобы знать, в каком случае один модуль предварительно требует загрузки другого перед своей загрузкой.

Замечание: Последние версии kerneld в качестве опции используют библиотеку GNU dbm, libgdbm. Если вы включите эту опцию при сборке утилит пакета modules, то kerneld не запустится, так как библиотека libgdbm недоступна. Это может вызвать проблемы. Например, если у вас каталог /usr находится на отдельном разделе, а kerneld запускается до подключения раздела с каталогом /usr. Рекомендуемое решение - перенести libgdbm из каталога /usr/lib в /lib, или собрать kerneld со статическими библиотеками.

Затем, распакуйте исходные тексты ядра, и по своему желанию настройте и соберите ядро. Если вы этого никогда не делали, вам необходимо прочитать файл README в каталоге исходных текстов ядра Linux. Когда вы запустите make config, для настройки параметров сборки ядра, вы должны обратить внимание на вопросы, которые задаются вначале:

  Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y
  (Разрешить поддержку загружаемых модулей (CONFIG_MODULES) [Д/н/?] Д)

Вам надо выбрать поддержку загружаемых модулей, иначе для kerneld просто не будет работы! Просто ответьте Да (Yes).

  Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y
  (Поддержка kerneld (CONFIG_KERNELD) [Д/н/?] Д)

Это, конечно, также необходимо. Затем, многие части ядра могут быть собраны в виде модулей - вы увидите вопросы типа

  Normal floppy disk support (CONFIG_BLK_DEV_FD) [M/n/y/?] 
  (Поддержка обычного флоппи-диска (CONFIG_BLK_DEV_FD) [M/н/д/?])

где вы можете ответить М ("Модуль"). В общем случае только драйверы, необходимые для загрузки системы (драйвер жесткого диска, драйвер корневой файловой системы), должны быть встроены в ядро; остальное можно собрать в виде модулей.

Обязательные драйверы

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

Когда вы закончите с make config, соберите и установите новое ядро командой make dep clean bzlilo modules modules_install.

Уффф.

Compiling a Kernel Image: Команда make zImage помещает новое ядро в файл arch/i386/boot/zImage. Вам нужно будет скопировать его туда, где находится ваш загрузочный образ (boot-image), или впоследствии установить его в LILO.

За наиболее подробной информацией по настройке, сборке и установке вашего собственного ядра обращайтесь к Kernel-HOWTO (HOWTO по ядру системы), которое постоянно рассылается через группу новостей comp.os.linux.answers, а также доступно в Linux Documentation Project (и его зеркалах).

Проверка kerneld

Перезагрузитесь с новым ядром. Когда система загрузится, наберите ps ax, и вы должны увидеть там строку с kerneld:

    PID TTY STAT  TIME COMMAND
     59  ?  S     0:01 /sbin/kerneld

Одно из самых приятных свойств kerneld состоит в том, что после загрузки ядра и загрузки kerneld требуется очень мало дополнительных действий. Для начала попробуйте использовать один из драйверов, который вы собрали в виде модуля - наиболее вероятно, что он заработает без дальнейшей настройки. Я собрал драйвер флоппи-дисковода в виде модуля так, чтобы можно было вставить DOS диск в дисковод и

  osiris:~ $ mdir a:
   Volume in drive A has no label
   Volume Serial Number is 2E2B-1102
   Directory for A:/

  binuti~1 gz       1942 02-14-1996  11:35a binutils-2.6.0.6-2.6.0.7.diff.gz
  libc-5~1 gz      24747 02-14-1996  11:35a libc-5.3.4-5.3.5.diff.gz
          2 file(s)        26689 bytes

Итак, драйвер флоппи-диска работает - он автоматически загрузился kerneld, когда я обратился к флоппи-диску.

Чтобы увидеть, что модуль флоппи на самом деле загружен, запустите /sbin/lsmod, который выдает список всех загруженных модулей на данный момент:

  osiris:~ $ /sbin/lsmod 
  Module:        #pages:  Used by:
  floppy            11    0 (autoclean)

Примечание "(autoclean)" означает, что модуль будет автоматически выгружен kerneld, если будет неактивен больше одной минуты. Таким образом, 11 страниц памяти (= 44кб, одна страница - это 4 кб) будут использованы,только пока я обращаюсь к флоппи - если пауза в использовании превысит одну минуту, то эта память будет освобождена. Достаточно удобно, если вам не хватает памяти для ваших программ!