Инсталяция Нового Ядра Вручную

Ядро размещается в arch/i386/boot/bzImage (или в zImage если вы использовали make zImage). Стандартным каталогом для установки ядра является /boot. Вам также нужно скопировать файл System.map чтобы обеспечить правильную работу некоторых программ (например top). Довольно полезно называть эти файлы по версии ядра. Предположим, что версия вашего ядра 2.4.10-foo. Вам следует сделать следующее:

$ cp arch/i386/boot/bzImage /boot/vmlinux-2.4.10-foo
$ cp System.map /boot/System.map-2.4.10-foo

Теперь вам необходимо оповестить загрузчик системы о появлении нового ядра. Существует два варианта: вы используете grub или LILO. Примечание: Mandrake Linux по умолчанию сконфигурирован для использования LILO.

Перенастройка Grub

Очевидно, что важно сохранить возможность загрузки вашего старого ядра. Самый простой способ изменить настройки grub - это использовать drakboot (смотрите главу Изменение загрузочной конфигурации в книге Стартовое руководство пользователя). Альтернативой может служить изменение файла следующим образом.

Вам нужно изменить файл /boot/grub/menu.lst. Примерно так обычно выглядит файл menu.lst после инсталляции дистрибутива Mandrake Linux и до того, как вы что-то в нем поменяли:

timeout 5
color black/cyan yellow/cyan
i18n (hd0,4)/boot/grub/messages
keytable (hd0,4)/boot/fr-latin1.klt
default 0

title linux
kernel (hd0,4)/boot/vmlinuz root=/dev/hda5

title failsafe
kernel (hd0,4)/boot/vmlinuz root=/dev/hda5  failsafe

title Windows
root (hd0,0)
makeactive
chainloader  +1

title floppy
root (fd0)
chainloader +1

Этот файл содержит две части: заголовок с общими настройками (первые пять строк), и образы, которые содержат информацию о различных ядрах GNU/Linux или о других операционных системах (OS) timeout 5 определяет задержку (в секундах) перед тем, как grub начнет автоматическую загрузку образа по умолчанию (он устанавливается строкой default 0 в общих настройках, то есть будет загружен первый образ в данном списке). Директива keytable определяет где найти раскладку (keymap) для вашей клавиатуры. В данном примере, это французская раскладка. Для установки русской раскладки нужно поставить какую-либо из русских, например keytable (hd0,4)/boot/ru4.klt. В случае, когда неопределена ни одна из раскладок, будет использована plain QWERTY. Надпись hd(x,y) обозначает ссылку на номер диска x (как в BIOS) и номер раздела на нем y.

Затем идут различные образы. В приведенном примере определено четыре образа: linux, failsafe, windows, и floppy.

  • Секция linux рассказывает grub про ядро, которое должно быть загружено (kernel hd(0,4)/boot/vmlinuz), тут же присутствуют опции, указывающие где найти ядро. В данном случае, root=/dev/hda5 корень файловой системы расположен на /dev/hda5. Фактически /dev/hda5 для grub является эквивалентом hd(0,4), но ничего не мешает ядру находится на разделе, отличном от корневого;

  • Секция failsafe похожа на предыдущую, за исключением того, что ядру передается параметр (failsafe) который заставляет ядро грузиться в “однопользовательском” режиме (single or rescue mode);

  • секция windows просто говорит grub загрузиться с первого сектора первого раздела, где содержится загрузочный сектор Windows;

  • секция floppy просто грузит систему с дискеты, находящейся в первом дисководе (конечно, если она там есть). Это может быть загрузочный диск Windows или ядро GNU/Linux, расположенное на дискете;

Замечание

В зависимости от уровня безопасности, который вы используете в вашей системе, в этом файле могут отсутствовать некоторые записи, описанные здесь.

Вернемся к делу. На этом этапе нам нужно добавить новую секцию в конфигурационный файл grub, описывающую загрузку нового ядра. В этом примере мы разместим новую секцию впереди других, но нам ничего не мешает поместить эту секцию где-нибудь в другом месте:

title foo
kernel (hd0,4)/boot/vmlinux-2.4.10-foo root=/dev/hda5  

Не забудьте адаптировать этот файл к вашей конфигурации системы! В данном примере корневая файловая система GNU/Linux находится тут: /dev/hda5, Но в вашей системе это может быть совсем другое место.

Вот и все. В отличии от программы LILO (которая будет рассмотрена ниже), больше ничего делать не надо. Просто перезагрузите свой компьютер и новая запись, которую вы только что определили, уже появится. Теперь выберите новое ядро из меню и новое ядро должно загрузится.

Если вы скомпилировали ядро с поддержкой видеобуфера (framebuffer), вы вероятно захотите его использовать: в этом случае вам нужно добавить параметр ядру, указывающий разрешение в котором должна стартовать система. Список режимов можно вычитать в файле /usr/src/linux/Documentation/fb/vesafb.txt (это верно только если включен VESA framebuffer! Иначе обратитесь к соответствующему файлу). Для режима 800x600 32бита [34], соответствует режим с номером 0x315, поэтому вам нужно добавить к параметрам ядра следующую директиву:

vga=0x315

и ваша запись преобразится в:

title foo
kernel (hd0,4)/boot/vmlinux-2.4.10-foo root=/dev/hda5 vga=0x315 

Для получения более подробной информации обратитесь к справочной системе относительно grub (info grub).

Перенастройка LILO

