Если ваша система поддерживает UEFI и вы хотите загрузить LFS с помощью UEFI, вам следует пропустить эту страницу и сконфигурировать GRUB с поддержкой UEFI используя инструкции, приведенные на странице BLFS.
При неправильной настройке 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
GRUB использует собственную структуру именования дисков и разделов
в виде (hdn,m), где
n — номер жесткого диска, а
m — номер раздела. Номер
жесткого диска начинается с нуля, а номер раздела начинается с
единицы для обычных разделов и с пяти для расширенных разделов.
Обратите внимание, что это отличается от более ранних версий, где
оба номера начинались с нуля. Например, раздел sda1
это (hd0,1) в GRUB, а sdb3
(hd1,3). В отличие от Linux, GRUB не
считает приводы CD-ROM жесткими дисками. Например, если
используемый CD-привода определяется как hdb
, а второй жесткий диск как hdc
, этот второй жесткий диск все равно будет
(hd1).
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
к приведенной выше команде.
Создайте файл /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=
, но для этого потребуется работа с
initramfs, которая выходит за рамки LFS.
<UUID
раздела>
Имя узла устройства для раздела в /dev
также может измениться (хотя маловероятно,
что изменится обозначение GRUB). Вы можете заменить пути к узлам
устройств, таким как /dev/sda1
на
PARTUUID=
, в
<UUID раздела>
/etc/fstab
, чтобы избежать
потенциального сбоя загрузки в случае, если имя узла устройства
изменилось.
GRUB - чрезвычайно мощная программа, предоставляющая огромное количество вариантов загрузки с самых разных устройств, работающих систем и типов разделов. Существует также множество опций настройки, таких как графические экраны-заставки, воспроизведение звука, ввод с помощью мыши и т. д., детали этих опций выходят за рамки этой инструкции.
Существует команда grub-mkconfig, которая может автоматически записывать файл конфигурации. Она использует набор скриптов из каталога /etc/grub.d/ и уничтожит любые сделанные вами настройки. Эти скрипты предназначены в первую очередь для обычных дистрибутивов и не рекомендуются для LFS. Если вы устанавливаете коммерческий дистрибутив Linux, есть вероятность, что эта программа будет запущена. Обязательно создайте резервную копию файла grub.cfg.