summaryrefslogtreecommitdiff
path: root/lfs-12.0-sysv/chapter10
diff options
context:
space:
mode:
authorSn4il <sn4il@thedroth.rocks>2024-01-10 16:57:29 +0300
committerSn4il <sn4il@thedroth.rocks>2024-01-10 16:57:29 +0300
commitc4d43142181a45b849a15cf8ec5ebe61cea33897 (patch)
tree459a90d19e6f1ece81fbf364c1b5292214d99615 /lfs-12.0-sysv/chapter10
parenta044ba7b1561a513e33de0b7c1876aaa401a26d7 (diff)
downloadsn4il-site-c4d43142181a45b849a15cf8ec5ebe61cea33897.tar.gz
sn4il-site-c4d43142181a45b849a15cf8ec5ebe61cea33897.zip
LFS 12 mirror
Diffstat (limited to 'lfs-12.0-sysv/chapter10')
-rw-r--r--lfs-12.0-sysv/chapter10/chapter10.html101
-rw-r--r--lfs-12.0-sysv/chapter10/fstab.html191
-rw-r--r--lfs-12.0-sysv/chapter10/grub.html354
-rw-r--r--lfs-12.0-sysv/chapter10/introduction.html87
-rw-r--r--lfs-12.0-sysv/chapter10/kernel.html752
5 files changed, 1485 insertions, 0 deletions
diff --git a/lfs-12.0-sysv/chapter10/chapter10.html b/lfs-12.0-sysv/chapter10/chapter10.html
new file mode 100644
index 0000000..d832222
--- /dev/null
+++ b/lfs-12.0-sysv/chapter10/chapter10.html
@@ -0,0 +1,101 @@
+<!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. Делаем систему LFS загрузочной
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <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.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Часть&nbsp;IV.&nbsp;Сборка системы LFS
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="../chapter09/etcshells.html" title=
+ "Создание файла /etc/shells">Пред.</a>
+ <p>
+ Создание файла /etc/shells
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="introduction.html" title=
+ "Введение">След.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="../part4.html" title=
+ "Часть&nbsp;IV.&nbsp;Сборка системы LFS">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="chapter" lang="en" xml:lang="en">
+ <h1 class="chapter">
+ <a id="chapter-bootable" name="chapter-bootable"></a>10. Делаем
+ систему LFS загрузочной
+ </h1>
+ <div class="toc">
+ <h3>
+ Содержание
+ </h3>
+ <ul>
+ <li class="sect1">
+ <a href="introduction.html">Введение</a>
+ </li>
+ <li class="sect1">
+ <a href="fstab.html">Создание файла /etc/fstab</a>
+ </li>
+ <li class="sect1">
+ <a href="kernel.html">Linux-6.4.12</a>
+ </li>
+ <li class="sect1">
+ <a href="grub.html">Использование GRUB для настройки процесса
+ загрузки</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="../chapter09/etcshells.html" title=
+ "Создание файла /etc/shells">Пред.</a>
+ <p>
+ Создание файла /etc/shells
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="introduction.html" title=
+ "Введение">След.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="../part4.html" title=
+ "Часть&nbsp;IV.&nbsp;Сборка системы LFS">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/chapter10/fstab.html b/lfs-12.0-sysv/chapter10/fstab.html
new file mode 100644
index 0000000..0bf2405
--- /dev/null
+++ b/lfs-12.0-sysv/chapter10/fstab.html
@@ -0,0 +1,191 @@
+<!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.2. Создание файла /etc/fstab
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <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.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Глава 10. Делаем систему LFS загрузочной
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="introduction.html" title=
+ "Введение">Пред.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="kernel.html" title="Linux-6.4.12">След.</a>
+ <p>
+ Linux-6.4.12
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ch-bootable-fstab" name="ch-bootable-fstab"></a>10.2. Создание
+ файла /etc/fstab
+ </h1>
+ <p>
+ Файл <code class="filename">/etc/fstab</code> используется некоторыми
+ программами для определения того, какие файловые системы должны
+ монтироваться по умолчанию, в каком порядке и какие из них должны
+ быть проверены (на наличие ошибок целостности) перед монтированием.
+ Создайте новую таблицу файловых систем следующим образом:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/fstab &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/fstab
+
+# file system mount-point type options dump fsck
+# order
+
+/dev/<em class=
+"replaceable"><code>&lt;xxx&gt;</code></em> / <em class=
+"replaceable"><code>&lt;fff&gt;</code></em> defaults 1 1
+/dev/<em class=
+"replaceable"><code>&lt;yyy&gt;</code></em> swap swap pri=1 0 0
+proc /proc proc nosuid,noexec,nodev 0 0
+sysfs /sys sysfs nosuid,noexec,nodev 0 0
+devpts /dev/pts devpts gid=5,mode=620 0 0
+tmpfs /run tmpfs defaults 0 0
+devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
+tmpfs /dev/shm tmpfs nosuid,nodev 0 0
+cgroup2 /sys/fs/cgroup cgroup2 nosuid,noexec,nodev 0 0
+
+# End /etc/fstab</code>
+EOF</kbd></pre>
+ <p>
+ Замените <em class="replaceable"><code>&lt;xxx&gt;</code></em>,
+ <em class="replaceable"><code>&lt;yyy&gt;</code></em>, и <em class=
+ "replaceable"><code>&lt;fff&gt;</code></em> подходящими для системы
+ значениями, например, <code class="filename">sda2</code>,
+ <code class="filename">sda5</code>, и <code class=
+ "systemitem">ext4</code>. Для получения подробной информации о
+ параметрах в этом файле, смотрите <span class="command"><strong>man 5
+ fstab</strong></span>.
+ </p>
+ <p>
+ Файловым системам операционных систем MS DOS и Windows (таким как
+ vfat, ntfs, smbfs, cifs, iso9660, udf) требуется специальная опция
+ utf8, чтобы не-ASCII символы в именах файлов интерпретировались
+ правильно. Для локалей, отличных от UTF-8, значение <code class=
+ "option">iocharset</code> должно быть таким же, как набор символов
+ локали и настроено так, чтобы ядро понимало его. Это будет работать,
+ если соответствующее определение набора символов (находится в разделе
+ File systems -&gt; Native Language Support при настройке ядра) было
+ скомпилировано в ядро или собрано как модуль. Однако, если набор
+ символов локали — UTF-8, параметр <code class=
+ "option">iocharset=utf8</code> сделает файловую систему
+ чувствительной к регистру. Чтобы исправить это, используйте
+ специальную опцию <code class="option">utf8</code> вместо
+ <code class="option">iocharset=utf8</code> для локалей UTF-8.
+ Параметр <span class="quote">«<span class=
+ "quote">codepage</span>»</span> также необходим для файловых систем
+ vfat и smbfs. Он должен быть установлен на номер кодовой страницы,
+ используемый в MS-DOS в вашей стране. Например, для монтирования
+ флешек пользователь локали ru_RU.KOI8-R должен установить следующие
+ значения в группе параметров строки монтирования в <code class=
+ "filename">/etc/fstab</code>:
+ </p>
+ <pre class="screen"><code class=
+ "literal">noauto,user,quiet,showexec,codepage=866,iocharset=koi8r</code></pre>
+ <p>
+ Соответствующий фрагмент параметров для пользователей ru_RU.UTF-8
+ выглядит следующим образом:
+ </p>
+ <pre class="screen"><code class=
+ "literal">noauto,user,quiet,showexec,codepage=866,utf8</code></pre>
+ <p>
+ Обратите внимание, что <code class="option">iocharset</code>
+ используется по умолчанию для <code class="literal">iso8859-1</code>
+ (которая сохраняет файловую систему нечувствительной к регистру), а
+ параметр <code class="option">utf8</code> указывает ядру, что нужно
+ преобразовать имена файлов с использованием UTF-8, чтобы их можно
+ было интерпретировать в локали UTF-8.
+ </p>
+ <p>
+ Также возможно указать значения кодовой страницы по умолчанию и
+ iocharset для некоторых файловых систем во время настройки ядра.
+ Соответствующие параметры называются <span class=
+ "quote">«<span class="quote">Default NLS Option</span>»</span>
+ (<code class="option">CONFIG_NLS_DEFAULT)</code>, <span class=
+ "quote">«<span class="quote">Default Remote NLS Option</span>»</span>
+ (<code class="option">CONFIG_SMB_NLS_DEFAULT</code>), <span class=
+ "quote">«<span class="quote">Default codepage for FAT</span>»</span>
+ (<code class="option">CONFIG_FAT_DEFAULT_CODEPAGE</code>) и
+ <span class="quote">«<span class="quote">Default iocharset for
+ FAT</span>»</span> (<code class=
+ "option">CONFIG_FAT_DEFAULT_IOCHARSET</code>). Нет возможности
+ указать эти параметры для файловой системы ntfs во время компиляции
+ ядра.
+ </p>
+ <p>
+ Для некоторых типов жестких дисков можно сделать файловую систему
+ ext3 более устойчивой к сбоям питания. Чтобы сделать это, добавьте
+ параметр <code class="option">barrier=1</code> к соответствующей
+ записи в <code class="filename">/etc/fstab</code>. Чтобы проверить,
+ поддерживает ли диск эту опцию, запустите <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.0/general/hdparm.html">
+ hdparm</a> на соответствуюшем разделе. Например, если:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">hdparm -I /dev/sda | grep NCQ</kbd></pre>
+ <p>
+ возвращает непустой вывод, опция поддерживается.
+ </p>
+ <p>
+ Примечание: разделы на основе управления логическими томами (LVM) не
+ могут использовать параметр <code class="option">barrier</code>.
+ </p>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="introduction.html" title=
+ "Введение">Пред.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="kernel.html" title="Linux-6.4.12">След.</a>
+ <p>
+ Linux-6.4.12
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/chapter10/grub.html b/lfs-12.0-sysv/chapter10/grub.html
new file mode 100644
index 0000000..c41e3fa
--- /dev/null
+++ b/lfs-12.0-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 V1.79.1" />
+ <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.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Глава 10. Делаем систему LFS загрузочной
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="kernel.html" title="Linux-6.4.12">Пред.</a>
+ <p>
+ Linux-6.4.12
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ch-bootable-grub" name="ch-bootable-grub"></a>10.4.
+ Использование GRUB для настройки процесса загрузки
+ </h1>
+ <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.0/postlfs/grub-setup.html">
+ странице BLFS</a>.
+ </p>
+ </div>
+ <div class="sect2" lang="en" xml:lang="en">
+ <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.0/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="en" xml:lang="en">
+ <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="en" xml:lang="en">
+ <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="en" xml:lang="en">
+ <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.4.12-lfs-12.0" {
+ linux /boot/vmlinuz-6.4.12-lfs-12.0 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.4.12">Пред.</a>
+ <p>
+ Linux-6.4.12
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/chapter10/introduction.html b/lfs-12.0-sysv/chapter10/introduction.html
new file mode 100644
index 0000000..5e04e74
--- /dev/null
+++ b/lfs-12.0-sysv/chapter10/introduction.html
@@ -0,0 +1,87 @@
+<!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.1. Введение
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <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.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Глава 10. Делаем систему LFS загрузочной
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="chapter10.html" title=
+ "Делаем систему LFS загрузочной">Пред.</a>
+ <p>
+ Делаем систему LFS загрузочной
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="fstab.html" title=
+ "Создание файла /etc/fstab">След.</a>
+ <p>
+ Создание файла /etc/fstab
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ch-bootable-introduction" name=
+ "ch-bootable-introduction"></a>10.1. Введение
+ </h1>
+ <p>
+ Пришло время сделать систему LFS загрузочной. В этой главе
+ обсуждается создание файла <code class="filename">/etc/fstab</code>,
+ сборка ядра для новой системы и установка загрузчика GRUB, чтобы
+ система LFS могла быть выбрана для загрузки при запуске.
+ </p>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="chapter10.html" title=
+ "Делаем систему LFS загрузочной">Пред.</a>
+ <p>
+ Делаем систему LFS загрузочной
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="fstab.html" title=
+ "Создание файла /etc/fstab">След.</a>
+ <p>
+ Создание файла /etc/fstab
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.0-sysv/chapter10/kernel.html b/lfs-12.0-sysv/chapter10/kernel.html
new file mode 100644
index 0000000..ed8aeee
--- /dev/null
+++ b/lfs-12.0-sysv/chapter10/kernel.html
@@ -0,0 +1,752 @@
+<!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.3. Linux-6.4.12
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <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.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Глава 10. Делаем систему LFS загрузочной
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="fstab.html" title=
+ "Создание файла /etc/fstab">Пред.</a>
+ <p>
+ Создание файла /etc/fstab
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="grub.html" title=
+ "Использование GRUB для настройки процесса загрузки">След.</a>
+ <p>
+ Использование GRUB для настройки процесса загрузки
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ch-bootable-kernel" name="ch-bootable-kernel"></a>10.3.
+ Linux-6.4.12
+ </h1>
+ <div class="package" lang="en" xml:lang="en">
+ <p>
+ Этот пакет содержит ядро Linux.
+ </p>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Приблизительное время сборки:</strong>
+ <span class="segbody">1.5 - 130.0 SBU (обычно около 12
+ SBU)</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">1200 - 8800 MB
+ (обычно около 1700 MB)</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ 10.3.1. Установка ядра
+ </h2>
+ <p>
+ Сборка ядра состоит из нескольких этапов—настройка, компиляция и
+ установка. Ознакомьтесь с файлом <code class=
+ "filename">README</code> в дереве исходных текстов, чтобы узнать об
+ альтернативных способах настройки ядра.
+ </p>
+ <div class="admon important">
+ <img alt="[Важно]" src="../images/important.png" />
+ <h3>
+ Важно
+ </h3>
+ <p>
+ Сборка ядра Linux в первый раз — одна из самых сложных задач в
+ LFS. Правильный выбор параметров зависит от конкретного
+ оборудования для целевой системы и ваших потребностей. Для ядра
+ доступно почти 12 000 элементов конфигурации, хотя для
+ большинства компьютеров требуется только около трети из них.
+ Редакторы LFS рекомендуют пользователям, не знакомым с этим
+ процессом, внимательно следовать описанным ниже процедурам.
+ Главная цель сейчас состоит в том, чтобы довести первоначальную
+ систему до состояния, когда вы сможете войти в систему из
+ командной строки при последующей перезагрузке в <a class="xref"
+ href="../chapter11/reboot.html" title=
+ "11.3. Перезагрузка системы">Раздел&nbsp;11.3, «Перезагрузка
+ системы»</a>. Вопросы оптимизация и кастомизация второстепенны.
+ </p>
+ <p>
+ Для получения общей информации о конфигурации ядра смотрите
+ <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt">
+ https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt</a>.
+ Дополнительную информацию о настройке и сборке ядра можно найти
+ по адресу <a class="ulink" href=
+ "https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/">https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/</a>.
+ Эти ссылки немного устарели, но все же дают разумное
+ представление о процессе.
+ </p>
+ <p>
+ Если ничего не помогает, вы можете обратиться за помощью в список
+ рассылки <a class="ulink" href=
+ "https://www.linuxfromscratch.org/mail.html">lfs-support</a>.
+ Обратите внимание, что подписка необходима для того, чтобы
+ рассылка не содержала спама.
+ </p>
+ </div>
+ <p>
+ Подготовьте пакет к компиляции, выполнив следующую команду:
+ </p>
+ <pre class="userinput"><kbd class="command">make mrproper</kbd></pre>
+ <p>
+ Выполнение этой команды гарантирует, что дерево исходников будет
+ абсолютно чистым. Разработчики ядра рекомендуют запускать эту
+ команду перед каждой компиляцией. Не следует полагаться на то, что
+ дерево исходных текстов ядра будет чистым после распаковки.
+ </p>
+ <p>
+ Существует несколько способов настройки параметров ядра. Обычно это
+ делается с помощью псевдографического интерфейса, например так:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">make menuconfig</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значения необязательных переменных окружения
+ make:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>LANG=&lt;переменная_LANG_хоста&gt;
+ LC_ALL=</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Устанавливает значение локали на то, которое используется на
+ хосте. Это может понадобиться для правильного отображения
+ интерфейса menuconfig с помощью ncurses в текстовой консоли
+ Linux с UTF-8.
+ </p>
+ <p>
+ Если это необходимо, обязательно замените значение <em class=
+ "replaceable"><code>&lt;переменной_LANG&gt;</code></em> на
+ значение переменной <code class="envar">$LANG</code> вашего
+ хоста. В качестве альтернативы вы можете использовать
+ значения переменных <code class="envar">$LC_ALL</code> или
+ <code class="envar">$LC_CTYPE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><span class="command"><strong>make
+ menuconfig</strong></span></span>
+ </dt>
+ <dd>
+ <p>
+ Эта команда запускает интерфейс на основе ncurses. Для
+ использования других (графических) интерфейсов, выполните
+ <span class="command"><strong>make help</strong></span>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Хорошей отправной точкой для настройки ядра, может стать запуск
+ команды <span class="command"><strong>make
+ defconfig</strong></span>. В результате её выполнения будет
+ создана базовая конфигурация с учётом архитектуры системы.
+ </p>
+ <p>
+ Обязательно включите/отключите/настройте следующие параметры,
+ иначе система может работать некорректно или вообще не
+ загружаться:
+ </p>
+ <pre class="screen"><span class="blue">G</span>eneral setup ---&gt;
+ [ ] <span class=
+"blue">C</span>ompile the kernel with warnings as errors [WERROR]
+ <span class="blue">C</span>PU/Task time and stats accounting ---&gt;
+ [*] <span class=
+"blue">P</span>ressure stall information tracking [PSI]
+ [ ] <span class=
+"blue">R</span>equire boot parameter to enable pressure stall information tracking
+ ... [PSI_DEFAULT_DISABLED]
+ &lt; &gt; <span class=
+"blue">E</span>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS]
+ [*] <span class=
+"blue">C</span>ontrol Group support ---&gt; [CGROUPS]
+ [*] M<span class=
+"blue">e</span>mory controller [MEMCG]
+ [ ] <span class=
+"blue">C</span>onfigure standard kernel features (expert users) ---&gt; [EXPERT]
+
+<span class="blue">P</span>rocessor type and features ---&gt;
+ [*] <span class=
+"blue">B</span>uild a relocatable kernel [RELOCATABLE]
+ [*] <span class=
+"blue">R</span>andomize the address of the kernel image (KASLR) [RANDOMIZE_BASE]
+
+<span class="blue">G</span>eneral architecture-dependent options ---&gt;
+ [*] <span class=
+"blue">S</span>tack Protector buffer overflow detection [STACKPROTECTOR]
+ [*] <span class=
+"blue">S</span>trong Stack Protector [STACKPROTECTOR_STRONG]
+
+<span class="blue">D</span>evice Drivers ---&gt;
+ <span class="blue">G</span>eneric Driver Options ---&gt;
+ [ ] <span class=
+"blue">S</span>upport for uevent helper [UEVENT_HELPER]
+ [*] M<span class=
+"blue">a</span>intain a devtmpfs filesystem to mount at /dev [DEVTMPFS]
+ [*] <span class=
+"blue">A</span>utomount devtmpfs at /dev, after the kernel mounted the rootfs
+ ... [DEVTMPFS_MOUNT]
+ <span class="blue">G</span>raphics support ---&gt;
+ <span class="blue">F</span>rame buffer Devices ---&gt;
+ &lt;*&gt; <span class=
+"blue">S</span>upport for frame buffer devices ---&gt; [FB]
+ <span class="blue">C</span>onsole display driver support ---&gt;
+ [*] <span class=
+"blue">F</span>ramebuffer Console support [FRAMEBUFFER_CONSOLE]</pre>
+ <p>
+ Включите некоторые дополнительные функции, если вы собираете
+ 64-битную систему. Если вы используете menuconfig, включите их в
+ следующем порядке: сначала <em class=
+ "parameter"><code>CONFIG_PCI_MSI</code></em>, затем <em class=
+ "parameter"><code>CONFIG_IRQ_REMAP</code></em>, и, наконец,
+ <em class="parameter"><code>CONFIG_X86_X2APIC</code></em>, потому
+ что параметр отображается только после выбора его зависимости.
+ </p>
+ <pre class="screen"><span class=
+ "blue">P</span>rocessor type and features ---&gt;
+ [*] <span class=
+"blue">S</span>upport x2apic [X86_X2APIC]
+
+<span class="blue">D</span>evice Drivers ---&gt;
+ [*] <span class=
+"blue">P</span>CI support ---&gt; [PCI]
+ [*] M<span class=
+"blue">e</span>ssage Signaled Interrupts (MSI and MSI-X) [PCI_MSI]
+ [*] <span class=
+"blue">I</span>OMMU Hardware Support ---&gt; [IOMMU_SUPPORT]
+ [*] <span class=
+"blue">S</span>upport for Interrupt Remapping [IRQ_REMAP]</pre>
+ <p>
+ Если вы создаете 32-разрядную систему, работающую на оборудовании
+ с объемом оперативной памяти более 4 ГБ, измените конфигурацию
+ таким образом, чтобы ядро могло использовать до 64 ГБ оперативной
+ памяти:
+ </p>
+ <pre class="screen"><span class=
+ "blue">P</span>rocessor type and features ---&gt;
+ H<span class="blue">i</span>gh Memory Support ---&gt;
+ (X) <span class=
+"blue">6</span>4GB [HIGHMEM64G]</pre>
+ <p>
+ Если раздел для системы LFS находится на NVME SSD (то есть узлом
+ устройства для раздела является <code class=
+ "filename">/dev/nvme*</code>, а не <code class=
+ "filename">/dev/sd*</code>), включите параметр NVME support,
+ иначе система LFS не будет загружается:
+ </p>
+ <pre class="screen"><span class=
+ "blue">D</span>evice Drivers ---&gt;
+ N<span class="blue">V</span>ME Support ---&gt;
+ &lt;*&gt; N<span class=
+"blue">V</span>M Express block device [BLK_DEV_NVME]</pre>
+ </div>
+ <p>
+ Есть несколько других параметров, которые могут понадобиться в
+ зависимости от особенностей системы. Для получения списка
+ необходимых опций для пакетов BLFS смотрите <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.0/longindex.html#kernel-config-index">
+ Список опций ядра BLFS</a>.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Если ваша хост поддерживает UEFI и вы хотите загрузить LFS с
+ помощью него, вам необходимо настроить некоторые параметры ядра,
+ следуя инструкции <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.0/postlfs/grub-setup.html#uefi-kernel">
+ на странице BLFS</a>, <span class="bold"><strong>даже если вы
+ будете использовать загрузчик UEFI из основного
+ дистрибутива</strong></span>.
+ </p>
+ </div>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Пояснения для выбранных выше параметров ядра:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class="parameter"><code>Randomize the
+ address of the kernel image (KASLR)</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включите ASLR для образа ядра, чтобы уменьшить вероятность
+ некоторых атак, основанных на фиксированных адресах
+ конфиденциальных данных или кода в ядре.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Compile the
+ kernel with warnings as errors</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включение этого параметра может привести к сбою сборки, если
+ компилятор и/или конфигурация отличается от конфигурации ядра
+ разработчиков.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Enable kernel
+ headers through /sys/kernel/kheaders.tar.xz</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Для сборки ядра с этим параметром необходим пакет
+ <span class="command"><strong>cpio</strong></span>.
+ <span class="command"><strong>cpio</strong></span> не
+ устанавливается в LFS.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Configure
+ standard kernel features (expert users)</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Эта опция приведет к отображению некоторых параметров в
+ интерфейсе конфигурации, но изменение этих параметров может
+ быть опасным. Не используйте её, если вы не знаете, что
+ делаете.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Strong Stack
+ Protector</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включите SSP для ядра. Мы включили его для всего
+ пользовательского пространства с помощью <em class=
+ "parameter"><code>--enable-default-ssp</code></em>, настроив
+ GCC, но ядро не использует настройки GCC по умолчанию для
+ SSP. Мы включаем это явно здесь.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Support for
+ uevent helper</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включение этого параметра может вызвать сбои при управление
+ устройствами через Udev.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Maintain a
+ devtmpfs</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ С помощью этого параметра узлы устройств создаются
+ автоматически и заполняются самим ядром, даже без запуска
+ Udev. Udev будет работать поверх, управляя разрешениями и
+ добавляя необходимые символические ссылки. Этот элемент
+ конфигурации необходим всем пользователям Udev.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Automount
+ devtmpfs at /dev</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр позволит смонтировать представление ядра
+ устройств в /dev при переключении на корневую файловую
+ систему непосредственно перед запуском init.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Framebuffer
+ Console support</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Это параметр необходим для отображения консоли Linux на
+ устройстве с фреймбуфером. Чтобы ядро могло печатать
+ отладочные сообщения на ранней стадии загрузки, его не
+ следует собирать как модуль (если только не будет
+ использоваться initramfs). И, если <code class=
+ "option">CONFIG_DRM</code> (Direct Rendering Manager -
+ Диспетчер прямого рендеринга) включен, скорее всего, также
+ должен быть включен <code class=
+ "option">CONFIG_DRM_FBDEV_EMULATION</code> (включить
+ устаревшую поддержку fbdev для вашего modesetting драйвера).
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Support
+ x2apic</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Поддержка запуска 64-разрядного контроллера прерываний для
+ x86 процессоров в режиме x2APIC. x2APIC может быть включен в
+ BIOS на системах x86 и у ядра собранного без этой опции будет
+ kernel panic при загрузке. Эта опция не окажет никакого
+ эффекта, но и не причиняет вреда, если x2APIC отключен в
+ BIOS.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ В качестве альтернативы, в некоторых ситуациях может быть уместно
+ использование команды <span class="command"><strong>make
+ oldconfig</strong></span>. Смотрите файл <code class=
+ "filename">README</code> для получения дополнительной информации.
+ </p>
+ <p>
+ По желанию, вы можете пропустить настройку ядра, скопировав
+ конфигурационный файл ядра <code class="filename">.config</code>,
+ из хост системы(если он доступен) в каталог куда было распаковано
+ ядро <code class="filename">linux-6.4.12</code>. Однако, мы не
+ рекомендуем этот вариант. Намного лучше изучить все параметры меню
+ и создать конфигурацию ядра с нуля.
+ </p>
+ <p>
+ Скомпилируйте образ ядра и модули:
+ </p>
+ <pre class="userinput"><kbd class="command">make</kbd></pre>
+ <p>
+ При использовании модулей, могут потребоваться файлы конфигурации,
+ которые расположены в каталоге <code class=
+ "filename">/etc/modprobe.d</code>. Информация о модулях и
+ конфигурации ядра находится в <a class="xref" href=
+ "../chapter09/udev.html" title=
+ "9.3. Взаимодействие с устройствами и модулями">Раздел&nbsp;9.3,
+ «Взаимодействие с устройствами и модулями»</a> и в документации к
+ ядру <code class="filename">linux-6.4.12/Documentation</code>.
+ Кроме этого, стоит ознакомиться с руководством <code class=
+ "filename">modprobe.d(5)</code>.
+ </p>
+ <p>
+ Если поддержка модулей не была отключена в параметрах ядра,
+ установите модули с помощью:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">make modules_install</kbd></pre>
+ <p>
+ После окончания компиляции, необходимо выполнить еще несколько
+ шагов для завершения установки ядра. Некоторые файлы должны быть
+ скопированы в каталог <code class="filename">/boot</code>.
+ </p>
+ <div class="admon caution">
+ <img alt="[Внимание]" src="../images/caution.png" />
+ <h3>
+ Внимание
+ </h3>
+ <p>
+ Если вы решили использовать отдельный <code class=
+ "filename">/boot</code> раздел для системы LFS (возможно, общий
+ раздел <code class="filename">/boot</code> с хост-дистрибутивом),
+ скопированные ниже файлы должны быть помещены туда. Самый простой
+ способ сделать это — сначала создать запись для <code class=
+ "filename">/boot</code> в <code class=
+ "filename">/etc/fstab</code> (подробности читайте в предыдущем
+ разделе), затем выполните следующую команду от имени пользователя
+ <code class="systemitem">root</code> в среде <span class=
+ "emphasis"><em>chroot</em></span>:
+ </p>
+ <pre class="userinput"><kbd class="command">mount /boot</kbd></pre>
+ <p>
+ Путь к узлу устройства в команде опущен, поскольку <span class=
+ "command"><strong>mount</strong></span> может прочитать его из
+ <code class="filename">/etc/fstab</code>.
+ </p>
+ </div>
+ <p>
+ Путь к образу ядра может различаться в зависимости от используемой
+ платформы. Имя файла, может быть произвольным, но начинаться должно
+ с <span class="emphasis"><em>vmlinuz</em></span> для обеспечения
+ совместимости с автоматической настройкой процесса загрузки,
+ описанного в следующем разделе. Следующая команда предполагает
+ архитектуру x86:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.4.12-lfs-12.0</kbd></pre>
+ <p>
+ <code class="filename">System.map</code> - это символьный файл для
+ ядра. Он содержит точки входа каждой функции в API ядра, а также
+ адреса структур данных для запущенного ядро. Он используется в
+ качестве ресурса при исследовании проблем с ядром. Выполните
+ следующую команду для установки файла:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cp -iv System.map /boot/System.map-6.4.12</kbd></pre>
+ <p>
+ Файл конфигурации ядра <code class="filename">.config</code>
+ создается на шаге <span class="command"><strong>make
+ menuconfig</strong></span> и содержит все параметры ядра, которое
+ было скомпилировано только что. Рекомендуется сохранить этот файл
+ на будущее:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cp -iv .config /boot/config-6.4.12</kbd></pre>
+ <p>
+ Установите документацию ядра:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cp -r Documentation -T /usr/share/doc/linux-6.4.12</kbd></pre>
+ <p>
+ Важно отметить, что файлы в каталоге исходных кодов ядра не
+ принадлежат пользователю <span class=
+ "emphasis"><em>root</em></span>. Всякий раз, когда пакет
+ распаковывается от пользователя <span class=
+ "emphasis"><em>root</em></span> (как это и выполнялось внутри среды
+ chroot), файлы имеют те идентификаторы пользователя и группы,
+ которые были присвоены при распаковке. Обычно это не вызывает
+ проблем для других устанавливаемых пакетов, так как каталог с
+ исходными кодами удаляется после установки пакета. Однако исходный
+ код ядра Linux часто сохраняется в течение длительного времени.
+ Из-за этого существует вероятность того, что идентификатор
+ пользователя, используемый при распаковке, будет назначен другому
+ пользователю. В таком случае, этот пользователь будет иметь доступ
+ на запись в этот каталог.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ В ряде случаев требуется обновить конфигурацию ядра для пакетов,
+ которые будут установлены позже в BLFS. В отличии от других
+ пакетов, нет необходимости удалять дерево исходного кода ядра
+ после установки только что собранного ядра.
+ </p>
+ <p>
+ Если вы планируете оставить каталог с исходным кодом ядра,
+ выполните команду <span class="command"><strong>chown -R
+ 0:0</strong></span> в каталоге <code class=
+ "filename">linux-6.4.12</code>, чтобы все файлы принадлежали
+ пользователю <span class="emphasis"><em>root</em></span>.
+ </p>
+ </div>
+ <div class="admon warning">
+ <img alt="[Предупреждение]" src="../images/warning.png" />
+ <h3>
+ Предупреждение
+ </h3>
+ <p>
+ В некоторой документации по ядру рекомендуется создать
+ символическую ссылку <code class="filename">/usr/src/linux</code>
+ указывающую на каталог с исходниками ядра. Эта рекомендация
+ относится к ядрам до версии 2.6 и <span class="emphasis"><em>не
+ должна</em></span> выполняться в системе LFS, так как это может
+ вызвать проблемы с пакетами, которые вы, возможно, захотите
+ собрать, когда ваша базовая система LFS будет готова.
+ </p>
+ </div>
+ <div class="admon warning">
+ <img alt="[Предупреждение]" src="../images/warning.png" />
+ <h3>
+ Предупреждение
+ </h3>
+ <p>
+ Заголовочные файлы в системном каталоге <code class=
+ "filename">include</code> (<code class=
+ "filename">/usr/include</code>) <span class=
+ "emphasis"><em>всегда</em></span> используются те, которые
+ применялись при компиляции Glibc, то есть подготовленные
+ заголовочные файлы, установленные в <a class="xref" href=
+ "../chapter05/linux-headers.html" title=
+ "5.4. Заголовочные файлы Linux-6.4.12 API">Раздел&nbsp;5.4,
+ «Заголовочные файлы Linux-6.4.12 API»</a>. Поэтому их
+ <span class="emphasis"><em>никогда</em></span> не следует
+ заменять на чистые заголовочные файлы ядра или любые другие
+ подготовленные заголовочные файлы.
+ </p>
+ </div>
+ </div>
+ <div class="configuration" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ <a id="conf-modprobe" name="conf-modprobe"></a>10.3.2. Настройка
+ порядка загрузки модулей Linux
+ </h2>
+ <p>
+ В большинстве случаев модули Linux загружаются автоматически, но
+ иногда требуется определенный порядок. Программа, которая загружает
+ модули, <span class="command"><strong>modprobe</strong></span> или
+ <span class="command"><strong>insmod</strong></span>, использует
+ файл <code class="filename">/etc/modprobe.d/usb.conf</code> как раз
+ для этой цели. Этот файл должен быть заполнен таким образом, что
+ если USB-драйверы (ehci_hcd, ohci_hcd и uhci_hcd) были собраны в
+ виде модулей, то они будут загружены в правильном порядке; ehci_hcd
+ должен быть загружен до ohci_hcd и uhci_hcd для того, чтобы
+ избежать предупреждений во время загрузки.
+ </p>
+ <p>
+ Создайте новый файл <code class=
+ "filename">/etc/modprobe.d/usb.conf</code>, выполнив следующую
+ команду:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">install -v -m755 -d /etc/modprobe.d
+cat &gt; /etc/modprobe.d/usb.conf &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/modprobe.d/usb.conf
+
+install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
+install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
+
+# End /etc/modprobe.d/usb.conf</code>
+EOF</kbd></pre>
+ </div>
+ <div class="content" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ <a id="contents-kernel" name="contents-kernel"></a>10.3.3.
+ Содержимое пакета Linux
+ </h2>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Установленные файлы:</strong>
+ <span class="segbody">config-6.4.12, vmlinuz-6.4.12-lfs-12.0, и
+ System.map-6.4.12</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Созданные каталоги:</strong>
+ <span class="segbody">/lib/modules,
+ /usr/share/doc/linux-6.4.12</span>
+ </div>
+ </div>
+ </div>
+ <div class="variablelist">
+ <h3>
+ Краткое описание
+ </h3>
+ <table border="0" class="variablelist">
+ <colgroup>
+ <col align="left" valign="top" />
+ <col />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <p>
+ <a id="config" name="config"></a><span class=
+ "term"><code class="filename">config-6.4.12</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Содержит в себе все параметры конфигурации ядра
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="lfskernel" name="lfskernel"></a><span class=
+ "term"><code class=
+ "filename">vmlinuz-6.4.12-lfs-12.0</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Ядро системы Linux. При включении компьютера ядро — это
+ первая загружаемая часть операционной системы. Оно
+ обнаруживает и инициализирует все компоненты аппаратного
+ обеспечения компьютера, делает их доступными в виде
+ дерева каталогов с файлами для доступа к ним программ и
+ превращает один процессор в мультизадачную машину,
+ способную выполнять множество программ как будто
+ одновременно.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="System.map" name="System.map"></a><span class=
+ "term"><code class=
+ "filename">System.map-6.4.12</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Список адресов и символов; файл содержит точки входа и
+ адреса всех функций и структур данных в ядре
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="fstab.html" title=
+ "Создание файла /etc/fstab">Пред.</a>
+ <p>
+ Создание файла /etc/fstab
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="grub.html" title=
+ "Использование GRUB для настройки процесса загрузки">След.</a>
+ <p>
+ Использование GRUB для настройки процесса загрузки
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>