Инструменты пользователя

Инструменты сайта


software:linux_server:lfs:chapter10.4

Это старая версия документа!


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

Примечание
Если ваша система поддерживает UEFI и вы хотите загрузить LFS с помощью UEFI, вам следует пропустить инструкции на этой странице, но все равно изучить синтаксис grub.cfg и метод указания раздела в файле с этой страницы, а также настроить 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 — номер раздела. Номера жестких дисков начинаются с нуля, но номера разделов начинаются с единицы для обычных разделов (с пяти для расширенных разделов). Обратите внимание, что это отличается от более ранних версий, где оба номера начинались с нуля. Например, раздел для GRUB sda1— это (hd0,1) sdb3 , а для GRUB — (hd1,3). В отличие от Linux, GRUB не считает приводы CD-ROM жесткими дисками. Например, если использовать CD на hdb и второй жесткий диск на hdc, этот второй жесткий диск все равно будет (hd1).

10.4.3 Настройка конфигурации

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

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

Сохранение /boot текущего раздела 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 part_gpt
insmod ext2
set root=(hd0,2)
set gfxpayload=1024x768x32

menuentry "GNU/Linux, Linux 6.13.2-lfs-12.3-systemd-rc1" {
        linux   /boot/vmlinuz-6.13.2-lfs-12.3-systemd-rc1 root=/dev/sda2 ro
}
EOF

Команды insmod загружают модули GRUB с именами part_gpt и ext2. Несмотря на название, ext2 на самом деле поддерживает файловые системы , и ext2 Команда ext3 grub -install встроила некоторые модули в основной образ GRUB (установленный в MBR или раздел GRUB BIOS) для доступа к другим модулям (в ) без проблемы «курица или яйцо», поэтому в типичной конфигурации эти два модуля уже встроены, и эти две команды insmod ничего не сделают. Но они в любом случае не навредят и могут понадобиться в некоторых редких конфигурациях ext4/boot/grub/i386-pc

Команда set gfxpayload=1024x768x32 устанавливает разрешение и глубину цвета буфера кадра VESA, которые будут переданы ядру. Драйверу SimpleDRM ядра необходимо использовать буфер кадра VESA. Вы можете использовать другое разрешение или значение глубины цвета, которое лучше подходит для вашего монитора.

Примечание
С точки зрения GRUB файлы ядра относятся к используемому разделу. Если вы использовали отдельный раздел /boot, удалите /boot из приведенной выше строки linux . Вам также нужно будет изменить строку set root, чтобы она указывала на загрузочный раздел.
Примечание
Указатель GRUB для раздела может измениться, если вы добавили или удалили некоторые диски (включая съемные диски, такие как USB-устройства). Изменение может привести к сбою загрузки, поскольку grub.cfg ссылается на некоторые « старые » указатели. Если вы хотите избежать такой проблемы, вы можете использовать UUID раздела и UUID файловой системы вместо указателя GRUB для указания устройства. Запустите lsblk -o UUID,PARTUUID,PATH,MOUNTPOINT, чтобы отобразить UUID ваших файловых систем (в UUIDстолбце) и разделов (в столбце PARTUUID). Затем замените set root=(hdx,y)на , и замените на . search –set=root –fs-uuid <UUID of the filesystem where the kernel is installed>root=/dev/sda2root=PARTUUID=<UUID of the partition where LFS is built>

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

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

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

Осторожность
Есть команда grub-mkconfig, которая может автоматически записывать файл конфигурации. Она использует набор скриптов в /etc/grub.d/ и уничтожит все сделанные вами настройки. Эти скрипты предназначены в первую очередь для дистрибутивов без исходного кода и не рекомендуются для LFS. Если вы устанавливаете коммерческий дистрибутив Linux, есть большая вероятность, что эта программа будет запущена. Обязательно сделайте резервную копию файла grub.cfg.
Только авторизованные участники могут оставлять комментарии.
software/linux_server/lfs/chapter10.4.1740248795.txt.gz · Последнее изменение: vladpolskiy