lfs-ru/chapter10/grub.xml
2024-02-01 22:12:23 +05:00

197 lines
15 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>
<title>Использование GRUB для настройки процесса загрузки</title>
<note>
<para>
Если ваша система поддерживает UEFI и вы хотите загрузить LFS с помощью UEFI, вам следует
пропустить инструкции на этой странице, но все равно изучить синтаксис
<filename>grub.cfg</filename> и способ указания раздела в файле с этой страницы, а также
настроить GRUB с поддержкой UEFI используя инструкции, приведенные на
<ulink url="&blfs-book;postlfs/grub-setup.html">странице BLFS</ulink>.
</para>
</note>
<sect2>
<title>Введение</title>
<warning><para>При неправильной настройке GRUB ваша система перестанет загружаться без
вспомогательно загрузочного CD-ROM или USB-накопителя. Для загрузки системы LFS этот раздел
необязателен. Вы можете просто использовать существующий загрузчик, например Grub-Legacy,
GRUB2 или LILO.</para></warning>
<para>Убедитесь, что аварийный загрузочный диск готов к <quote>спасению</quote> компьютера,
если он перестанет загружаться. Если у вас еще нет загрузочного диска, вы можете создать его.
Для этого необходимо перейти в раздел BLFS и установить программу <userinput>xorriso</userinput>
из пакета <ulink url="&blfs-book;multimedia/libisoburn.html">libisoburn</ulink>.</para>
<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>
<title>Соглашения об именовании GRUB</title>
<para>GRUB использует собственную структуру именования дисков и разделов в
виде <emphasis>(hdn,m)</emphasis>, где <emphasis>n</emphasis>
— номер жесткого диска, а <emphasis>m</emphasis> — номер раздела. Номера жестких дисков
начинаются с нуля, а номера разделов начинаются с единицы для обычных разделов (с пяти
для расширенных разделов). Обратите внимание, что это отличается от более ранних версий,
где оба номера начинались с нуля. Например, раздел <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>
</sect2>
<sect2>
<title>Настройка</title>
<para>GRUB записывает данные на первый физический сектор жесткого диска. Эта область не
является частью какой-либо файловой системы. Программа в загрузочном разделе имеет доступ
к модулям GRUB расположенным по умолчанию в /boot/grub/.</para>
<para>Расположение загрузочного раздела - это выбор пользователя, который влияет на конфигурацию.
Одна из рекомендаций заключается в том, чтобы иметь отдельный небольшой раздел (примерно 200 МБ)
исключительно для загрузочной информации. В этом случае каждая сборка, будь то LFS или другой дистрибутив,
может обращаться к тем же загрузочным файлам, а доступ может быть получен из любой загруженной
системы. Если вы решите так сделать, вам необходимо примонтировать отдельный раздел, переместить
все файлы из текущего каталога <filename class="directory">/boot</filename> (например, ядро Linux,
которое вы создали на предыдущем этапе) в новый раздел. Затем нужно отмонтировать раздел и
примонтировать его заново в каталог <filename class="directory">/boot</filename>. Когда вы это
сделаете, обязательно обновите данные в файле <filename>/etc/fstab</filename>.</para>
<para>Оставить <filename class="directory">/boot</filename> на текущем разделе LFS это тоже рабочее
решение, но его настройка для загрузки нескольких систем сложнее.</para>
<para>Используя информацию выше, определите соответствующие точки монтирования для
корневого раздела (или загрузочного раздела, если используется отдельный). В следующем
примере предполагается, что корневым (или отдельным загрузочным) разделом является <filename
class="partition">sda2</filename>.</para>
<para>Установите файлы GRUB в каталог <filename
class="directory">/boot/grub</filename> и настройте загрузочный сектор:</para>
<warning>
<para>Следующая команда перезапишет текущий загрузчик. Не выполняйте эту команду,
если это не нужно, например, если вы используете сторонний менеджер загрузки для
управления главной загрузочной записью (MBR).</para>
</warning>
<screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>
<note>
<para>Если система была загружена с использованием UEFI,
<command>grub-install</command> попытается установить файлы для
<emphasis>x86_64-efi</emphasis>, но эти файлы не были установлены в
<xref linkend="chapter-building-system"/>. Если это так, добавьте
<option>--target i386-pc</option> к приведенной выше команде.</para>
</note>
</sect2>
<sect2 id="grub-cfg">
<title>Создание файла конфигурации GRUB</title>
<para>Создайте файл <filename>/boot/grub/grub.cfg</filename>:</para>
<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
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>
<note><para>С точки зрения <application>GRUB</application>,
файлы ядра относятся к используемому разделу. Если вы используется отдельный раздел
/boot, удалите /boot из приведенной выше строки <emphasis>linux</emphasis>. Вам также
потребуется изменить строку <emphasis>set root</emphasis> так, чтобы она указывала на
загрузочный раздел.</para></note>
<note>
<para>Наименование раздела для GRUB может измениться, если вы добавили или удалили
некоторые диски (это могут быть как съемные диски, так и USB-устройства).
Изменение может привести к сбою загрузки, потому что <filename>grub.cfg</filename>
ссылается на <quote>старые</quote> указатели. Чтобы не столкнуться с этой проблемой,
необходимо использовать UUID раздела и файловой системы вместо указателя GRUB для
указания устройства.
Запустите команду <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>,
но для этого требуется initramfs, которая не рассматривается в LFS.</para>
<para>Имя узла устройства для раздела в <filename class='directory'>/dev</filename> также
может измениться (хотя это менее вероятно, чем изменение указателя GRUB). Вы можете заменить
пути к узлам устройств, таким как <literal>/dev/sda1</literal> на
<literal>PARTUUID=<replaceable>&lt;UUID раздела&gt;</replaceable></literal>,
в <filename>/etc/fstab</filename>, чтобы избежать потенциального сбоя загрузки в случае,
если имя узла устройства изменилось.</para>
</note>
<para>GRUB - чрезвычайно мощная программа, предоставляющая огромное количество вариантов
загрузки с самых разных устройств, работающих систем и типов разделов. Существует также множество
опций настройки, таких как графические экраны-заставки, воспроизведение звука, ввод с помощью мыши
и т. д., детали этих опций выходят за рамки этой инструкции.</para>
<caution><para>Существует команда <application>grub-mkconfig</application>, которая может
автоматически записывать файл конфигурации. Она использует набор скриптов из каталога /etc/grub.d/
и уничтожит любые сделанные вами настройки. Эти скрипты предназначены в первую очередь для обычных
дистрибутивов и не рекомендуются для LFS. Если вы устанавливаете коммерческий дистрибутив Linux,
есть вероятность, что эта программа будет запущена. Обязательно создайте резервную копию файла
grub.cfg.</para></caution>
</sect2>
</sect1>