lfs-ru/chapter10/grub.xml
2023-06-11 03:06:41 +05:00

187 lines
14 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, вам следует
пропустить эту страницу и сконфигурировать 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>Использование текущего раздела 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>
<!-- This does not seem to be true any more
<note><para><application>grub-install</application> is a script and calls another
program, grub-probe, that may fail with a message "cannot stat `/dev/root'".
If so, create a temporary symbolic link from your root partition to /dev/root:</para>
<screen role="nodump"><userinput>ln -sv /dev/sda2 /dev/root</userinput></screen>
<para>The symbolic link will only be present until the system is rebooted.
The link is only needed for the installation procedure.
</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 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>
<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 раздела и файловой системы вместо вместо имени.
Запустите команду <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>