2023-05-23 09:22:34 +03:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
|
|
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
|
|
|
|
%general-entities;
|
|
|
|
|
]>
|
|
|
|
|
|
|
|
|
|
<sect1 id="ch-bootable-grub" role="wrap">
|
|
|
|
|
<?dbhtml filename="grub.html"?>
|
|
|
|
|
|
|
|
|
|
<sect1info condition="script">
|
|
|
|
|
<productname>grub</productname>
|
|
|
|
|
<productnumber>&grub-version;</productnumber>
|
|
|
|
|
<address>&grub-url;</address>
|
|
|
|
|
</sect1info>
|
|
|
|
|
|
2023-06-11 01:06:41 +03:00
|
|
|
|
<title>Использование GRUB для настройки процесса загрузки</title>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
Если ваша система поддерживает UEFI и вы хотите загрузить LFS с помощью UEFI, вам следует
|
2023-08-24 21:55:58 +03:00
|
|
|
|
пропустить инструкции на этой странице, но все равно изучить синтаксис
|
|
|
|
|
<filename>grub.cfg</filename> и способ указания раздела в файле с этой страницы, а также
|
|
|
|
|
настроить GRUB с поддержкой UEFI используя инструкции, приведенные на
|
|
|
|
|
<ulink url="&blfs-book;postlfs/grub-setup.html">странице BLFS</ulink>.
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<sect2>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<title>Введение</title>
|
|
|
|
|
|
|
|
|
|
<warning><para>При неправильной настройке GRUB ваша система перестанет загружаться без
|
|
|
|
|
вспомогательно загрузочного CD-ROM или USB-накопителя. Для загрузки системы LFS этот раздел
|
2023-06-11 01:06:41 +03:00
|
|
|
|
необязателен. Вы можете просто использовать существующий загрузчик, например Grub-Legacy,
|
2023-06-09 00:23:39 +03:00
|
|
|
|
GRUB2 или LILO.</para></warning>
|
|
|
|
|
|
|
|
|
|
<para>Убедитесь, что аварийный загрузочный диск готов к <quote>спасению</quote> компьютера,
|
|
|
|
|
если он перестанет загружаться. Если у вас еще нет загрузочного диска, вы можете создать его.
|
|
|
|
|
Для этого необходимо перейти в раздел BLFS и установить программу <userinput>xorriso</userinput>
|
|
|
|
|
из пакета <ulink url="&blfs-book;multimedia/libisoburn.html">libisoburn</ulink>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen role="nodump"><userinput>cd /tmp
|
|
|
|
|
grub-mkrescue --output=grub-img.iso
|
|
|
|
|
xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen>
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
<sect2>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<title>Соглашения об именовании GRUB</title>
|
|
|
|
|
|
|
|
|
|
<para>GRUB использует собственную структуру именования дисков и разделов в
|
|
|
|
|
виде <emphasis>(hdn,m)</emphasis>, где <emphasis>n</emphasis>
|
2023-08-01 16:19:23 +03:00
|
|
|
|
— номер жесткого диска, а <emphasis>m</emphasis> — номер раздела. Номера жестких дисков
|
|
|
|
|
начинаются с нуля, а номера разделов начинаются с единицы для обычных разделов (с пяти
|
|
|
|
|
для расширенных разделов). Обратите внимание, что это отличается от более ранних версий,
|
2023-06-09 00:23:39 +03:00
|
|
|
|
где оба номера начинались с нуля. Например, раздел <filename class="partition">sda1</filename>
|
|
|
|
|
это <emphasis>(hd0,1)</emphasis> в GRUB, а <filename class="partition">sdb3</filename>
|
|
|
|
|
<emphasis>(hd1,3)</emphasis>. В отличие от Linux, GRUB не считает приводы CD-ROM жесткими
|
|
|
|
|
дисками. Например, если используемый CD-привода определяется как <filename class="partition">hdb</filename>,
|
|
|
|
|
а второй жесткий диск как <filename class="partition">hdc</filename>, этот второй жесткий
|
|
|
|
|
диск все равно будет <emphasis>(hd1)</emphasis>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
<sect2>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<title>Настройка</title>
|
|
|
|
|
|
|
|
|
|
<para>GRUB записывает данные на первый физический сектор жесткого диска. Эта область не
|
|
|
|
|
является частью какой-либо файловой системы. Программа в загрузочном разделе имеет доступ
|
|
|
|
|
к модулям GRUB расположенным по умолчанию в /boot/grub/.</para>
|
|
|
|
|
|
|
|
|
|
<para>Расположение загрузочного раздела - это выбор пользователя, который влияет на конфигурацию.
|
|
|
|
|
Одна из рекомендаций заключается в том, чтобы иметь отдельный небольшой раздел (примерно 200 МБ)
|
|
|
|
|
исключительно для загрузочной информации. В этом случае каждая сборка, будь то LFS или другой дистрибутив,
|
|
|
|
|
может обращаться к тем же загрузочным файлам, а доступ может быть получен из любой загруженной
|
|
|
|
|
системы. Если вы решите так сделать, вам необходимо примонтировать отдельный раздел, переместить
|
|
|
|
|
все файлы из текущего каталога <filename class="directory">/boot</filename> (например, ядро Linux,
|
2023-08-01 16:19:23 +03:00
|
|
|
|
которое вы создали на предыдущем этапе) в новый раздел. Затем нужно отмонтировать раздел и
|
2023-06-09 00:23:39 +03:00
|
|
|
|
примонтировать его заново в каталог <filename class="directory">/boot</filename>. Когда вы это
|
|
|
|
|
сделаете, обязательно обновите данные в файле <filename>/etc/fstab</filename>.</para>
|
|
|
|
|
|
2023-08-01 16:19:23 +03:00
|
|
|
|
<para>Оставить <filename class="directory">/boot</filename> на текущем разделе LFS это тоже рабочее
|
|
|
|
|
решение, но его настройка для загрузки нескольких систем сложнее.</para>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
|
|
|
|
|
<para>Используя информацию выше, определите соответствующие точки монтирования для
|
|
|
|
|
корневого раздела (или загрузочного раздела, если используется отдельный). В следующем
|
|
|
|
|
примере предполагается, что корневым (или отдельным загрузочным) разделом является <filename
|
2023-05-23 09:22:34 +03:00
|
|
|
|
class="partition">sda2</filename>.</para>
|
|
|
|
|
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<para>Установите файлы GRUB в каталог <filename
|
|
|
|
|
class="directory">/boot/grub</filename> и настройте загрузочный сектор:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<warning>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<para>Следующая команда перезапишет текущий загрузчик. Не выполняйте эту команду,
|
|
|
|
|
если это не нужно, например, если вы используете сторонний менеджер загрузки для
|
|
|
|
|
управления главной загрузочной записью (MBR).</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</warning>
|
|
|
|
|
|
|
|
|
|
<screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<note>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<para>Если система была загружена с использованием UEFI,
|
|
|
|
|
<command>grub-install</command> попытается установить файлы для
|
|
|
|
|
<emphasis>x86_64-efi</emphasis>, но эти файлы не были установлены в
|
|
|
|
|
<xref linkend="chapter-building-system"/>. Если это так, добавьте
|
|
|
|
|
<option>--target i386-pc</option> к приведенной выше команде.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
<sect2 id="grub-cfg">
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<title>Создание файла конфигурации GRUB</title>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<para>Создайте файл <filename>/boot/grub/grub.cfg</filename>:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput>cat > /boot/grub/grub.cfg << "EOF"
|
|
|
|
|
<literal># Begin /boot/grub/grub.cfg
|
|
|
|
|
set default=0
|
|
|
|
|
set timeout=5
|
|
|
|
|
|
2023-08-14 15:11:05 +03:00
|
|
|
|
insmod part_gpt
|
2023-05-23 09:22:34 +03:00
|
|
|
|
insmod ext2
|
|
|
|
|
set root=(hd0,2)
|
|
|
|
|
|
|
|
|
|
menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
|
|
|
|
|
linux /boot/vmlinuz-&linux-version;-lfs-&version; root=/dev/sda2 ro
|
|
|
|
|
}</literal>
|
|
|
|
|
EOF</userinput></screen>
|
|
|
|
|
|
2023-08-14 15:11:05 +03:00
|
|
|
|
<para>
|
|
|
|
|
Команды <command>insmod</command> загружают модули <application>GRUB</application>
|
|
|
|
|
с именами <filename>part_gpt</filename> и <filename>ext2</filename>. Несмотря на
|
|
|
|
|
название, <filename>ext2</filename> фактически поддерживаются файловые системы
|
|
|
|
|
<systemitem class='filesystem'>ext2</systemitem>,
|
|
|
|
|
<systemitem class='filesystem'>ext3</systemitem> и
|
|
|
|
|
<systemitem class='filesystem' >ext4</systemitem>. Команда
|
|
|
|
|
<command>grub-install</command> встроила некоторые модули в основной образ
|
|
|
|
|
<application>GRUB</application> (установленный в MBR или раздел GRUB BIOS) для доступа
|
|
|
|
|
к другим модулям (в <filename class= 'directory'>/boot/grub/i386-pc</filename>),
|
|
|
|
|
поэтому в стандартной конфигурации эти два модуля уже встроены и эти две команды
|
|
|
|
|
<command>insmod</command> ничего не будут делать. В любом случае, от них нет никакого
|
|
|
|
|
вреда, но они могут понадобиться в некоторых редких конфигурациях.
|
|
|
|
|
</para>
|
|
|
|
|
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<note><para>С точки зрения <application>GRUB</application>,
|
|
|
|
|
файлы ядра относятся к используемому разделу. Если вы используется отдельный раздел
|
|
|
|
|
/boot, удалите /boot из приведенной выше строки <emphasis>linux</emphasis>. Вам также
|
2023-08-01 16:19:23 +03:00
|
|
|
|
потребуется изменить строку <emphasis>set root</emphasis> так, чтобы она указывала на
|
2023-06-09 00:23:39 +03:00
|
|
|
|
загрузочный раздел.</para></note>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<note>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<para>Наименование раздела для GRUB может измениться, если вы добавили или удалили
|
|
|
|
|
некоторые диски (это могут быть как съемные диски, так и USB-устройства).
|
|
|
|
|
Изменение может привести к сбою загрузки, потому что <filename>grub.cfg</filename>
|
2023-08-01 16:19:23 +03:00
|
|
|
|
ссылается на <quote>старые</quote> указатели. Чтобы не столкнуться с этой проблемой,
|
|
|
|
|
необходимо использовать UUID раздела и файловой системы вместо указателя GRUB для
|
|
|
|
|
указания устройства.
|
2023-06-09 00:23:39 +03:00
|
|
|
|
Запустите команду <command>lsblk -o UUID,PARTUUID,PATH,MOUNTPOINT</command>, чтобы посмотреть
|
|
|
|
|
UUID ваших файловых систем (в столбце <literal>UUID</literal>) и разделов (в столбце
|
|
|
|
|
<literal>PARTUUID</literal>). Затем замените
|
|
|
|
|
<literal>set root=(hdx,y)</literal> на
|
|
|
|
|
<literal>search --set=root --fs-uuid <replaceable><UUID файловой системы, в которой
|
|
|
|
|
установлено ядро></replaceable></literal>, и замените
|
|
|
|
|
<literal>root=/dev/sda2</literal> на
|
|
|
|
|
<literal>root=PARTUUID=<replaceable><UUID раздела, в котором собрана LFS></replaceable></literal>.</para>
|
|
|
|
|
|
|
|
|
|
<para>Обратите внимание, что UUID раздела и UUID файловой системы на этом разделе это
|
|
|
|
|
совершенно разные вещи. Некоторые онлайн-ресурсы могут предлагать вам использовать
|
|
|
|
|
<literal>root=UUID=<replaceable><UUID файловой системы></replaceable></literal>
|
|
|
|
|
вместо <literal>root=PARTUUID=<replaceable><UUID раздела></replaceable></literal>,
|
2023-08-01 16:19:23 +03:00
|
|
|
|
но для этого требуется initramfs, которая не рассматривается в LFS.</para>
|
2023-06-09 00:23:39 +03:00
|
|
|
|
|
|
|
|
|
<para>Имя узла устройства для раздела в <filename class='directory'>/dev</filename> также
|
2023-08-02 23:14:31 +03:00
|
|
|
|
может измениться (хотя это менее вероятно, чем изменение указателя GRUB). Вы можете заменить
|
2023-06-09 00:23:39 +03:00
|
|
|
|
пути к узлам устройств, таким как <literal>/dev/sda1</literal> на
|
|
|
|
|
<literal>PARTUUID=<replaceable><UUID раздела></replaceable></literal>,
|
|
|
|
|
в <filename>/etc/fstab</filename>, чтобы избежать потенциального сбоя загрузки в случае,
|
|
|
|
|
если имя узла устройства изменилось.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</note>
|
|
|
|
|
|
2023-06-09 00:23:39 +03:00
|
|
|
|
<para>GRUB - чрезвычайно мощная программа, предоставляющая огромное количество вариантов
|
|
|
|
|
загрузки с самых разных устройств, работающих систем и типов разделов. Существует также множество
|
|
|
|
|
опций настройки, таких как графические экраны-заставки, воспроизведение звука, ввод с помощью мыши
|
|
|
|
|
и т. д., детали этих опций выходят за рамки этой инструкции.</para>
|
|
|
|
|
|
|
|
|
|
<caution><para>Существует команда <application>grub-mkconfig</application>, которая может
|
|
|
|
|
автоматически записывать файл конфигурации. Она использует набор скриптов из каталога /etc/grub.d/
|
|
|
|
|
и уничтожит любые сделанные вами настройки. Эти скрипты предназначены в первую очередь для обычных
|
|
|
|
|
дистрибутивов и не рекомендуются для LFS. Если вы устанавливаете коммерческий дистрибутив Linux,
|
2023-08-02 23:14:31 +03:00
|
|
|
|
есть вероятность, что эта программа будет запущена. Обязательно создайте резервную копию файла
|
|
|
|
|
grub.cfg.</para></caution>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
</sect1>
|