очень много. Но если в конце не появляется сообщения об ошибке, значит, все завершилось успешно.
17.5.5. Компиляция ядра
Вот мы и добрались до основного этапа - собственно компиляции ядра. На этом этапе Ваше участие сводится только к запуску команды make bzImage, которая служит для создания сжатого образа ядра. Снова по экрану бегут непонятные сообщения (которые просто не успеваешь воспринять). О том, что процесс компиляции завершился без ошибок, вы можете судить по появлению сообщений примерно такого вида (естественно, я привожу те сообщения, которые были выданы в процессе компиляции ядра на моем компьютере):
Root device is (3,5)
Boot sector 512 bytes.
Setup is 2360 bytes.
System is 887 kB make[1]: Выход из каталог '/opt/kernel/2.4.2/linux/arch/i386/boot'
И в текущем каталоге должны появиться файлы System.map и vmlinux. Кроме того, в подкаталогах каталога linux тоже появляется масса новых файлов (в том числе и .o-файлы, которые упоминались выше, как мешающие повторному проведению компиляции ядра в том же каталоге).
На этом собственно компиляция ядра и заканчивается. В дополнение приведу еще три замечания из документации к ядру.
• Если в качестве загрузчика вы используете LILO, то после компиляции можно выполнить команду make install, однако рекомендуется вначале проверить (и подкорректировать) конфигурационный файл LILO.
• Хотя такое событие и очень маловероятно, но если ваша система не может загружать ядро в формате bzImage, вы можете скомпилировать его как zImage. Однако, надо иметь в виду, что поддержка zImage будет в ближайшем будущем отменена, поэтому разработчики предлагают тем, у кого возникнут проблемы с загрузкой ядра в формате bzImage сообщить об этом (приложив детальное описание конфигурации) в список рассылки linux-kernel и Питеру Анвину (H.Peter Anvin, [email protected]).
• И, наконец, если вы вдруг захотите создать загрузочный диск (без корневой файловой системы или LILO), вставьте дискету в дисковод A: и дайте команду make bzdisk.
17.5.6. Компиляция модулей
Если вы сконфигурировали какие-то драйверы как отдельные модули (выбирали при конфигурации вариант 'm' при ответе на некоторые вопросы), то вы теперь должны еще выполнить команду make modules, а затем еще команду make modules_install. В файле Documentation/modules.txt можно найти дополнительную информацию по этому поводу, а также объяснение того, как использовать модули.
В завершение этапа компиляции стоит выполнить еще команду make clean, чтобы удалить образующиеся в процессе компиляции промежуточные объектные файлы (файлы с расширением.o).
17.5.7. Установка ядра
После этого остается сделать последний шаг - установить ядро и перезагрузиться. Для установки ядра вы должны иметь права суперпользователя. (Хотя в начале главы и было сказано, что для компиляции ядра надо иметь права суперпользователя, однако все предыдущие шаги можно было выполнить и от имени обычного пользователя. Не стоит работать от имени суперпользователя без необходимости!)
Разработчики рекомендуют вначале сохранить где-нибудь копию старого ядра на случай, если что-то пойдет не так, как задумано. Эта рекомендация особенно актуальна для случая, если вы ставите ядро из нестабильной ветки, поскольку такие версии могут содержать неотлаженный код. Кроме самого ядра надо сделать backup-копии модулей, соответствующих ядру. Если вы устанавливаете новое ядро с тем же самым номером версии, что и у работающего в Вашей системе ядра, сделайте резервную копию всего каталога с модулями перед выполнением команды make modules_install.
Для того, чтобы иметь возможность загружать новое ядро, копию образа ядра (которая после компиляции создана в виде файла…/linux/arch/i386/boot/bzImage) необходимо поместить туда, где у вас расположены загружаемые ядра (обычно это каталог /boot).
Скопируйте в каталог /boot три файла: файлы System.map и vmlinux, появившиеся в каталоге…linux, и файл…/linux/arch/i386/boot/bzImage. Я при копировании добавил к их именам номер версии ядра, превратив их, соответственно, в System.map-2.4.2, vmlinux-2.4.2 и vmlinuz-2.4.2, чтобы не путать с теми ядрами, которые уже были в системе ранее. Переименовывать bzImage в vmlinuz в принципе не обязательно, потому что образ ядра может иметь как то, так и другое имя, и обычно располагается либо в корневом каталоге (/), либо в каталоге /boot.
Далее нам осталось только обеспечить загрузку нового ядра с помощью lilo. Для этого надо вначале подкорректировать файл /etc/lilo.conf. Ваш файл /etc/lilo.conf может иметь примерно такой вид:
boot = /dev/hda2
compact
delay = 50
root = current
image = /boot/vmlinuz-2.2.11-4bc
label = linux
read-only
other = /dev/hda1
table = /dev/hda
label = dos
Начиная со строки image, идут секции конфигурационного файла, соответствующие разным операционным системам, которые должны загружаться по выбору пользователя. В каждой такой секции имеется строка label. В этой строке записывается имя, которое вводится в ответ на приглашение LILO и служит для выбора пользователем загружаемой ОС.
Скопируйте секцию image и замените в новой секции название образа ядра и метку. Файл /etc/lilo.conf примет следующий вид:
boot = /dev/hda2
compact
delay = 50
root = current
image = /boot/vmlinuz-2.2.11-4bc
label = linux
read-only
image = /boot/vmlinuz-2.4.2
label = linux-2.4.2
read-only
other = /dev/hda1
table = /dev/hda
label = dos
После того, как вы откорректировали файл /etc/lilo.conf, необходимо выполнить команду /sbin/lilo,