10.2. Добавление новых возможностей в ядро 2.4

Проблема

Требуется включить в ядро 2.4 новые возможности — например, поддержку нового оборудования, файловых возможностей или сетевых функций. Допустим, вы купили жёсткий диск с интерфейсом USB для архивации данных, а раньше в системе USB-устройства не использовались. Как узнать, поддерживает ли система USB? И если не поддерживает — как добавить поддержку?

Решение

Загрузите свежие исходные тексты ядра и откомпилируйте ядро с использованием существующего файла .config, добавив в него новые возможности.

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

Чтобы добавить новые возможности в существующее ядро, загрузите новые исходные тексты той же версии ядра. Версия ядра выводится командой:

$ uname -r
2.4.22

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

$ tar xvjf linux-2.4.22.tar.bz2

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

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

$ make mrproper
$ cp /path/to/old/.config ~/src/linux-2.4.22/.config
$ make oldconfig
$ 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

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

В GRUB соответствующая запись выглядит примерно так:

title Kernel 2.4.22 new kernel
root (hd0,0)
kernel /boot/vmlinuz-2.4.22-new-kernel root=/dev/hda1 ro

Пользователи LILO делают следующее:

image=/boot/vmlinuz-2.4.22-new-kernel
label=Kernel 2.4.22 new kernel
root=/dev/hda1
read-only

И не забудьте перезапустить LILO, чтобы новая конфигурация была записана в загрузочную запись:

# /sbin/lilo

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

$ cp ~/src/linux-2.4.22/.config ~/kernel-configs/.config-2.4.22-jan-04

Если вы убедились, что новое ядро работает нормально, можно удалить старое ядро, его каталог /lib/modules/$VERSION, дерево сборки и записи загрузчика.

Комментарий

В документации часто рекомендуется размещать исходные тексты ядра и дерево сборки в каталоге /usr/src/linux, но делать этого не следует. В файле README ядра прямо сказано: «НЕ ИСПОЛЬЗУЙТЕ область /usr/src/linux!». Лучше храните исходники ядра в домашнем каталоге или любом другом удобном месте.

См. также

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