Наиболее простой способ для перенастройки LILO это использование drakboot (смотрите главу Изменение загрузочной конфигурации в книге Стартовое руководство пользователя). Другой способ - вы можете отредактировать файл конфигурации вручную следующим образом.

Конфигурационным файлом для LILO является /etc/lilo.conf. Мы приводим типичный файл конфигурации lilo.conf:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
vga=normal
default=linux
keytable=/boot/fr-latin1.klt
lba32
prompt
timeout=50
message=/boot/message
image=/boot/vmlinuz-2.4.8-17mdk
        label=linux
        root=/dev/hda1
        read-only
other=/dev/hda2
        label=dos
        table=/dev/hda 

Файл lilo.conf состоит из основного раздела и дополнительных разделов для каждой из операционных систем. В приведенном выше примере основной раздел содержит следующие директивы:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
vga=normal
default=linux
keytable=/boot/fr-latin1.klt
lba32
prompt
timeout=50
message=/boot/message

Директива boot= сообщает LILO где размещается загрузочный сектор; в данном случае в MBR (Master Boot Record) на первом жестком диске IDE. Если вы хотите чтобы LILO грузилось с дискеты, просто замените /dev/hda на /dev/fd0. Директива prompt заставляет LILO показывать меню при старте. Из установки времени задержки (пауза) следует, что LILO запустит образ по умолчанию через 5 секунд (timeout=50). Если вы уберете директиву timeout, то LILO будет ждать до бесконечности пока вы что нибудь не выберете.

Теперь идет раздел linux:

image=/boot/vmlinuz-2.4.8-17mdk
        label=linux
        root=/dev/hda1
        read-only

Секция для загрузки ядра GNU/Linux всегда начинается с директивы image=, в которой указывается полный, правильный путь к ядру. Любой раздел содержит директиву с уникальным идентификатором label=, в данном случае это linux. Директива root= указывает LILO на каком разделе находится корневая файловая система для этого ядра. Разумеется, что в вашей конфигурации корневая файловая система может находится в другом месте... Директива read-only объясняет LILO, что в процессе загрузки корневую файловую систему нужно примонтировать в режиме только для чтения (read-only): если эта директива отсутствует - вы получите предупреждение.

Рассмотрим раздел Windows:

other=/dev/hda2
        label=dos
        table=/dev/hda 

Если раздел начинается с директивы other=, то фактически LILO может запускать любую операционную систему, отличную от GNU/Linux: аргументом этой директивы служит расположение загрузчика этой системы, в данном случае это загрузчик Windows. Для того чтобы найти начало раздела, содержащего загружаемую операционную систему GNU/Linux, также нужно знать где находится таблица разделов диска. Это указывается с помощью директивы table=. Как и в случае с разделом linux, директива label= содержит уникальный идентификатор раздела.

Теперь пришло время добавить раздел для вашего нового ядра. Вы можете разместить этот раздел где угодно, ниже основного раздела, но только не внутри другого раздела. Вообщем, для добавления в загрузчик нового ядра нужно вписать в файл /etc/lilo.conf что-то наподобие этого:

image=/boot/vmlinux-2.4.10-foo
        label=foo
        root=/dev/hda1
        read-only

Не забудьте адаптировать этот пример для вашей конфигурации системы! Мы преднамеренно привели пример для ситуации отличной от той, что была рассмотрена в примере по настройке grub

Если вы скомпилировали ваше ядро с поддержкой видеобуфера (framebuffer), то нужно указать опции ядру аналогично, как это было показано для grub. Единственным отличием является то, что каждая опция ядра занимает отдельную строку:

vga=0x315

Приводим вид файла /etc/lilo.conf после внесения изменений, с некоторыми комментариями для красоты (все строки, начинающиеся с #), будут игнорированы программой LILO):

#
# Общий раздел
#
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
# во  время запуска, мы хотим normal VGA. Framebuffer переключит разрешение
# в случае если будет использовано это:
vga=normal

# сообщение, которое будет показано при старте системы...
message=/boot/message

# Что будет грузиться по умолчанию.
# Внесем сюда наше свежеоткомпилированное ядро:
default=foo
# показать вопрос о том, что грузить...
prompt
# ... ждать пять секунд
timeout=50
#
# Ваше новое ядро: будет грузится по умолчанию
#
image=/boot/vmlinux-2.4.10-foo
        label=foo
        root=/dev/hda1
        read-only

#если есть VESA framebuffer - используйте:
        vga=0x315
#
# "родное" ядро
#
image=/boot/vmlinuz-2.4.8-17mdk
        label=linux
        root=/dev/hda1
        read-only
#
# Windows ....
#
other=/dev/hda2
        label=dos
        table=/dev/hda

Примерно так должен выглядеть файл /etc/lilo.conf... но не забудьте адаптировать его к конфигурации своей системы.

Теперь, когда файл был изменен соответствующим образом, вы должны внести изменения в загрузочный сектор (этого не надо было делать в случае с grub):

$ lilo
Added foo *
Added linux
Added dos
$

Таким образом, вы можете скомпилировать сколько угодно ядер, и добавлять столько вариантов загрузки, сколько необходимо. Все, что теперь нужно - это перезагрузить машину и опробовать новое ядро.



[34] 8 бит поддерживает 28 цветов, то есть. 256; 16 бит поддерживает 216 цветов, то есть. 64k, или. 65536; 24 бита как и 32 кодируется при помощи 24 бит, то есть 224 возможных цветов, другими словами 16M, или немного больше чем 16 миллионов цветов.