Вход в систему
РФЭИ/ИТ
GRUB Досистемная загрузка Linux Досистемная загрузка Этапы загрузки системы IT1100: Операционные системы UNIX
LILO Действия ядра Linux в процессе начальной загрузки

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 загрузить какое-нибудь другое, не предписанное конфигурацией, ядро, посмотреть содержимое каталогов файловой системы, распознаваемой полуторным загрузчиком, и даже содержимое этих файлов, невзирая ни на какие права доступа: система-то еще не загружена. Мало того, можно по-своему перенастроить загрузчик и записать результаты настройки. Так и не успев насладиться неожиданной свободой, Иван в один прекрасный день обнаружил, что выход в командную строку защищен паролем.

LILO Действия ядра Linux в процессе начальной загрузки
2012 © ООО «Территория Образования»
Сделано с помощью Circumflex