lfs-ru/chapter10/grub.xml

197 lines
15 KiB
XML
Raw Permalink Normal View History

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, вам следует
пропустить инструкции на этой странице, но все равно изучить синтаксис
<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 &gt; /boot/grub/grub.cfg &lt;&lt; "EOF"
<literal># Begin /boot/grub/grub.cfg
set default=0
set timeout=5
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>
<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>&lt;UUID файловой системы, в которой
установлено ядро&gt;</replaceable></literal>, и замените
<literal>root=/dev/sda2</literal> на
<literal>root=PARTUUID=<replaceable>&lt;UUID раздела, в котором собрана LFS&gt;</replaceable></literal>.</para>
<para>Обратите внимание, что UUID раздела и UUID файловой системы на этом разделе это
совершенно разные вещи. Некоторые онлайн-ресурсы могут предлагать вам использовать
<literal>root=UUID=<replaceable>&lt;UUID файловой системы&gt;</replaceable></literal>
вместо <literal>root=PARTUUID=<replaceable>&lt;UUID раздела&gt;</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>&lt;UUID раздела&gt;</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>