diff options
Diffstat (limited to 'lfs-12.1-sysv/chapter10/grub.html')
-rw-r--r-- | lfs-12.1-sysv/chapter10/grub.html | 354 |
1 files changed, 354 insertions, 0 deletions
diff --git a/lfs-12.1-sysv/chapter10/grub.html b/lfs-12.1-sysv/chapter10/grub.html new file mode 100644 index 0000000..e13115c --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </h4> + <h3> + Глава 10. Делаем систему LFS загрузочной + </h3> + <ul> + <li class="prev"> + <a accesskey="p" href="kernel.html" title="Linux-6.7.4">Пред.</a> + <p> + Linux-6.7.4 + </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.1">Начало</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.1/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.1/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. Установка базового системного программного обеспечения"> + Глава 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 > /boot/grub/grub.cfg << "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.7.4-lfs-12.1" { + linux /boot/vmlinuz-6.7.4-lfs-12.1 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><UUID + файловой системы, в которой установлено + ядро></code></em></code>, и замените <code class= + "literal">root=/dev/sda2</code> на <code class= + "literal">root=PARTUUID=<em class="replaceable"><code><UUID + раздела, в котором собрана LFS></code></em></code>. + </p> + <p> + Обратите внимание, что UUID раздела и UUID файловой системы на + этом разделе это совершенно разные вещи. Некоторые онлайн-ресурсы + могут предлагать вам использовать <code class= + "literal">root=UUID=<em class="replaceable"><code><UUID + файловой системы></code></em></code> вместо <code class= + "literal">root=PARTUUID=<em class="replaceable"><code><UUID + раздела></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><UUID + раздела></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.7.4">Пред.</a> + <p> + Linux-6.7.4 + </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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> |