mirror of
https://github.com/Poltern/lfs-ru.git
synced 2024-10-19 12:10:32 +03:00
197 lines
15 KiB
XML
197 lines
15 KiB
XML
<?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 > /boot/grub/grub.cfg << "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><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>,
|
||
но для этого требуется initramfs, которая не рассматривается в LFS.</para>
|
||
|
||
<para>Имя узла устройства для раздела в <filename class='directory'>/dev</filename> также
|
||
может измениться (хотя это менее вероятно, чем изменение указателя GRUB). Вы можете заменить
|
||
пути к узлам устройств, таким как <literal>/dev/sda1</literal> на
|
||
<literal>PARTUUID=<replaceable><UUID раздела></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>
|