10.4. Использование GRUB для настройки процесса загрузки

[Примечание]

Примечание

Если ваша система поддерживает UEFI и вы хотите загрузить LFS с помощью UEFI, вам следует пропустить эту страницу и сконфигурировать GRUB с поддержкой UEFI используя инструкции, приведенные на странице BLFS.

10.4.1. Введение

[Предупреждение]

Предупреждение

При неправильной настройке GRUB ваша система перестанет загружаться без вспомогательно загрузочного CD-ROM или USB-накопителя. Для загрузки системы LFS этот раздел необязателен. Вы можете просто использовать существующий загрузчик, например Grub-Legacy, GRUB2 или LILO.

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

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

10.4.2. Соглашения об именовании GRUB

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

10.4.3. Настройка

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

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

Использование текущего раздела lfs также будет работать, но его настройка для нескольких систем сложнее.

Используя информацию выше, определите соответствующие точки монтирования для корневого раздела (или загрузочного раздела, если используется отдельный). В следующем примере предполагается, что корневым (или отдельным загрузочным) разделом является sda2.

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

[Предупреждение]

Предупреждение

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

grub-install /dev/sda
[Примечание]

Примечание

Если система была загружена с использованием UEFI, grub-install попытается установить файлы для x86_64-efi, но эти файлы не были установлены в Глава 8. Если это так, добавьте --target i386-pc к приведенной выше команде.

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

Создайте файл /boot/grub/grub.cfg:

cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd0,2)

menuentry "GNU/Linux, Linux 5.19.2-lfs-11.2-systemd" {
        linux   /boot/vmlinuz-5.19.2-lfs-11.2-systemd root=/dev/sda2 ro
}
EOF
[Примечание]

Примечание

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

[Примечание]

Примечание

Наименование раздела для GRUB может измениться, если вы добавили или удалили некоторые диски (это могут быть как съемные диски, так и USB-устройства). Изменение может привести к сбою загрузки, потому что grub.cfg ссылается на «старое» наименование. Если вы хотите избежать такой проблемы, вы можете использовать UUID раздела и файловой системы вместо вместо имени. Запустите команду lsblk -o UUID,PARTUUID,PATH,MOUNTPOINT, чтобы посмотреть UUID ваших файловых систем (в столбце UUID) и разделов (в столбце PARTUUID). Затем замените set root=(hdx,y) на search --set=root --fs-uuid <UUID файловой системы, в которой установлено ядро>, и замените root=/dev/sda2 на root=PARTUUID=<UUID раздела, в котором собрана LFS>.

Обратите внимание, что UUID раздела и UUID файловой системы на этом разделе это совершенно разные вещи. Некоторые онлайн-ресурсы могут предлагать вам использовать root=UUID=<UUID файловой системы> вместо root=PARTUUID=<UUID раздела>, но для этого потребуется работа с initramfs, которая выходит за рамки LFS.

Имя узла устройства для раздела в /dev также может измениться (хотя маловероятно, что изменится обозначение GRUB). Вы можете заменить пути к узлам устройств, таким как /dev/sda1 на PARTUUID=<UUID раздела>, в /etc/fstab, чтобы избежать потенциального сбоя загрузки в случае, если имя узла устройства изменилось.

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

[Внимание]

Внимание

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