
GRUB
Подсистема загрузки GRUB устроена более сложно. Она также имеет первичный загрузчик, который записывается в первый сектор диска или раздела, и вторичный загрузчик, располагающийся в файловой системе. Однако карта размещения в GRUB обычно используется только для так называемого «полуторного» загрузчика («stage 1.5») - по сути дела, драйвера одной определенной файловой системы. Процедура загрузки при этом выглядит так. Первичный загрузчик загружает полуторный по записанной в него карте размещения. Эта карта может быть очень простой, так как обычно полуторный загрузчик размещается непосредственно после первичного в нескольких секторах подряд, или в ином специально отведенном месте вне файловой системы. Полуторный загрузчик умеет распознавать одну файловую систему и находить там вторичный уже по имени (обычно /boot/grub/stage2
). Наконец, вторичный загрузчик, пользуясь возможностями полуторного, читает из файла /boot/grub/menu.lst
меню, в котором пользователь может выбирать варианты загрузки так же, как и в LILO. Таким образом, обновление и перенастройка установленного GRUB не требует пересчета карт размещения и изменения чего-то, кроме файлов в каталоге /boot/grub
.
По требованию Ивана Гончаров установил на двухсистемную машину GRUB. При этом файл /boot/grub/menu.lst
получился таким:
[root@localhost root]# cat /boot/grub/menu.lst
default 0
timeout 50
title linux-up
kernel (hd0,4)/boot/vmlinuz-up root=/dev/hda5
initrd (hd0,4)/boot/initrd-up.img
title failsafe
kernel (hd0,4)/boot/vmlinuz-up root=/dev/hda5 failsafe noapic nolapic
acpi=off
initrd (hd0,4)/boot/initrd-up.img
title floppy
root (fd0)
chainloader +1
title dos
root (hd0,0)
chainloader +1
Пример 10.3. Настройка GRUB на двухсистемной машине
Разница между lilo.conf
только в синтаксисе, да еще в том, что жесткие диски и разделы на них GRUB именует по-своему, в виде (hdномер_диска
, номер_раздела
), причем нумеровать начинает с нуля. Метки (title
) тоже нумеруются с нуля, так что запись default 0
означает, что по истечении тайм-аута будет загружена самая первая конфигурация (по имени linux-up
).
Изучая руководство по GRUB, Иван обнаружил гораздо более важное отличие от LILO. Оказывается, в GRUB не только параметры, но и сами файлы (ядро, стартовый виртуальный диск и т.п.) распознаются и загружаются в процессе работы. Вместо пунктов меню можно выбрать режим командной строки, подозрительно похожий на bash
, в котором можно заставить GRUB загрузить какое-нибудь другое, не предписанное конфигурацией, ядро, посмотреть содержимое каталогов файловой системы, распознаваемой полуторным загрузчиком, и даже содержимое этих файлов, невзирая ни на какие права доступа: система-то еще не загружена. Мало того, можно по-своему перенастроить загрузчик и записать результаты настройки. Так и не успев насладиться неожиданной свободой, Иван в один прекрасный день обнаружил, что выход в командную строку защищен паролем.