10.2. Добавление новых возможностей в ядро 2.4
Проблема
Требуется включить в ядро 2.4 новые возможности — например, поддержку нового оборудования, файловых возможностей или сетевых функций. Допустим, вы купили жёсткий диск с интерфейсом USB для архивации данных, а раньше в системе USB-устройства не использовались. Как узнать, поддерживает ли система USB? И если не поддерживает — как добавить поддержку?
Решение
Загрузите свежие исходные тексты ядра и откомпилируйте ядро с использованием существующего файла .config, добавив в него новые возможности.
Предварительно сделайте следующее:
- убедитесь в том, что на диске имеется не менее 500 Мбайт свободного пространства для процесса сборки;
- распечатайте выходные данные dmesg, lspci, cat /proc/cpuinfo и lsusb (за дополнительной информацией обращайтесь к главе 5);
- создайте резервную копию всех данных и держите под рукой загрузочный диск аварийного восстановления;
- найдите файл .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!». Лучше храните исходники ядра в домашнем каталоге или любом другом удобном месте.
См. также
Раздел «Введение» настоящей главы; электронная справка в программе настройки ядра.