10.3. Усечение типового ядра 2.4
Проблема
Требуется переделать ядро, входящее в ваш дистрибутив, и убрать из него все лишние драйверы, а также избавиться от поддержки ненужного оборудования и функций.
Решение
Загрузите новые исходные тексты той же версии ядра, откомпилируйте новое ядро и настройте его конфигурацию «с нуля». Версия ядра выводится командой uname:
$ uname -r
2.4.22
Предварительно выполните следующие действия:
- убедитесь в том, что на диске имеется не менее 500 Мбайт свободного пространства для процесса сборки;
- распечатайте выходные данные dmesg, lspci, cat /proc/cpuinfo и lsusb (подробности см. в главе 5);
- создайте резервную копию всех данных и держите под рукой загрузочный диск аварийного восстановления.
Распакуйте новые исходные тексты ядра в подкаталог домашнего каталога — например, ~/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
В процессе настройки ядра важно помнить, что вы начинаете «с нуля», поэтому включите каждую нужную функцию, и следите, чтобы ненужные функции не были добавлены. Основные возможности, которые могут понадобиться:
- поддержка загружаемых модулей;
- поддержка форматов a.out, ELF и MISC (в меню General Setup);
- поддержка всех устройств загрузки (IDE-диски, CD-ROM, флоппи-дисководы, SCSI и USB) должна быть встроена в ядро. Если оставить их модулями, потребуется ramdisk (образ initrd) для загрузки системы.
После завершения настройки добавьте новое ядро в загрузчик, перезагрузите систему и убедитесь, что она работает. Не забудьте скопировать новый файл .config в каталог за пределами дерева сборки, чтобы защитить его от случайного удаления или замены.
Комментарий
Описанная процедура предполагает настройку ядра с нуля. Команда make oldconfig не подходит, так как она не изменяет старую конфигурацию, а только добавляет новые функции. Администраторы серверов часто предпочитают минимизировать ядро для повышения безопасности. Меньшее количество включённых функций снижает возможные риски атак. На настольных системах избыточность может быть допустимой, поскольку предоставляет большую гибкость при внесении изменений в будущем.
См. также
Раздел «Введение» этой главы, электронная справка программы настройки ядра, раздел 10.2.