diff options
Diffstat (limited to 'lfs-12.0-sysv/chapter10')
-rw-r--r-- | lfs-12.0-sysv/chapter10/chapter10.html | 101 | ||||
-rw-r--r-- | lfs-12.0-sysv/chapter10/fstab.html | 191 | ||||
-rw-r--r-- | lfs-12.0-sysv/chapter10/grub.html | 354 | ||||
-rw-r--r-- | lfs-12.0-sysv/chapter10/introduction.html | 87 | ||||
-rw-r--r-- | lfs-12.0-sysv/chapter10/kernel.html | 752 |
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> + Часть IV. Сборка системы 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= + "Часть IV. Сборка системы 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= + "Часть IV. Сборка системы 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 > /etc/fstab << "EOF" +<code class="literal"># Begin /etc/fstab + +# file system mount-point type options dump fsck +# order + +/dev/<em class= +"replaceable"><code><xxx></code></em> / <em class= +"replaceable"><code><fff></code></em> defaults 1 1 +/dev/<em class= +"replaceable"><code><yyy></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><xxx></code></em>, + <em class="replaceable"><code><yyy></code></em>, и <em class= + "replaceable"><code><fff></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 -> 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. Установка базового системного программного обеспечения"> + Глава 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 > /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.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><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.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. Перезагрузка системы">Раздел 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=<переменная_LANG_хоста> + LC_ALL=</code></em></span> + </dt> + <dd> + <p> + Устанавливает значение локали на то, которое используется на + хосте. Это может понадобиться для правильного отображения + интерфейса menuconfig с помощью ncurses в текстовой консоли + Linux с UTF-8. + </p> + <p> + Если это необходимо, обязательно замените значение <em class= + "replaceable"><code><переменной_LANG></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 ---> + [ ] <span class= +"blue">C</span>ompile the kernel with warnings as errors [WERROR] + <span class="blue">C</span>PU/Task time and stats accounting ---> + [*] <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] + < > <span class= +"blue">E</span>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS] + [*] <span class= +"blue">C</span>ontrol Group support ---> [CGROUPS] + [*] M<span class= +"blue">e</span>mory controller [MEMCG] + [ ] <span class= +"blue">C</span>onfigure standard kernel features (expert users) ---> [EXPERT] + +<span class="blue">P</span>rocessor type and features ---> + [*] <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 ---> + [*] <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 ---> + <span class="blue">G</span>eneric Driver Options ---> + [ ] <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 ---> + <span class="blue">F</span>rame buffer Devices ---> + <*> <span class= +"blue">S</span>upport for frame buffer devices ---> [FB] + <span class="blue">C</span>onsole display driver support ---> + [*] <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 ---> + [*] <span class= +"blue">S</span>upport x2apic [X86_X2APIC] + +<span class="blue">D</span>evice Drivers ---> + [*] <span class= +"blue">P</span>CI support ---> [PCI] + [*] M<span class= +"blue">e</span>ssage Signaled Interrupts (MSI and MSI-X) [PCI_MSI] + [*] <span class= +"blue">I</span>OMMU Hardware Support ---> [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 ---> + H<span class="blue">i</span>gh Memory Support ---> + (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 ---> + N<span class="blue">V</span>ME Support ---> + <*> 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. Взаимодействие с устройствами и модулями">Раздел 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">Раздел 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 > /etc/modprobe.d/usb.conf << "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> |