10.3. Усечение типового ядра 2.4

Проблема

Требуется переделать ядро, входящее в ваш дистрибутив, и убрать из него все лишние драйверы, а также избавиться от поддержки ненужного оборудования и функций.

Решение

Загрузите новые исходные тексты той же версии ядра, откомпилируйте новое ядро и настройте его конфигурацию «с нуля». Версия ядра выводится командой uname:

$ uname -r
2.4.22

Предварительно выполните следующие действия:

Распакуйте новые исходные тексты ядра в подкаталог домашнего каталога — например, ~/src:

$ tar xvjf linux-2.4.22.tar.bz2

Отредактируйте make-файл нового ядра (~/src/linux-2.4.22/Makefile) и измените параметр EXTRAVERSION, например на:

EXTRAVERSION=-slim-kernel

Выполните следующие команды из каталога ~/src/linux-2.4.22:

$ make mrproper
$ make menuconfig
$ make dep
$ make bzImage
$ make modules
$ su
$ make modules_install
# cp ~/src/linux-2.4.22/arch/i386/boot/bzImage /boot/vmlinuz-2.4.22-new-kernel
# cp ~/src/linux-2.4.22/System.map /boot/System.map-2.4.22-new-kernel

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

После завершения настройки добавьте новое ядро в загрузчик, перезагрузите систему и убедитесь, что она работает. Не забудьте скопировать новый файл .config в каталог за пределами дерева сборки, чтобы защитить его от случайного удаления или замены.

Комментарий

Описанная процедура предполагает настройку ядра с нуля. Команда make oldconfig не подходит, так как она не изменяет старую конфигурацию, а только добавляет новые функции. Администраторы серверов часто предпочитают минимизировать ядро для повышения безопасности. Меньшее количество включённых функций снижает возможные риски атак. На настольных системах избыточность может быть допустимой, поскольку предоставляет большую гибкость при внесении изменений в будущем.

См. также

Раздел «Введение» этой главы, электронная справка программы настройки ядра, раздел 10.2.