summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter10/grub.html
diff options
context:
space:
mode:
authorSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
committerSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
commit2203e654b389586650d553251b04544a34f189bf (patch)
tree0125b69fc70a2506c53158ba2020993a5b8985b7 /lfs-12.2-sysv/chapter10/grub.html
parent200d528e55ca954d37769f4d143f10c9519b00e7 (diff)
downloadsn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz
sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip
LFS 12.2
Diffstat (limited to 'lfs-12.2-sysv/chapter10/grub.html')
-rw-r--r--lfs-12.2-sysv/chapter10/grub.html354
1 files changed, 354 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter10/grub.html b/lfs-12.2-sysv/chapter10/grub.html
new file mode 100644
index 0000000..c9c3252
--- /dev/null
+++ b/lfs-12.2-sysv/chapter10/grub.html
@@ -0,0 +1,354 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ 10.4. Использование GRUB для настройки процесса загрузки
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 10. Делаем систему LFS загрузочной
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="kernel.html" title="Linux-6.10.5">Пред.</a>
+ <p>
+ Linux-6.10.5
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../chapter11/chapter11.html" title=
+ "Заключение">След.</a>
+ <p>
+ Заключение
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter10.html" title=
+ "Глава 10. Делаем систему LFS загрузочной">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-bootable-grub" name="ch-bootable-grub"></a>10.4.
+ Использование GRUB для настройки процесса загрузки
+ </h1>
+ <div class="wrap" lang="ru" xml:lang="ru">
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Если ваша система поддерживает UEFI и вы хотите загрузить LFS с
+ помощью UEFI, вам следует пропустить инструкции на этой странице,
+ но все равно изучить синтаксис <code class=
+ "filename">grub.cfg</code> и способ указания раздела в файле с этой
+ страницы, а также настроить GRUB с поддержкой UEFI используя
+ инструкции, приведенные на <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/grub-setup.html">
+ странице BLFS</a>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 10.4.1. Введение
+ </h2>
+ <div class="admon warning">
+ <img alt="[Предупреждение]" src="../images/warning.png" />
+ <h3>
+ Предупреждение
+ </h3>
+ <p>
+ При неправильной настройке GRUB ваша система перестанет
+ загружаться без вспомогательно загрузочного CD-ROM или
+ USB-накопителя. Для загрузки системы LFS этот раздел
+ необязателен. Вы можете просто использовать существующий
+ загрузчик, например Grub-Legacy, GRUB2 или LILO.
+ </p>
+ </div>
+ <p>
+ Убедитесь, что аварийный загрузочный диск готов к <span class=
+ "quote">«<span class="quote">спасению</span>»</span> компьютера,
+ если он перестанет загружаться. Если у вас еще нет загрузочного
+ диска, вы можете создать его. Для этого необходимо перейти в раздел
+ BLFS и установить программу <strong class=
+ "userinput"><code>xorriso</code></strong> из пакета <a class=
+ "ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.2/multimedia/libisoburn.html">
+ libisoburn</a>.
+ </p>
+ <pre class="userinput"><kbd class="command">cd /tmp
+grub-mkrescue --output=grub-img.iso
+xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</kbd></pre>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 10.4.2. Соглашения об именовании GRUB
+ </h2>
+ <p>
+ GRUB использует собственную структуру именования дисков и разделов
+ в виде <span class="emphasis"><em>(hdn,m)</em></span>, где
+ <span class="emphasis"><em>n</em></span> — номер жесткого диска, а
+ <span class="emphasis"><em>m</em></span> — номер раздела. Номера
+ жестких дисков начинаются с нуля, а номера разделов начинаются с
+ единицы для обычных разделов (с пяти для расширенных разделов).
+ Обратите внимание, что это отличается от более ранних версий, где
+ оба номера начинались с нуля. Например, раздел <code class=
+ "filename">sda1</code> это <span class=
+ "emphasis"><em>(hd0,1)</em></span> в GRUB, а <code class=
+ "filename">sdb3</code> <span class=
+ "emphasis"><em>(hd1,3)</em></span>. В отличие от Linux, GRUB не
+ считает приводы CD-ROM жесткими дисками. Например, если
+ используемый CD-привода определяется как <code class=
+ "filename">hdb</code>, а второй жесткий диск как <code class=
+ "filename">hdc</code>, этот второй жесткий диск все равно будет
+ <span class="emphasis"><em>(hd1)</em></span>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 10.4.3. Настройка
+ </h2>
+ <p>
+ GRUB записывает данные на первый физический сектор жесткого диска.
+ Эта область не является частью какой-либо файловой системы.
+ Программа в загрузочном разделе имеет доступ к модулям GRUB
+ расположенным по умолчанию в /boot/grub/.
+ </p>
+ <p>
+ Расположение загрузочного раздела - это выбор пользователя, который
+ влияет на конфигурацию. Одна из рекомендаций заключается в том,
+ чтобы иметь отдельный небольшой раздел (примерно 200 МБ)
+ исключительно для загрузочной информации. В этом случае каждая
+ сборка, будь то LFS или другой дистрибутив, может обращаться к тем
+ же загрузочным файлам, а доступ может быть получен из любой
+ загруженной системы. Если вы решите так сделать, вам необходимо
+ примонтировать отдельный раздел, переместить все файлы из текущего
+ каталога <code class="filename">/boot</code> (например, ядро Linux,
+ которое вы создали на предыдущем этапе) в новый раздел. Затем нужно
+ отмонтировать раздел и примонтировать его заново в каталог
+ <code class="filename">/boot</code>. Когда вы это сделаете,
+ обязательно обновите данные в файле <code class=
+ "filename">/etc/fstab</code>.
+ </p>
+ <p>
+ Оставить <code class="filename">/boot</code> на текущем разделе LFS
+ это тоже рабочее решение, но его настройка для загрузки нескольких
+ систем сложнее.
+ </p>
+ <p>
+ Используя информацию выше, определите соответствующие точки
+ монтирования для корневого раздела (или загрузочного раздела, если
+ используется отдельный). В следующем примере предполагается, что
+ корневым (или отдельным загрузочным) разделом является <code class=
+ "filename">sda2</code>.
+ </p>
+ <p>
+ Установите файлы GRUB в каталог <code class=
+ "filename">/boot/grub</code> и настройте загрузочный сектор:
+ </p>
+ <div class="admon warning">
+ <img alt="[Предупреждение]" src="../images/warning.png" />
+ <h3>
+ Предупреждение
+ </h3>
+ <p>
+ Следующая команда перезапишет текущий загрузчик. Не выполняйте
+ эту команду, если это не нужно, например, если вы используете
+ сторонний менеджер загрузки для управления главной загрузочной
+ записью (MBR).
+ </p>
+ </div>
+ <pre class="userinput"><kbd class=
+ "command">grub-install /dev/sda</kbd></pre>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Если система была загружена с использованием UEFI, <span class=
+ "command"><strong>grub-install</strong></span> попытается
+ установить файлы для <span class=
+ "emphasis"><em>x86_64-efi</em></span>, но эти файлы не были
+ установлены в <a class="xref" href="../chapter08/chapter08.html"
+ title=
+ "Глава 8. Установка базового системного программного обеспечения">
+ Глава&nbsp;8</a>. Если это так, добавьте <code class=
+ "option">--target i386-pc</code> к приведенной выше команде.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="grub-cfg" name="grub-cfg"></a>10.4.4. Создание файла
+ конфигурации GRUB
+ </h2>
+ <p>
+ Создайте файл <code class="filename">/boot/grub/grub.cfg</code>:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /boot/grub/grub.cfg &lt;&lt; "EOF"
+<code class="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 6.10.5-lfs-12.2" {
+ linux /boot/vmlinuz-6.10.5-lfs-12.2 root=/dev/sda2 ro
+}</code>
+EOF</kbd></pre>
+ <p>
+ Команды <span class="command"><strong>insmod</strong></span>
+ загружают модули <span class="application">GRUB</span> с именами
+ <code class="filename">part_gpt</code> и <code class=
+ "filename">ext2</code>. Несмотря на название, <code class=
+ "filename">ext2</code> фактически поддерживаются файловые системы
+ <code class="systemitem">ext2</code>, <code class=
+ "systemitem">ext3</code> и <code class="systemitem">ext4</code>.
+ Команда <span class="command"><strong>grub-install</strong></span>
+ встроила некоторые модули в основной образ <span class=
+ "application">GRUB</span> (установленный в MBR или раздел GRUB
+ BIOS) для доступа к другим модулям (в <code class=
+ "filename">/boot/grub/i386-pc</code>), поэтому в стандартной
+ конфигурации эти два модуля уже встроены и эти две команды
+ <span class="command"><strong>insmod</strong></span> ничего не
+ будут делать. В любом случае, от них нет никакого вреда, но они
+ могут понадобиться в некоторых редких конфигурациях.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ С точки зрения <span class="application">GRUB</span>, файлы ядра
+ относятся к используемому разделу. Если вы используется отдельный
+ раздел /boot, удалите /boot из приведенной выше строки
+ <span class="emphasis"><em>linux</em></span>. Вам также
+ потребуется изменить строку <span class="emphasis"><em>set
+ root</em></span> так, чтобы она указывала на загрузочный раздел.
+ </p>
+ </div>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Наименование раздела для GRUB может измениться, если вы добавили
+ или удалили некоторые диски (это могут быть как съемные диски,
+ так и USB-устройства). Изменение может привести к сбою загрузки,
+ потому что <code class="filename">grub.cfg</code> ссылается на
+ <span class="quote">«<span class="quote">старые</span>»</span>
+ указатели. Чтобы не столкнуться с этой проблемой, необходимо
+ использовать UUID раздела и файловой системы вместо указателя
+ GRUB для указания устройства. Запустите команду <span class=
+ "command"><strong>lsblk -o
+ UUID,PARTUUID,PATH,MOUNTPOINT</strong></span>, чтобы посмотреть
+ UUID ваших файловых систем (в столбце <code class=
+ "literal">UUID</code>) и разделов (в столбце <code class=
+ "literal">PARTUUID</code>). Затем замените <code class=
+ "literal">set root=(hdx,y)</code> на <code class="literal">search
+ --set=root --fs-uuid <em class="replaceable"><code>&lt;UUID
+ файловой системы, в которой установлено
+ ядро&gt;</code></em></code>, и замените <code class=
+ "literal">root=/dev/sda2</code> на <code class=
+ "literal">root=PARTUUID=<em class="replaceable"><code>&lt;UUID
+ раздела, в котором собрана LFS&gt;</code></em></code>.
+ </p>
+ <p>
+ Обратите внимание, что UUID раздела и UUID файловой системы на
+ этом разделе это совершенно разные вещи. Некоторые онлайн-ресурсы
+ могут предлагать вам использовать <code class=
+ "literal">root=UUID=<em class="replaceable"><code>&lt;UUID
+ файловой системы&gt;</code></em></code> вместо <code class=
+ "literal">root=PARTUUID=<em class="replaceable"><code>&lt;UUID
+ раздела&gt;</code></em></code>, но для этого требуется initramfs,
+ которая не рассматривается в LFS.
+ </p>
+ <p>
+ Имя узла устройства для раздела в <code class=
+ "filename">/dev</code> также может измениться (хотя это менее
+ вероятно, чем изменение указателя GRUB). Вы можете заменить пути
+ к узлам устройств, таким как <code class=
+ "literal">/dev/sda1</code> на <code class=
+ "literal">PARTUUID=<em class="replaceable"><code>&lt;UUID
+ раздела&gt;</code></em></code>, в <code class=
+ "filename">/etc/fstab</code>, чтобы избежать потенциального сбоя
+ загрузки в случае, если имя узла устройства изменилось.
+ </p>
+ </div>
+ <p>
+ GRUB - чрезвычайно мощная программа, предоставляющая огромное
+ количество вариантов загрузки с самых разных устройств, работающих
+ систем и типов разделов. Существует также множество опций
+ настройки, таких как графические экраны-заставки, воспроизведение
+ звука, ввод с помощью мыши и т. д., детали этих опций выходят за
+ рамки этой инструкции.
+ </p>
+ <div class="admon caution">
+ <img alt="[Внимание]" src="../images/caution.png" />
+ <h3>
+ Внимание
+ </h3>
+ <p>
+ Существует команда <span class=
+ "application">grub-mkconfig</span>, которая может автоматически
+ записывать файл конфигурации. Она использует набор скриптов из
+ каталога /etc/grub.d/ и уничтожит любые сделанные вами настройки.
+ Эти скрипты предназначены в первую очередь для обычных
+ дистрибутивов и не рекомендуются для LFS. Если вы устанавливаете
+ коммерческий дистрибутив Linux, есть вероятность, что эта
+ программа будет запущена. Обязательно создайте резервную копию
+ файла grub.cfg.
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="kernel.html" title="Linux-6.10.5">Пред.</a>
+ <p>
+ Linux-6.10.5
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../chapter11/chapter11.html" title=
+ "Заключение">След.</a>
+ <p>
+ Заключение
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter10.html" title=
+ "Глава 10. Делаем систему LFS загрузочной">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>