8.4. Настройка загрузчика GRUB

8.4.1. Вступление

[Внимание]

Внимание

Неправильная настройка GRUB может привести к тому, что Ваша система перестанет загружаться, и Вам понадобится дополнительное загрузочное устройство (например, CD-ROM), для того, чтобы это исправить. Этот раздел не является обязательным для настройки Вашей LFS-системы. Вы можете просто обновить конфигурацию уже имеющегося загрузчика, такого, как GRUB-legacy, GRUB2 или LILO.

Убедитесь, что спасательный загрузочный диск находится под рукой и готов прийти на помощь в случае, если Ваш компьютер перестанет загружаться. Если у Вас еще нет такого диска, самое время создать его. Для приведенной ниже последовательности команд Вам потребуется забежать немного вперед и установить пакет libisoburn из BLFS.

cd /tmp &&
grub-mkrescue --output=grub-img.iso &&
xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso

8.4.2. Именование устройств в GRUB

GRUB использует свою собственную схему именования дисков и разделов в виде (hdn,m), где n является номером жесткого диска, а m – номером раздела. Нумерация жестких дисков начинается с нуля, но разделы нумеруются начиная с единицы для физических и с пяти – для логических. Например, раздел sda1 в термнах GRUB будет выглядеть как (hd0,1), а sdb3(hd1,3). В противоположность Linux, GRUB не мешает в кучу CD-ROM и жесткие диски. Например, если Ваш CD-ROM – hdb, а второй жесткий диск hdc, этот жесткий диск в GRUB все равно будет виден как (hd1).

8.4.3. Установка GRUB

Для своей работы GRUB использует первую физическую дорожку жесткого диска, записывая туда свой код и данные. Эта область не является частью какой-либо файловой системы. Код, помещенный в нее (его еще называют первичным загрузчиком), обращается к файлам GRUB, находящимся на загрузочном разделе. По умолчанию они расположены в /boot/grub/.

Расположение загрузочного раздела - это выбор пользователя, который серьезно затрагивает конфигурацию загрузчика. Мы рекомендуем создать небольшой (около 100 MB) раздел исключительно для загрузчика. При таком варианте LFS и любой другой дистрибутив смогут иметь доступ к загрузочным файлам. Если это показалось Вам хорошей идеей, Вам нужно примонтировать отдельный раздел, переместить на него все файлы из текущего каталога /boot (например, ядро Linux, которое Вы только что собрали в предыдущем разделе), затем отмонтировать раздел и примотировать его снова, уже как /boot. И конечно же, не забудьте обновить /etc/fstab.

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

Применяя вышеуказанные сведения, определите имя корневого раздела (или загрузочного, если Вы решили выделить его). Ниже в примере мы полагаем, что имя корневого (или загрузочного) раздела – sda2.

Установим файлы GRUB в /boot/grub и запишем загрузочную дорожку:

[Внимание]

Внимание

Следующая команда перезапишет текущий загрузчик. Если это неприемлимо для Вас, например, если Вы используете сторонний менеджер загрузки, который расположен в MBR (главная загрузочная запись, Master Boot Record), не выполняйте эту команду.

grub-install /dev/sda

8.4.4. Создание файла конфигурации

Сгенерируем /boot/grub/grub.cfg:

cat > /boot/grub/grub.cfg << "EOF"
# Начало /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd0,2)

menuentry "GNU/Linux, Linux 3.8.1-lfs-7.3" {
        linux   /boot/vmlinuz-3.8.1-lfs-7.3 root=/dev/sda2 ro
}
# Конец /boot/grub/grub.cfg
EOF
[Замечание]

Замечание

С точки зрения GRUB, файлы ядра расположены относительно используемого раздела. Если Вы создали для /boot отдельный раздел, уберите /boot из строки linux. Также скорректируйте строку set root, чтобы она указывала на загрузочный раздел.

GRUB – очень мощный загрузчик, и он предоставляет просто невообразимое количество возможностей. Он умеет загружаться с огромного числа устройств, поддерживает все мыслимые операционные системы и типы разделов. GRUB также очень гибок в плане настройки разных красивых и удобных вещей, вроде красивых заставок, воспроизведения мелодий и поддержки мыши. Подробное описание всех возможностей GRUB лежит за пределами этого краткого введения.

[Предостережение]

Предостережение

Существует утилита, grub-mkconfig, которая может сгенерировать конфигурационный файл автоматически. Она использует набор скриптов из /etc/grub.d/, и ее запуск приведет к потере всех изменений, сделанных Вами вручную. Эта утилита используется в основном бинарными дистрибутивами и не рекомендуется для LFS. Если Вы планируете установить какой-либо коммерческий дистрибутив, высока вероятность, что эта программа будет запущена. На всякий случай сохраните копию вашей версии файла grub.cfg.