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

Проблема
Требуется включить в ядро 2.4 новые возможности — например, поддержку ново го оборудования, новых файловых возможностей или сетевых функций. Допус тим, вы купили жесткий диск с интерфейсом USB для архивации данных, а рань ше в системе USB-устройства не использовались. Как узнать, поддерживает ли
система USB? И если не поддерживает — как добавить поддержку?
Решение
Загрузите свежие исходные тексты ядра и откомпилируйте ядро с использовани ем существующего файла .config, добавив в него новые возможности.
Предварительно сделайте следующее:
О убедитесь в том, что на диске имеется не менее 500 Мбайт свободного про странства для процесса сборки;
О распечатайте выходные данные dmesg, Iscpi, cat/proc/cpuinfo и Lsusb (за допол нительной информацией обращайтесь к главе 5);
о создайте резервную копию всех данных и держите под рукой загрузочный
диск аварийного восстановления;
О найдите файл .config ядра.
Чтобы добавить новые возможности в существующее ядро, загрузите но вые исходные тексты той лее версии ядра. Версия ядра выводится командой
uname:
$ uname -r
2.4.22
Распакуйте новые исходные тексты ядра в подкаталог, находящийся в вашем
домашнем каталоге, — например, ~/s r c :
$ tar xvjf 1inux-2.4.22.tar.bz2
Отредактируйте make-файл нового ядра (~/src/linux-2.4.22/Makefile) и при свойте новое значение параметру EXTRAVERSION — например, EXTRAVERSION=-newkernel.
Выполните следующие команды из каталога /~/src/linux-2.4.22:
$ make mrproper
Скопируйте файл .config в каталог/~/src/linux-2.4.22.
Переходите к настройке нового ядра. Программа конфигурации задаст много численные вопросы; на этом этапе выбираются новые возможности:
$ make oldconfig
Выполните следующие команды:
$ make dep
$ make bzlmage
$ 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 (hdO.O)
kernel /boot/vmlinuz-2.4.22-new-kernel rooWdev/hdal ro
Пользователи LILO делают следующее:
image=boot/vmlinuz-2.4.22-new-kernel
labe1=Kernel 2.4.22. new kernel
root=/dev/hdal
read-only
И не забудьте перезапустить LILO, чтобы новая конфигурация была записана
в загрузочную запись:
# /sbin/1-По
Сохраните копию нового файла .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! Она содержит (обычно непол ный) набор заголовков, используемых библиотечными заголовками ядра. Заголовки
должны соответствовать библиотеке и не зависеть от текущей версии ядра». Также
не стоит злоупотреблять правами root и использовать каталог, требующий доступа
root. Ядро может строиться где угодно, даже на полностью изолированном компьютере.
Поиск файла .config
Если ранее вы строили ядро в своей системе, файл .config будет находиться на
верхнем уровне старого дерева сборки. Если сборка ядра не выполнялась, поищи те в каталоге /boot, куда этот файл помещается большинством дистрибутивов.
Файл в каталоге /usr/src/linux, скорее всего, является обобщенным и бесполез ным для вашей конкретной конфигурации.
Если в системе нет файла .config, перейдите к разделу 10.3, потому что вам
придется настраивать конфигурацию ядра «с нуля». Команда make oldconfig будет
работать, но она использует конфигурацию по умолчанию из дерева сборки, со вершенно не соответствующую вашей системе. Команда make oldconfig сообщает,
какой файл она использует:
$ make oldconfig
# Using defaults found in arch/i386/defconfig
Этот файл вам не подходит! В выходных данных должно быть сказано:
# Using defaults found in .config
Прервите выполнение команды клавишами Ctrl+C и начните заново.
См. также
Раздел «Введение» настоящей главы; электронная справка в программе настрой ки ядра.