summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter09
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.2-sysv/chapter09')
-rw-r--r--lfs-12.2-sysv/chapter09/bootscripts.html513
-rw-r--r--lfs-12.2-sysv/chapter09/chapter09.html115
-rw-r--r--lfs-12.2-sysv/chapter09/etcshells.html111
-rw-r--r--lfs-12.2-sysv/chapter09/inputrc.html156
-rw-r--r--lfs-12.2-sysv/chapter09/introduction.html182
-rw-r--r--lfs-12.2-sysv/chapter09/locale.html256
-rw-r--r--lfs-12.2-sysv/chapter09/network.html342
-rw-r--r--lfs-12.2-sysv/chapter09/symlinks.html430
-rw-r--r--lfs-12.2-sysv/chapter09/udev.html490
-rw-r--r--lfs-12.2-sysv/chapter09/usage.html1081
10 files changed, 3676 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter09/bootscripts.html b/lfs-12.2-sysv/chapter09/bootscripts.html
new file mode 100644
index 0000000..0f63b9f
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/bootscripts.html
@@ -0,0 +1,513 @@
+<!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>
+ 9.2. LFS-Bootscripts-20240825
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="introduction.html" title=
+ "Введение">Пред.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="udev.html" title=
+ "Взаимодействие с устройствами и модулями">След.</a>
+ <p>
+ Взаимодействие с устройствами и модулями
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-bootscripts" name="ch-config-bootscripts"></a>9.2.
+ LFS-Bootscripts-20240825
+ </h1>
+ <div class="wrap" lang="ru" xml:lang="ru">
+ <div class="package" lang="ru" xml:lang="ru">
+ <p>
+ Пакет LFS-Bootscripts содержит набор скриптов для запуска/остановки
+ системы LFS при загрузке/завершении работы. Файлы конфигурации и
+ процедуры, необходимые для настройки /процесса загрузки, описаны в
+ следующих разделах.
+ </p>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Приблизительное время сборки:</strong>
+ <span class="segbody">менее 0.1 SBU</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">248 KB</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.2.1. Установка пакета LFS-Bootscripts
+ </h2>
+ <p>
+ Установите пакет:
+ </p>
+ <pre class="userinput"><kbd class="command">make install</kbd></pre>
+ </div>
+ <div class="content" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="contents-bootscripts" name="contents-bootscripts"></a>9.2.2.
+ Содержимое пакета LFS-Bootscripts
+ </h2>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Установленные скрипты:</strong>
+ <span class="segbody">checkfs, cleanfs, console, functions,
+ halt, ifdown, ifup, localnet, modules, mountfs, mountvirtfs,
+ network, rc, reboot, sendsignals, setclock, ipv4-static, swap,
+ sysctl, sysklogd, template, udev и udev_retry</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Созданные каталоги:</strong>
+ <span class="segbody">/etc/rc.d, /etc/init.d (символическая
+ ссылка), /etc/sysconfig, /lib/services, /lib/lsb (символическая
+ ссылка)</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="checkfs-bootscripts" name=
+ "checkfs-bootscripts"></a><span class="term"><span class=
+ "command"><strong>checkfs</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Проверяет целостность файловых систем перед их
+ монтированием (за исключением журналируемых и сетевых
+ файловых систем)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="cleanfs-bootscripts" name=
+ "cleanfs-bootscripts"></a><span class="term"><span class=
+ "command"><strong>cleanfs</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Удаляет файлы, которые не должны сохраняться между
+ перезагрузками, например, те, которые находятся в
+ директориях <code class="filename">/run/</code> и
+ <code class="filename">/var/lock/</code>; скрипт
+ пересоздает <code class="filename">/run/utmp</code> и
+ удаляет файлы, которые, возможно, существуют <code class=
+ "filename">/etc/nologin</code>, <code class=
+ "filename">/fastboot</code>, и <code class=
+ "filename">/forcefsck</code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="console-bootscripts" name=
+ "console-bootscripts"></a><span class="term"><span class=
+ "command"><strong>console</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Загружает правильную таблицу раскладок для требуемой
+ раскладки клавиатуры; он также устанавливает экранный
+ шрифт
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="functions-bootscripts" name=
+ "functions-bootscripts"></a><span class=
+ "term"><span class=
+ "command"><strong>functions</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Содержит общие функции, такие как проверка ошибок и
+ состояния, которые используются несколькими загрузочными
+ скриптами
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="halt-bootscripts" name=
+ "halt-bootscripts"></a><span class="term"><span class=
+ "command"><strong>halt</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Останавливает работу системы
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="ifdown-bootscripts" name=
+ "ifdown-bootscripts"></a><span class="term"><span class=
+ "command"><strong>ifdown</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Останавливает сетевое устройство
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="ifup-bootscripts" name=
+ "ifup-bootscripts"></a><span class="term"><span class=
+ "command"><strong>ifup</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Инициализирует сетевое устройство
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="localnet-bootscripts" name=
+ "localnet-bootscripts"></a><span class=
+ "term"><span class="command"><strong>localnet</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Настраивает имя хоста системы и локальное устройство
+ loopback
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="modules-bootscripts" name=
+ "modules-bootscripts"></a><span class="term"><span class=
+ "command"><strong>modules</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Загружает модули ядра из списка, который находится в
+ файле <code class=
+ "filename">/etc/sysconfig/modules</code>, используя
+ указанные там же аргументы
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="mountfs-bootscripts" name=
+ "mountfs-bootscripts"></a><span class="term"><span class=
+ "command"><strong>mountfs</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Монтирует все файловые системы, кроме тех, которые
+ помечены как <span class=
+ "emphasis"><em>noauto</em></span> или сетевых файловых
+ систем
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="mountvirtfs-bootscripts" name=
+ "mountvirtfs-bootscripts"></a><span class=
+ "term"><span class=
+ "command"><strong>mountvirtfs</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Монтирует виртуальные файловые системы, такие как
+ <code class="systemitem">proc</code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="network-bootscripts" name=
+ "network-bootscripts"></a><span class="term"><span class=
+ "command"><strong>network</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Выполняет настройку сетевых интерфейсов, например,
+ сетевых карт, и настаивает шлюз по-умолчанию (где это
+ применимо)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="rc-bootscripts" name=
+ "rc-bootscripts"></a><span class="term"><span class=
+ "command"><strong>rc</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Основной сценарий управления; он отвечает за запуск всех
+ остальных загрузочных скриптов один за другим, в
+ последовательности, определяемой именами символических
+ ссылок на другие скрипты.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="reboot-bootscripts" name=
+ "reboot-bootscripts"></a><span class="term"><span class=
+ "command"><strong>reboot</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Перезагружает систему
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="sendsignals-bootscripts" name=
+ "sendsignals-bootscripts"></a><span class=
+ "term"><span class=
+ "command"><strong>sendsignals</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Обеспечивает завершение каждого процесса перед
+ перезагрузкой или остановкой системы.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="setclock-bootscripts" name=
+ "setclock-bootscripts"></a><span class=
+ "term"><span class="command"><strong>setclock</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Сбрасывает системные часы на местное время, если
+ аппаратные часы не установлены на всемирное
+ координированное время (UTC).
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="ipv4-static-bootscripts" name=
+ "ipv4-static-bootscripts"></a><span class=
+ "term"><span class=
+ "command"><strong>ipv4-static</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Предоставляет функциональные возможности, необходимые для
+ назначения статического адреса сетевому интерфейсу.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="swap-bootscripts" name=
+ "swap-bootscripts"></a><span class="term"><span class=
+ "command"><strong>swap</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Включает и отключает файлы и разделы, используемые для
+ подкачки.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="sysctl-bootscripts" name=
+ "sysctl-bootscripts"></a><span class="term"><span class=
+ "command"><strong>sysctl</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Загружает в работающее ядро значения системных настроек
+ из файла <code class="filename">/etc/sysctl.conf</code>,
+ если этот файл существует
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="sysklogd-bootscripts" name=
+ "sysklogd-bootscripts"></a><span class=
+ "term"><span class="command"><strong>sysklogd</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Запускает и останавливает демоны журналирования
+ сообщений, выдаваемых системой и ядром.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="template-bootscripts" name=
+ "template-bootscripts"></a><span class=
+ "term"><span class="command"><strong>template</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Шаблон для создания пользовательских загрузочных скриптов
+ для других демонов
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="udev-bootscripts" name=
+ "udev-bootscripts"></a><span class="term"><span class=
+ "command"><strong>udev</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Подготавливает каталог <code class="filename">/dev</code>
+ и запускает демон udev
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="udev-retry-bootscripts" name=
+ "udev-retry-bootscripts"></a><span class=
+ "term"><span class=
+ "command"><strong>udev_retry</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Повторяет неудачные попытки запуска udev uevents и
+ копирует сгенерированные файлы правил из <code class=
+ "filename">/run/udev</code> в <code class=
+ "filename">/etc/udev/rules.d</code> если требуется.
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </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="udev.html" title=
+ "Взаимодействие с устройствами и модулями">След.</a>
+ <p>
+ Взаимодействие с устройствами и модулями
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/chapter09.html b/lfs-12.2-sysv/chapter09/chapter09.html
new file mode 100644
index 0000000..5be54b1
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/chapter09.html
@@ -0,0 +1,115 @@
+<!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>
+ Глава 9. Системные настройки
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Часть&nbsp;IV.&nbsp;Сборка системы LFS
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="../chapter08/cleanup.html" title=
+ "Очистка">Пред.</a>
+ <p>
+ Очистка
+ </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.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="chapter">
+ <a id="chapter-config" name="chapter-config"></a>9. Системные настройки
+ </h1>
+ <div class="chapter" lang="ru" xml:lang="ru">
+ <div class="toc">
+ <h3>
+ Содержание
+ </h3>
+ <ul>
+ <li class="sect1">
+ <a href="introduction.html">Введение</a>
+ </li>
+ <li class="sect1">
+ <a href="bootscripts.html">LFS-Bootscripts-20240825</a>
+ </li>
+ <li class="sect1">
+ <a href="udev.html">Взаимодействие с устройствами и модулями</a>
+ </li>
+ <li class="sect1">
+ <a href="symlinks.html">Управление устройствами</a>
+ </li>
+ <li class="sect1">
+ <a href="network.html">Настройка сети</a>
+ </li>
+ <li class="sect1">
+ <a href="usage.html">Настройка и использование загрузочных
+ скриптов System V</a>
+ </li>
+ <li class="sect1">
+ <a href="locale.html">Настройка системной локали</a>
+ </li>
+ <li class="sect1">
+ <a href="inputrc.html">Создание файла /etc/inputrc</a>
+ </li>
+ <li class="sect1">
+ <a href="etcshells.html">Создание файла /etc/shells</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="../chapter08/cleanup.html" title=
+ "Очистка">Пред.</a>
+ <p>
+ Очистка
+ </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.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/etcshells.html b/lfs-12.2-sysv/chapter09/etcshells.html
new file mode 100644
index 0000000..c26d1a0
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/etcshells.html
@@ -0,0 +1,111 @@
+<!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>
+ 9.9. Создание файла /etc/shells
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="inputrc.html" title=
+ "Создание файла /etc/inputrc">Пред.</a>
+ <p>
+ Создание файла /etc/inputrc
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../chapter10/chapter10.html" title=
+ "Делаем систему LFS загрузочной">След.</a>
+ <p>
+ Делаем систему LFS загрузочной
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-shells" name="ch-config-shells"></a>9.9. Создание
+ файла /etc/shells
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ Файл <code class="filename">shells</code> содержит список оболочек
+ входа в систему. Приложения используют этот файл для определения
+ корректности оболочки. Для каждой оболочки должна присутствовать одна
+ строка, состоящая из пути к файлу оболочки относительно корня
+ структуры каталогов (/).
+ </p>
+ <p>
+ Например, <span class="command"><strong>chsh</strong></span>
+ обращается к этому файлу, чтобы определить, может ли
+ непривилегированный пользователь изменить оболочку входа для своей
+ учетной записи. Если имя команды не указано в списке, пользователю
+ будет отказано в возможности изменять оболочки.
+ </p>
+ <p>
+ Это обязательное условие для таких приложений, как <span class=
+ "application">GDM</span>, которые не заполняют список пользователей,
+ если ему не удаётся найти <code class="filename">/etc/shells</code>,
+ или демонов FTP, которые традиционно запрещают доступ пользователям с
+ оболочками, не включенными в этот файл.
+ </p>
+ <pre class="root"><kbd class=
+ "command">cat &gt; /etc/shells &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/shells
+
+/bin/sh
+/bin/bash
+
+# End /etc/shells</code>
+EOF</kbd></pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="inputrc.html" title=
+ "Создание файла /etc/inputrc">Пред.</a>
+ <p>
+ Создание файла /etc/inputrc
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../chapter10/chapter10.html" title=
+ "Делаем систему LFS загрузочной">След.</a>
+ <p>
+ Делаем систему LFS загрузочной
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/inputrc.html b/lfs-12.2-sysv/chapter09/inputrc.html
new file mode 100644
index 0000000..a81e496
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/inputrc.html
@@ -0,0 +1,156 @@
+<!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>
+ 9.8. Создание файла /etc/inputrc
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="locale.html" title=
+ "Настройка системной локали">Пред.</a>
+ <p>
+ Настройка системной локали
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="etcshells.html" title=
+ "Создание файла /etc/shells">След.</a>
+ <p>
+ Создание файла /etc/shells
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-inputrc" name="ch-config-inputrc"></a>9.8. Создание
+ файла /etc/inputrc
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ Файл <code class="filename">inputrc</code> это конфигурационный файл
+ библиотеки readline, который предоставляет возможности
+ редактирования, когда пользователь вводит строку с терминала. Он
+ работает путем преобразования ввода с клавиатуры в определенные
+ действия. Readline используется bash и большинством других оболочек,
+ а также многими другими приложениями.
+ </p>
+ <p>
+ Большинство людей не нуждаются в специальных настройках, поэтому
+ приведенная ниже команда создает глобальный <code class=
+ "filename">/etc/inputrc</code>, используемый всеми, кто входит в
+ систему. Если позже вы решите, что вам нужно переопределить значения
+ по умолчанию для одного из пользователей, вы можете создать файл
+ <code class="filename">.inputrc</code> в домашнем каталоге
+ пользователя и указать в нём измененные настройки.
+ </p>
+ <p>
+ Дополнительные сведения о редактировании файла <code class=
+ "filename">inputrc</code> см. в разделе <span class=
+ "command"><strong>info bash</strong></span> в секции <span class=
+ "emphasis"><em>Readline Init File</em></span>. Также хорошим
+ источником информации является <span class="command"><strong>info
+ readline</strong></span>.
+ </p>
+ <p>
+ Ниже приведен общий глобальный <code class="filename">inputrc</code>
+ с комментариями, объясняющими, что делают различные параметры.
+ Обратите внимание, что комментарии не могут находиться в той же
+ строке, что и команды. Создайте файл с помощью следующей команды:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/inputrc &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/inputrc
+# Modified by Chris Lynn &lt;roryo@roryo.dynup.net&gt;
+
+# Разрешить перенос приглашения оболочки на следующую строку
+set horizontal-scroll-mode Off
+
+# Разрешить 8-битный ввод
+set meta-flag On
+set input-meta On
+
+# Отключить обрезание восьмого бита в вводимых символах
+set convert-meta Off
+
+# Выводить на экран все восемь бит
+set output-meta On
+
+# Звуковой сигнал - none, visible или audible, соответственно никакого, видимый или слышимый
+set bell-style none
+
+# Нижеследующие команды привязывают escape-последовательности (первый аргумент)
+# к специфичным для Readline функциям (второй аргумент)
+"\eOd": backward-word
+"\eOc": forward-word
+
+# для консоли linux
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+"\e[5~": beginning-of-history
+"\e[6~": end-of-history
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+
+# для xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# для Konsole
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+
+# End /etc/inputrc</code>
+EOF</kbd></pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="locale.html" title=
+ "Настройка системной локали">Пред.</a>
+ <p>
+ Настройка системной локали
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="etcshells.html" title=
+ "Создание файла /etc/shells">След.</a>
+ <p>
+ Создание файла /etc/shells
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/introduction.html b/lfs-12.2-sysv/chapter09/introduction.html
new file mode 100644
index 0000000..a25f989
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/introduction.html
@@ -0,0 +1,182 @@
+<!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>
+ 9.1. Введение
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="chapter09.html" title=
+ "Системные настройки">Пред.</a>
+ <p>
+ Системные настройки
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="bootscripts.html" title=
+ "LFS-Bootscripts-20240825">След.</a>
+ <p>
+ LFS-Bootscripts-20240825
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-introduction" name="ch-config-introduction"></a>9.1.
+ Введение
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ Загрузка системы Linux включает в себя несколько задач. Процесс
+ должен монтировать как виртуальные, так и реальные файловые системы,
+ инициализировать устройства, активировать файл подкачки, проверять
+ целостность файловых систем, монтировать любые разделы или файл
+ подкачки, устанавливать системные часы, запускать сеть, запускать
+ требуемые системой службы и выполнять любые другие необходимые
+ пользователю задачи. Этот процесс должен быть организован таким
+ образом, чтобы задачи выполнялись в правильном порядке, но в то же
+ время как можно быстрее.
+ </p>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="sysv-desc" name="sysv-desc"></a>9.1.1. System V
+ </h2>
+ <p>
+ System V это классический процесс загрузки, который использовался в
+ Unix и Unix-подобных системах, таких как Linux с 1983 года. Он
+ состоит из небольшой программы <span class=
+ "command"><strong>init</strong></span>, которая настраивает базовые
+ программы, такие как <span class=
+ "command"><strong>login</strong></span> (через getty) и запускает
+ скрипт. Этот скрипт, обычно именуемый <span class=
+ "command"><strong>rc</strong></span> управляет выполнением
+ дополнительных сценариев, необходимых для инициализации системы.
+ </p>
+ <p>
+ Программа <span class="command"><strong>init</strong></span>
+ управляется файлом <code class="filename">/etc/inittab</code> и
+ разделена по уровням выполнения, которые могут быть выбраны
+ пользователем. В LFS используются следующие уровни:
+ </p>
+ <div class="literallayout">
+ <p>
+ 0&nbsp;—&nbsp;выключение<br />
+ 1&nbsp;—&nbsp;Однопользовательский&nbsp;режим<br />
+ 2&nbsp;—&nbsp;Определяемый&nbsp;пользователем<br />
+ 3&nbsp;—&nbsp;Полный&nbsp;многопользовательский&nbsp;режим<br />
+ 4&nbsp;—&nbsp;Определяемый&nbsp;пользователем<br />
+ 5&nbsp;—&nbsp;Полный&nbsp;многопользовательский&nbsp;режим&nbsp;с&nbsp;дисплей-менеджером<br />
+
+ 6&nbsp;—&nbsp;перезагрузка
+ </p>
+ </div>
+ <p>
+ Уровень выполнения по умолчанию равен 3 или 5.
+ </p>
+ <h3>
+ Преимущества
+ </h3>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ Устоявшаяся, хорошо отлаженная система.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Легко настраивается.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <h3>
+ Недостатки
+ </h3>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ Может загружаться медленнее. Загрузка базовой системы LFS в
+ среднем занимает 8-12 секунд, при этом время загрузки
+ измеряется от первого сообщения ядра до запроса на вход в
+ систему. Подключение к сети обычно устанавливается примерно
+ через 2 секунды после запроса на вход в систему.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Последовательная обработка задач загрузки. Это связано с
+ предыдущим пунктом. Задержка в работе любого процесса,
+ например, проверка файловой системы, приведет к задержке
+ всего процесса загрузки.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Напрямую не поддерживает дополнительные функции, такие как
+ контрольные группы (cgroups) и диспетчер системных ресурсов
+ для каждого пользователя.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Добавление init-скриптов требует ручных однотипных действий.
+ </p>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="chapter09.html" title=
+ "Системные настройки">Пред.</a>
+ <p>
+ Системные настройки
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="bootscripts.html" title=
+ "LFS-Bootscripts-20240825">След.</a>
+ <p>
+ LFS-Bootscripts-20240825
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/locale.html b/lfs-12.2-sysv/chapter09/locale.html
new file mode 100644
index 0000000..f0dabad
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/locale.html
@@ -0,0 +1,256 @@
+<!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>
+ 9.7. Настройка системной локали
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="usage.html" title=
+ "Настройка и использование загрузочных скриптов System V">Пред.</a>
+ <p>
+ Настройка и использование загрузочных скриптов System V
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="inputrc.html" title=
+ "Создание файла /etc/inputrc">След.</a>
+ <p>
+ Создание файла /etc/inputrc
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-locale" name="ch-config-locale"></a>9.7. Настройка
+ системной локали
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ Некоторые переменные окружения, необходимые для поддержки вашего
+ языка. Правильная их установка влияет на:
+ </p>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ Выходные данные программ, переводятся на ваш родной язык
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Правильную интерпретацию символов в буквы, цифры и другие
+ классы. Это необходимо для того, чтобы <span class=
+ "command"><strong>bash</strong></span> правильно принимал
+ не-ASCII символы, в командной строке в неанглоязычных языковых
+ системах
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Правильную для страны сортировку по алфавиту
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Подходящий формат бумаги по умолчанию
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Правильное форматирование денежных значений, значений времени и
+ дат
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ Ниже замените <em class="replaceable"><code>&lt;ll&gt;</code></em>
+ двухбуквенным кодом нужного вам языка (например <code class=
+ "literal">en</code>), а <em class=
+ "replaceable"><code>&lt;CC&gt;</code></em> двухбуквенным кодом
+ соответствующей страны (например <code class="literal">GB</code>).
+ <em class="replaceable"><code>&lt;charmap&gt;</code></em> нужно
+ заменить на каноническую кодировку для выбраной вами локали. Также
+ могут присутствовать необязательные модификаторы, такие как
+ <code class="literal">@euro</code>.
+ </p>
+ <p>
+ Список всех локалей, поддерживаемых Glibc, можно получить, выполнив
+ следующую команду:
+ </p>
+ <pre class="userinput"><kbd class="command">locale -a</kbd></pre>
+ <p>
+ Таблицы символов могут иметь несколько синонимов. Например
+ <code class="literal">ISO-8859-1</code> так же называют <code class=
+ "literal">iso8859-1</code> и <code class="literal">iso88591</code>.
+ Некоторые приложения не могут корректно обрабатывать различные
+ синонимы (например <code class="literal">UTF-8</code> должно быть
+ указано как <code class="literal">UTF-8</code>, а не <code class=
+ "literal">utf8</code>), поэтому в большинстве случаев безопаснее
+ всего выбрать каноническое имя для конкретной локали. Для определения
+ канонического имени локали выполните команду ниже, заменив <em class=
+ "replaceable"><code>&lt;locale name&gt;</code></em> на вывод
+ <span class="command"><strong>locale -a</strong></span> для желаемой
+ локали (например <code class="literal">en_GB.iso88591</code> в нашем
+ примере).
+ </p>
+ <pre class="userinput"><kbd class="command">LC_ALL=<em class=
+ "replaceable"><code>&lt;locale name&gt;</code></em> locale charmap</kbd></pre>
+ <p>
+ Для локали <code class="literal">en_GB.iso88591</code> приведенная
+ выше команда напечатает:
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">ISO-8859-1</code></pre>
+ <p>
+ Окончательная настройка локали будет выглядеть так: <code class=
+ "literal">en_GB.ISO-8859-1</code>. Важно, чтобы локаль, найденная с
+ помощью приведенной выше методики, была проверена перед её
+ добавлением в файлы запуска Bash:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">LC_ALL=&lt;locale name&gt; locale language
+LC_ALL=&lt;locale name&gt; locale charmap
+LC_ALL=&lt;locale name&gt; locale int_curr_symbol
+LC_ALL=&lt;locale name&gt; locale int_prefix</kbd></pre>
+ <p>
+ Приведенные выше команды должны вывести название языка, кодировку
+ символов, используемую в локали, местную валюту и телефонный код
+ страны. Если какая-либо из команд завершается с сообщением об ошибке,
+ похожим на указанное ниже, это означает, что ваша локаль либо не была
+ установлена в Главе 8, либо не поддерживается стандартной установкой
+ Glibc.
+ </p>
+ <pre class="screen"><code class=
+ "computeroutput">locale: Cannot set LC_* to default locale: No such file or directory</code></pre>
+ <p>
+ Если это произойдет, вам следует либо установить желаемую локаль с
+ помощью команды <span class=
+ "command"><strong>localedef</strong></span>, либо рассмотреть
+ возможность выбора другой локали. Дальнейшие инструкции не
+ предполагают таких сообщений об ошибках от Glibc.
+ </p>
+ <p>
+ Другие пакеты также могут работать некорректно (но не всегда будут
+ отображать какие-либо сообщения об ошибках), если название локали не
+ соответствует их ожиданиям. В таких случаях изучите, какие ещё
+ дистрибутивы Linux поддерживают ваш язык, возможно, это даст
+ некоторую полезную информацию
+ </p>
+ <p>
+ Программа оболочки <span class=
+ "command"><strong>/bin/bash</strong></span> (далее именуемая как
+ <span class="quote">«<span class="quote">оболочка</span>»</span>)
+ использует начальный набор файлов, чтобы помочь создать среду для
+ запуска. Каждый файл имеет определенное назначение и может по-разному
+ влиять на вход в систему и интерактивное окружение. Файлы в каталоге
+ <code class="filename">/etc</code> содержат глобальные настройки.
+ Если в домашнем каталоге существуют эквивалентные файлы, они могут
+ переопределить глобальные настройки.
+ </p>
+ <p>
+ Интерактивная оболочка входа запускается после успешного входа с
+ использованием <span class=
+ "command"><strong>/bin/login</strong></span>, прочитав файл
+ <code class="filename">/etc/passwd</code>. Интерактивная оболочка без
+ входа в систему запускается из командной строки (например,
+ <code class="prompt">[prompt]$</code><span class=
+ "command"><strong>/bin/bash</strong></span>). Неинтерактивная
+ оболочка обычно присутствует когда выполняется скрипт оболочки. Он
+ неинтерактивен, поскольку обрабатывает скрипт и не ожидает ввода
+ пользователем между командами.
+ </p>
+ <p>
+ Создайте файл <code class="filename">/etc/profile</code> <span class=
+ "phrase">после того, как будут определены правильные настройки
+ локали, чтобы установить желаемый язык</span>, но вместо этого
+ установите локаль <code class="literal">C.UTF-8</code> при запуске
+ консоли Linux (чтобы программы не выводили символы, которые консоль
+ Linux не может отобразить):
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/profile &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/profile
+
+for i in $(locale); do
+ unset ${i%=*}
+done
+
+if [[ "$TERM" = linux ]]; then
+ export LANG=C.UTF-8
+else
+ export LANG=<em class=
+"replaceable"><code>&lt;ll&gt;_&lt;CC&gt;.&lt;charmap&gt;&lt;@modifiers&gt;</code></em>
+fi
+
+# End /etc/profile</code>
+EOF</kbd></pre>
+ <p>
+ Локаль <code class="literal">C</code> (используемая по умолчанию) и
+ <code class="literal">en_US</code> (одна из рекомендуемых для
+ англоязычных пользователей в Соединенных Штатах) это разные локали.
+ <code class="literal">C</code> использует 7-битный набор символов
+ US-ASCII и обрабатывает байты с установленным старшим битом как
+ недопустимые символы. Вот почему, например, команда <span class=
+ "command"><strong>ls</strong></span> заменяет их вопросительными
+ знаками в этой локали. Кроме того, попытка отправить почту с такими
+ символами из Mutt или Pine приводит к тому что, отправляемые
+ сообщения не соответствуют RFC (кодировка в исходящей почте указана
+ как <code class="computeroutput">unknown 8-bit</code>). Рекомендуется
+ использовать локаль <code class="literal">C</code>, если вы уверены,
+ что вам никогда не понадобятся 8-битные символы.
+ </p>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="usage.html" title=
+ "Настройка и использование загрузочных скриптов System V">Пред.</a>
+ <p>
+ Настройка и использование загрузочных скриптов System V
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="inputrc.html" title=
+ "Создание файла /etc/inputrc">След.</a>
+ <p>
+ Создание файла /etc/inputrc
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/network.html b/lfs-12.2-sysv/chapter09/network.html
new file mode 100644
index 0000000..a87d9ed
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/network.html
@@ -0,0 +1,342 @@
+<!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>
+ 9.5. Настройка сети
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="symlinks.html" title=
+ "Управление устройствами">Пред.</a>
+ <p>
+ Управление устройствами
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="usage.html" title=
+ "Настройка и использование загрузочных скриптов System V">След.</a>
+ <p>
+ Настройка и использование загрузочных скриптов System V
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-network" name="ch-config-network"></a>9.5. Настройка
+ сети
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.5.1. Создание файлов конфигурации сетевого интерфейса
+ </h2>
+ <p>
+ Файлы в каталоге <code class="filename">/etc/sysconfig/</code>
+ обычно определяют, какие интерфейсы запускаются и выключаются
+ сетевым скриптом. Этот каталог должен содержать файл для каждого
+ настраиваемого интерфейса, например <code class=
+ "filename">ifconfig.xyz</code>, где <span class=
+ "quote">«<span class="quote">xyz</span>»</span> описывает сетевую
+ карту. Имя интерфейса (например, eth0) обычно является подходящим.
+ Каждый файл содержит атрибуты одного интерфейса, такие как его
+ IP-адреса, маски подсетей и так далее. Имя файла должно быть
+ <span class="emphasis"><em>ifconfig</em></span>.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Если процедура именования из предыдущего раздела не
+ использовалась, udev будет назначать имена интерфейсов сетевых
+ карт на основе физических характеристик системы, например,
+ enp2s1. Если вы не знаете имя вашего интерфейса, вы всегда можете
+ запустить <span class="command"><strong>ip link</strong></span>
+ или <span class="command"><strong>ls
+ /sys/class/net</strong></span> после загрузки системы.
+ </p>
+ <p>
+ Имена интерфейсов зависят от реализации и конфигурации демона
+ udev, работающего в системе. Демон udev для LFS (установленный в
+ <a class="xref" href="../chapter08/udev.html" title=
+ "8.76. Udev из Systemd-256.4">Раздел&nbsp;8.76, «Udev из
+ Systemd-256.4»</a>) не запустится, пока система LFS не будет
+ загружена. Таким образом, имена интерфейсов в системе LFS не
+ всегда можно определить, запустив эти команды в
+ хост-дистрибутиве, <span class="emphasis"><em>даже в среде
+ chroot</em></span>.
+ </p>
+ </div>
+ <p>
+ Следующая команда создает пример конфигурационного файла для
+ устройства <span class="emphasis"><em>eth0</em></span> со
+ статическим IP-адресом:
+ </p>
+ <pre class="userinput"><kbd class="command">cd /etc/sysconfig/
+cat &gt; ifconfig.<em class=
+"replaceable"><code>eth0</code></em> &lt;&lt; "EOF"
+<code class="literal">ONBOOT=<em class="replaceable"><code>yes</code></em>
+IFACE=<em class="replaceable"><code>eth0</code></em>
+SERVICE=<em class="replaceable"><code>ipv4-static</code></em>
+IP=<em class="replaceable"><code>192.168.1.2</code></em>
+GATEWAY=<em class="replaceable"><code>192.168.1.1</code></em>
+PREFIX=<em class="replaceable"><code>24</code></em>
+BROADCAST=<em class="replaceable"><code>192.168.1.255</code></em></code>
+EOF</kbd></pre>
+ <p>
+ Значения, выделенные курсивом, должны быть изменены в каждом файле,
+ чтобы правильно настроить интерфейсы.
+ </p>
+ <p>
+ Если переменной <code class="envar">ONBOOT</code> присвоено
+ значение <code class="literal">yes</code>, сценарий загрузки сети
+ System V вызовет сетевую карту (NIC) в процессе загрузки системы.
+ Если задано значение, отличное от <code class="literal">yes</code>
+ сетевой адаптер будет проигнорирован сетевым скриптом и не будет
+ запущен автоматически. Интерфейсы можно запускать или останавливать
+ вручную с помощью команд <span class=
+ "command"><strong>ifup</strong></span> и <span class=
+ "command"><strong>ifdown</strong></span>.
+ </p>
+ <p>
+ Переменная <code class="envar">IFACE</code> определяет имя сетевого
+ интерфейса, например, eth0. Она необходима для всех файлов
+ конфигураций сетевых устройств. Расширение файла должно
+ соответствовать этому значению.
+ </p>
+ <p>
+ Переменная <code class="envar">SERVICE</code> определяет метод
+ получения IP-адреса. Пакет LFS-Bootscripts имеет модульный формат
+ назначения IP, а создание дополнительных файлов в каталоге
+ <code class="filename">/lib/services/</code> позволит использовать
+ другие методы назначения IP. Переменная обычно используется для
+ протокола DHCP (Dynamic Host Configuration Protocol), который
+ рассматривается в книге BLFS
+ </p>
+ <p>
+ Переменная <code class="envar">GATEWAY</code> должна содержать
+ IP-адрес шлюза по умолчанию, если таковой имеется. Если нет, то
+ закомментируйте эту строку.
+ </p>
+ <p>
+ Переменная <code class="envar">PREFIX</code> указывает количество
+ бит, используемых в подсети. Каждый сегмент IP-адреса состоит из 8
+ бит. Если маска подсети равна 255.255.255.0, то для указания номера
+ сети используются первые три сегмента (24 бита). Если сетевая маска
+ 255.255.255.240, подсеть использует первые 28 бит. Префиксы длиннее
+ 24 бит обычно используются DSL и кабельными интернет-провайдерами
+ (ISP). В этом примере (PREFIX=24) маска сети — 255.255.255.0.
+ Измените переменную <code class="envar">PREFIX</code> в
+ соответствии c конфигурацией вашей сети. Если этот параметр не
+ указан, то ПРЕФИКС по умолчанию равен 24.
+ </p>
+ <p>
+ Для получения дополнительной информации смотрите справочную
+ страницу <span class="command"><strong>ifup</strong></span>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="resolv.conf" name="resolv.conf"></a>9.5.2. Создание файла
+ /etc/resolv.conf
+ </h2>
+ <p>
+ Системе потребуются дополнительные настройки службы доменных имен
+ (DNS) для преобразования имен сети Интернет в IP-адреса и наоборот.
+ Это достигается путем указания IP-адреса DNS-сервера, доступного от
+ провайдера или администратора сети, в <code class=
+ "filename">/etc/resolv.conf</code>. Создайте файл, выполнив
+ следующие действия:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/resolv.conf &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/resolv.conf
+
+domain <em class="replaceable"><code>&lt;Ваше доменное имя&gt;</code></em>
+nameserver <em class=
+"replaceable"><code>&lt;IP-адрес вашего основного DNS-сервера&gt;</code></em>
+nameserver <em class=
+"replaceable"><code>&lt;IP-адрес вашего дополнительного DNS-сервера&gt;</code></em>
+
+# End /etc/resolv.conf</code>
+EOF</kbd></pre>
+ <p>
+ Оператор <code class="varname">domain</code> может быть опущен или
+ заменён оператором <code class="varname">search</code>. Смотрите
+ справочную страницу resolv.conf для получения подробной информации.
+ </p>
+ <p>
+ Замените <em class="replaceable"><code>&lt;IP-адрес вашего
+ основного DNS-сервера&gt;</code></em> адресом наиболее подходящего
+ DNS сервера. DNS серверов, может быть указано более одной записи
+ (дополнительные серверы необходимы для возможности резервного
+ переключения). Если вам нужен только один DNS-сервер, удалите
+ вторую строку <span class="emphasis"><em>nameserver</em></span> из
+ файла. DNS-сервер также может выступать шлюзом в локальной сети.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Адреса общедоступных DNS серверов Google - 8.8.8.8 и 8.8.4.4.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-hostname" name="ch-config-hostname"></a>9.5.3.
+ Настройка имени хоста
+ </h2>
+ <p>
+ В процессе загрузки файл <code class=
+ "filename">/etc/hostname</code> используется для настройки имени
+ хоста системы.
+ </p>
+ <p>
+ Создайте файл <code class="filename">/etc/hostname</code> и внесите
+ имя хоста, выполнив команду:
+ </p>
+ <pre class="userinput"><kbd class="command">echo "<em class=
+ "replaceable"><code>&lt;lfs&gt;</code></em>" &gt; /etc/hostname</kbd></pre>
+ <p>
+ <em class="replaceable"><code>&lt;lfs&gt;</code></em> замените на
+ имя вашего компьютера. Не вносите сюда полное доменное имя(FQDN).
+ Эта информация помещается в файл <code class=
+ "filename">/etc/hosts</code>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-hosts" name="ch-config-hosts"></a>9.5.4. Настройка
+ файла /etc/hosts
+ </h2>
+ <p>
+ Выберите полное доменное имя (FQDN) и возможные псевдонимы для
+ использования в файле <code class="filename">/etc/hosts</code>.
+ Если вы используете статические IP-адреса, вам также необходимо
+ определиться с IP-адресом. Синтаксис для записи в файле hosts
+ следующий:
+ </p>
+ <pre class="screen"><code class=
+ "literal">IP_address myhost.example.org aliases</code></pre>
+ <p>
+ Если компьютер не должен быть виден в Интернете (т. е. нет
+ зарегистрированного домена и действительного блока назначенных
+ IP-адресов—у большинства пользователей этого нет), убедитесь, что
+ IP-адрес находится в диапазоне внутренних сетевых IP-адресов.
+ Допустимые диапазоны:
+ </p>
+ <pre class="screen"><code class=
+ "literal">Диапазон адресов локальной сети Стандартный префикс
+10.0.0.1 - 10.255.255.254 8
+172.x.0.1 - 172.x.255.254 16
+192.168.y.1 - 192.168.y.254 24</code></pre>
+ <p>
+ x может быть любым числом в диапазоне 16-31. y может быть любым
+ числом в диапазоне 0-255.
+ </p>
+ <p>
+ Правильным IP адресом в локальной сети может быть 192.168.1.1.
+ </p>
+ <p>
+ Если компьютер должен быть виден в Интернете, действительным полным
+ доменным именем может быть само имя домена или строка, полученная
+ путем объединения префикса (часто имени хоста) и домена с помощью
+ символа <span class="quote">«<span class="quote">.</span>»</span>.
+ Кроме того, вам необходимо обратиться к администратору домена,
+ чтобы связать полное доменное имя и ваш общедоступный IP-адрес.
+ </p>
+ <p>
+ Даже если компьютер не виден из Интернета, полное доменное имя все
+ равно необходимо для правильной работы некоторых программ, таких
+ как MTA. Для этих целей можно использовать специальное полное
+ доменное имя <code class="literal">localhost.localdomain</code>.
+ </p>
+ <p>
+ Создайте файл <code class="filename">/etc/hosts</code>, выполнив
+ команду:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/hosts &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/hosts
+
+127.0.0.1 localhost.localdomain localhost
+127.0.1.1 <em class="replaceable"><code>&lt;FQDN&gt;</code></em> <em class=
+"replaceable"><code>&lt;HOSTNAME&gt;</code></em>
+<em class="replaceable"><code>&lt;192.168.1.1&gt;</code></em> <em class=
+"replaceable"><code>&lt;FQDN&gt;</code></em> <em class=
+"replaceable"><code>&lt;HOSTNAME&gt;</code></em> <em class=
+"replaceable"><code>[alias1] [alias2 ...]</code></em>
+::1 localhost ip6-localhost ip6-loopback
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+
+# End /etc/hosts</code>
+EOF</kbd></pre>
+ <p>
+ Значения <em class=
+ "replaceable"><code>&lt;192.168.1.1&gt;</code></em>, <em class=
+ "replaceable"><code>&lt;FQDN&gt;</code></em>, и <em class=
+ "replaceable"><code>&lt;HOSTNAME&gt;</code></em> должны быть
+ изменены в соответствии с предпочтениями пользователя или
+ требованиями сети (если имеется IP-адрес выданный сетевым/системным
+ администратором и машина подключена к существующей сети).
+ Необязательные параметры могут быть опущены.
+ </p>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="symlinks.html" title=
+ "Управление устройствами">Пред.</a>
+ <p>
+ Управление устройствами
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="usage.html" title=
+ "Настройка и использование загрузочных скриптов System V">След.</a>
+ <p>
+ Настройка и использование загрузочных скриптов System V
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/symlinks.html b/lfs-12.2-sysv/chapter09/symlinks.html
new file mode 100644
index 0000000..95d9b42
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/symlinks.html
@@ -0,0 +1,430 @@
+<!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>
+ 9.4. Управление устройствами
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="udev.html" title=
+ "Взаимодействие с устройствами и модулями">Пред.</a>
+ <p>
+ Взаимодействие с устройствами и модулями
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="network.html" title=
+ "Настройка сети">След.</a>
+ <p>
+ Настройка сети
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-symlinks" name="ch-config-symlinks"></a>9.4.
+ Управление устройствами
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.4.1. Сетевые устройства
+ </h2>
+ <p>
+ Udev по умолчанию присваивает имена сетевым устройствам в
+ соответствии с данными прошивки, BIOS'а или физическими
+ характеристиками, такими как шина, слот или MAC-адрес. Целью такого
+ соглашения об именовании является обеспечение того, чтобы сетевые
+ устройства именовались последовательно, а не основывались на
+ времени обнаружения сетевой карты. Например, в более старых версиях
+ Linux—на компьютере с двумя сетевыми картами производства Intel и
+ Realtek, сетевая карта производства Intel могла стать eth0, а карта
+ Realtek — eth1. Иногда после перезагрузки карты именовались
+ наоборот.
+ </p>
+ <p>
+ В новой схеме именования, типичными именами сетевых устройств
+ являются enp5s0 или wlp3s0. Если такие имена для вас нежелательны,
+ то может быть реализована традиционная схема именования или своя
+ собственная.
+ </p>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.4.1.1. Отключение постоянного присвоения имен в параметрах
+ загрузки ядра
+ </h3>
+ <p>
+ Традиционная схема именования - eth0, eth1, и так далее, может
+ быть включена путем добавления параметра <strong class=
+ "userinput"><code>net.ifnames=0</code></strong> в командную
+ строку ядра. Это решение подходит для систем, которые имеют
+ только одно сетевое устройство каждого типа. Часто в ноутбуках
+ несколько сетевых устройств с именами eth0 и wlan0; в таких
+ ноутбуках также может использоваться этот метод. Командная строка
+ указывается в файле конфигурации GRUB. Подробности смотрите на
+ странице <a class="xref" href="../chapter10/grub.html#grub-cfg"
+ title=
+ "10.4.4. Создание файла конфигурации GRUB">Раздел&nbsp;10.4.4,
+ «Создание файла конфигурации GRUB»</a>.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.4.1.2. Создание пользовательских правил Udev
+ </h3>
+ <p>
+ Схему именования можно настроить, создав пользовательские правила
+ udev. В состав книги включен скрипт, который генерирует начальные
+ правила. Чтобы их сгенерировать, выполните команду:
+ </p>
+ <pre class="install"><kbd class=
+ "command">bash /usr/lib/udev/init-net-rules.sh</kbd></pre>
+ <p>
+ Теперь, проверьте файл <code class=
+ "filename">/etc/udev/rules.d/70-persistent-net.rules</code>,
+ чтобы узнать какое имя с каким сетевым устройством сопоставлено:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat /etc/udev/rules.d/70-persistent-net.rules</kbd></pre>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ В некоторых случаях, например, когда MAC-адреса были назначены
+ сетевой карте вручную или в виртуальной среде, такой как Qemu
+ или Xen, возможно, файл сетевых правил не будет сгенерирован,
+ поскольку адреса назначаются не последовательно. В таких
+ случаях, этот способ не применим.
+ </p>
+ </div>
+ <p>
+ Файл начинается с блока комментариев, далее следуют две строки
+ для каждой сетевой карты (NIC). Первая строка представляет собой
+ описание с комментариями и содержит аппаратные идентификаторы
+ (например, поставщика PCI и идентификаторы устройств, если это
+ PCI-карта), а также информацию о драйвере (если его удалось
+ обнаружить). Ни идентификатор оборудования, ни драйвер не
+ используются для определения того, какое имя присвоить
+ интерфейсу; эта информация предназначена только для справки.
+ Вторая строка - это правило udev, которое соответствует этому
+ сетевому адаптеру и фактически присваивает ему имя.
+ </p>
+ <p>
+ Все правила udev состоят из нескольких ключевых слов, разделенных
+ запятыми и необязательными пробелами. Ниже приведены ключевые
+ слова и пояснения по каждому из них:
+ </p>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ <code class="literal">SUBSYSTEM=="net"</code> - указывает
+ Udev игнорировать устройства, которые не являются сетевыми
+ картами.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <code class="literal">ACTION=="add"</code> - указывает Udev
+ игнорировать правила для событий, отличных от добавления
+ (события "удалить" и "изменить" также происходят, но не
+ требуют переименования сетевых интерфейсов).
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <code class="literal">DRIVERS=="?*"</code> - существует для
+ того, чтобы Udev проигнорировал подинтерфейсы VLAN или
+ моста (потому что эти подинтерфейсы не имеют драйверов).
+ Эти подинтерфейсы пропускаются, потому что назначенные им
+ имена будут конфликтовать с именами их родительских
+ устройств.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <code class="literal">ATTR{address}</code> - значением
+ этого ключевого слова является MAC-адрес сетевой карты.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <code class="literal">ATTR{type}=="1"</code> - этот ключ
+ гарантирует выполнение правила соответствующего только
+ основному интерфейсу, при использовании определенных
+ беспроводных драйверов, которые создают несколько
+ виртуальных интерфейсов. Дополнительные интерфейсы
+ пропускаются по той же причине, что и подинтерфейсы VLAN и
+ мост, в ином случае произошел бы конфликт имен.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <code class="literal">NAME</code> - значением этого
+ ключевого слова является имя, которое udev присвоит этому
+ интерфейсу.
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ Значение <code class="literal">NAME</code> является очень важным.
+ Прежде чем продолжить, убедитесь, что вы знаете, какое имя
+ назначено каждой из сетевых карт и обязательно используйте это
+ значение <code class="literal">NAME</code> при создании файлов
+ конфигурации сети.
+ </p>
+ <p>
+ Даже если создан пользовательский файл правил udev, udev все
+ равно может назначить одно или несколько альтернативных имен для
+ сетевой карты на основе физических характеристик. Если
+ пользовательское правило udev переименовывает какой-либо сетевой
+ адаптер, используя имя, уже назначенное в качестве
+ альтернативного имени другого сетевого адаптера, это правило udev
+ не будет выполнено. Если возникает эта проблема, вы можете
+ создать файл конфигурации <code class=
+ "filename">/etc/udev/network/99-default.link</code> с пустой
+ альтернативной политикой назначения, переопределяющей файл
+ конфигурации по умолчанию <code class=
+ "filename">/usr/lib/udev/network/99-default.link</code>:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">sed -e '/^AlternativeNamesPolicy/s/=.*$/=/' \
+ /usr/lib/udev/network/99-default.link \
+ &gt; /etc/udev/network/99-default.link</kbd></pre>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.4.2. Символические ссылки CD-ROM
+ </h2>
+ <p>
+ Некоторое программное обеспечение, которое вы, возможно, захотите
+ установить позже (например, различные медиаплееры) ожидают, что
+ устройства <code class="filename">/dev/cdrom</code> или
+ <code class="filename">/dev/dvd</code> и символические ссылки на
+ CD-ROM или DVD-ROM устройства должны существовать. Кроме того,
+ может быть удобно использовать эти символические ссылки в
+ <code class="filename">/etc/fstab</code>. Udev поставляется с
+ файлом сценария, который будет генерировать правила для создания
+ этих символических ссылок, в зависимости от возможностей каждого
+ устройства, но вам нужно решить, какой из двух режимов работы вы
+ хотите использовать.
+ </p>
+ <p>
+ Во-первых, скрипт может работать в режиме <span class=
+ "quote">«<span class="quote">by-path</span>»</span> (используется
+ по умолчанию для USB и FireWire устройств), где создаваемые им
+ правила зависят от физического пути к CD или DVD устройству.
+ Во-вторых, он может работать в режиме <span class=
+ "quote">«<span class="quote">by-id</span>»</span> (по умолчанию для
+ устройств IDE и SCSI), где создаваемые им правила зависят от строк
+ идентификации, хранящихся в самом устройстве CD или DVD. Путь
+ определяется сценарием Udev <span class=
+ "command"><strong>path_id</strong></span>, а идентификационные
+ строки считываются с оборудования командами <span class=
+ "command"><strong>ata_id</strong></span> или <span class=
+ "command"><strong>scsi_id</strong></span>, в зависимости от того,
+ какой тип устройства у вас есть.
+ </p>
+ <p>
+ У каждого подхода есть свои преимущества; правильный подход к
+ использованию будет зависеть от того, какие изменения устройств
+ могут произойти. Если вы ожидаете, что физический путь к устройству
+ (порты и/или слоты, в который оно подключено), изменится, например,
+ потому, что вы планируете переместить диск в другой порт IDE или
+ другой разъем USB, то вы должны использовать режим <span class=
+ "quote">«<span class="quote">by-id</span>»</span>. С другой
+ стороны, если вы ожидаете, что идентификация устройства изменится,
+ например, потому, что оно может выйти из строя, и вы замените его
+ другим устройством с теми же характеристиками и подключите к тем же
+ разъемам, тогда вы должны использовать режим <span class=
+ "quote">«<span class="quote">by-path</span>»</span>.
+ </p>
+ <p>
+ Если с вашим устройством возможен любой из вариантов, выберите тот,
+ который по вашему мнению случается чаще.
+ </p>
+ <div class="admon important">
+ <img alt="[Важно]" src="../images/important.png" />
+ <h3>
+ Важно
+ </h3>
+ <p>
+ Внешние устройства (например, привод компакт-дисков, подключенный
+ через USB) не следует подключать методом <span class=
+ "quote">«<span class="quote">by-path</span>»</span>, потому что
+ каждый раз, когда устройство подключено в новый внешний порт,
+ изменится его физический путь. Все внешние устройства подвержены
+ этой проблеме, если при написании правил Udev применять режим
+ распознавания по их физическому пути. К тому же, эта проблема не
+ ограничивается CD и DVD-приводами.
+ </p>
+ </div>
+ <p>
+ Если вы хотите увидеть значения, которые будут использовать скрипты
+ udev, то для требуемого устройства CD-ROM найдите соответствующий
+ каталог в <code class="filename">/sys</code> (например, это может
+ быть <code class="filename">/sys/block/hdd</code>) и выполните
+ команду, аналогичную следующей:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">udevadm test /sys/block/hdd</kbd></pre>
+ <p>
+ Обратите внимание на строки, содержащие вывод различных
+ идентификаторов *_id. Режим <span class="quote">«<span class=
+ "quote">by-id</span>»</span> будет использовать значение ID_SERIAL
+ если оно существует и не пустое, иначе будет использована
+ комбинация ID_MODEL и ID_REVISION. Режим <span class=
+ "quote">«<span class="quote">by-path</span>»</span> будет
+ использовать значение ID_PATH.
+ </p>
+ <p>
+ Если режим по умолчанию не подходит для вашей ситуации, то в файл
+ <code class=
+ "filename">/etc/udev/rules.d/83-cdrom-symlinks.rules</code> можно
+ внести следующие изменения (где <em class=
+ "replaceable"><code>mode</code></em> является одним из значений
+ <span class="quote">«<span class="quote">by-id</span>»</span> или
+ <span class="quote">«<span class="quote">by-path</span>»</span>):
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">sed -e 's/"write_cd_rules"/"write_cd_rules <em class=
+ "replaceable"><code>mode</code></em>"/' \
+ -i /etc/udev/rules.d/83-cdrom-symlinks.rules</kbd></pre>
+ <p>
+ Обратите внимание, что на данный момент, нет необходимости
+ создавать файлы правил или символические ссылки, так как вы
+ смонтировали каталог <code class="filename">/dev</code> хоста в
+ систему LFS, и мы предполагаем, что символические ссылки уже
+ существуют. Правила и символические ссылки будут создаваться при
+ первой загрузке LFS системы.
+ </p>
+ <p>
+ Однако, если у вас есть несколько устройств CD-ROM, то
+ символические ссылки, сгенерированные в это время, могут указывать
+ на другие устройства, и иметь различия от хост системы, потому что
+ устройства не будут обнаружены в предсказуемом порядке. Назначения,
+ созданные при первой загрузке системы LFS, будут правильными,
+ проблема возникнет только в том случае, если символические ссылки в
+ обеих системах указывают на одно и то же устройство. Если
+ потребуется, проверьте (и, возможно, отредактируйте)
+ сгенерированные правила в файле <code class=
+ "filename">/etc/udev/rules.d/70-persistent-cd.rules</code> после
+ загрузки, чтобы убедиться, что назначенные символические ссылки
+ соответствуют тому, что вам нужно.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.4.3. Работа с дубликатами устройств
+ </h2>
+ <p>
+ Как поясняется в <a class="xref" href="udev.html" title=
+ "9.3. Взаимодействие с устройствами и модулями">Раздел&nbsp;9.3,
+ «Взаимодействие с устройствами и модулями»</a>, порядок отображения
+ устройства с одинаковой функциональностью в <code class=
+ "filename">/dev</code> является, как правило, случайным. Например,
+ если у вас есть веб камера и TV тюнер, иногда <code class=
+ "filename">/dev/video0</code> ссылается на камеру, а <code class=
+ "filename">/dev/video1</code> ссылается на TV тюнер, а иногда,
+ например, после перезагрузки системы, порядок поменяется на
+ противоположный. Для всех классов оборудования, за исключением
+ звуковых и сетевых карт, это можно исправить, написав правила udev
+ для создания постоянных символических ссылок. Случай с сетевыми
+ картами описан отдельно в <a class="xref" href="network.html"
+ title="9.5. Настройка сети">Раздел&nbsp;9.5, «Настройка сети»</a>,
+ инструкции по настройке звуковых карт можно найти в <a class=
+ "ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/devices.html">
+ BLFS</a>.
+ </p>
+ <p>
+ Для каждого из ваших устройств, которые могут иметь такую проблему
+ (даже если проблема не существует в текущем дистрибутиве Linux ),
+ найдите соответствующий каталог в <code class=
+ "filename">/sys/class</code> или <code class=
+ "filename">/sys/block</code>. Для видеоустройств это может быть
+ <code class="filename">/sys/class/video4linux/video<em class=
+ "replaceable"><code>X</code></em></code>. Определите атрибуты,
+ которые однозначно идентифицируют устройство (обычно это
+ идентификаторы поставщика и продукта и/или серийные номера):
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">udevadm info -a -p /sys/class/video4linux/video0</kbd></pre>
+ <p>
+ Затем напишите правила, которые создают символические ссылки,
+ например:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/udev/rules.d/83-duplicate_devs.rules &lt;&lt; "EOF"
+<code class="literal">
+# Persistent symlinks for webcam and tuner
+KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", SYMLINK+="webcam"
+KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", SYMLINK+="tvtuner"
+</code>
+EOF</kbd></pre>
+ <p>
+ В результате устройства <code class="filename">/dev/video0</code> и
+ <code class="filename">/dev/video1</code> по-прежнему случайным
+ образом ссылаются на TV тюнер и веб-камеру (и, следовательно,
+ никогда не должны использоваться напрямую), но есть символические
+ ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают на
+ правильное устройство.
+ </p>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="udev.html" title=
+ "Взаимодействие с устройствами и модулями">Пред.</a>
+ <p>
+ Взаимодействие с устройствами и модулями
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="network.html" title=
+ "Настройка сети">След.</a>
+ <p>
+ Настройка сети
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/udev.html b/lfs-12.2-sysv/chapter09/udev.html
new file mode 100644
index 0000000..82b8bec
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/udev.html
@@ -0,0 +1,490 @@
+<!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>
+ 9.3. Взаимодействие с устройствами и модулями
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="bootscripts.html" title=
+ "LFS-Bootscripts-20240825">Пред.</a>
+ <p>
+ LFS-Bootscripts-20240825
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="symlinks.html" title=
+ "Управление устройствами">След.</a>
+ <p>
+ Управление устройствами
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-udev" name="ch-config-udev"></a>9.3. Взаимодействие с
+ устройствами и модулями
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ В <a class="xref" href="../chapter08/chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Глава&nbsp;8</a>,
+ мы установили демон udev во время сборки <span class=
+ "phrase">udev</span> . Прежде чем мы углубимся в детали того, как
+ работает udev, необходимо кратко рассказать о предыдущих методах
+ взаимодействия с устройствами.
+ </p>
+ <p>
+ Системы Linux традиционно использовали метод статического создания
+ устройств, при котором огромное количество узлов устройств(иногда
+ буквально тысячи узлов) создавалось в <code class=
+ "filename">/dev</code>, независимо от того, существовали ли
+ соответствующие аппаратные устройства на самом деле. Обычно это
+ делалось с помощью скрипта <span class=
+ "command"><strong>MAKEDEV</strong></span>, который содержал ряд
+ вызовов команды <span class="command"><strong>mknod</strong></span> с
+ соответствующими основными и второстепенными номерами устройств, для
+ всех возможных вариантов, которые только могут существовать в мире.
+ </p>
+ <p>
+ Используя метод udev, узлы устройств создаются только для тех
+ устройств, которые обнаружены ядром. Эти узлы устройств создаются
+ каждый раз при загрузке системы; они хранятся в файловой системе
+ <code class="systemitem">devtmpfs</code> (виртуальная файловая
+ система, которая полностью находится в оперативной памяти). Узлы не
+ занимают много места в памяти и их общий размер незначителен.
+ </p>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.3.1. История
+ </h2>
+ <p>
+ В феврале 2000 года, новая файловая система <code class=
+ "systemitem">devfs</code> была принята в ветку ядра 2.3.46 и была
+ доступна на протяжении выпуска стабильных релизов ветки 2.4. Хотя
+ она и присутствовала в ядре, такой способ динамического создания
+ устройств никогда не получал поддержки от разработчиков ядра.
+ </p>
+ <p>
+ Основная проблема с подходом, принятым <code class=
+ "systemitem">devfs</code> была связана с обработкой обнаружения,
+ создания и назначения имен устройствам. Проблема связанная с
+ именованием узлов была самой важной. Общепринято, что если имена
+ устройств можно настраивать, политика именования устройств должна
+ выбираться системными администраторами, а не навязываться
+ разработчиками. Файловая система <code class=
+ "systemitem">devfs</code> также страдала от состояния гонки,
+ присущего её архитектуре; оно не могло быть исправлено без
+ существенной переработки ядра. <code class=
+ "systemitem">devfs</code> долгое время была помечена как устаревшая
+ и, наконец, была удалена из ядра в июне 2006 года.
+ </p>
+ <p>
+ При разработке нестабильной ветки ядра 2.5, позднее, выпущенной как
+ стабильный релиз 2.6, появилась новая виртуальная файловая система
+ <code class="systemitem">sysfs</code>. Задача этой файловой системы
+ заключалась в предоставление информации о конфигурации оборудования
+ системы процессам пользовательского пространства. С помощью этого
+ представления, видимого в пользовательском пространстве, стало
+ возможным разработать замену пользовательского пространства для
+ <code class="systemitem">devfs</code>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.3.2. Реализация Udev
+ </h2>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.2.1. Sysfs
+ </h3>
+ <p>
+ Краткое описание файловой системы <code class=
+ "systemitem">sysfs</code> было представлено выше. Можно задаться
+ вопросом, как <code class="systemitem">sysfs</code> получает
+ информацию об устройствах в системе, и о том, какие номера
+ устройств должны использоваться для них. Драйверы,
+ скомпилированные в ядро, регистрируют свои объекты в <code class=
+ "systemitem">sysfs</code> (внутри <code class=
+ "systemitem">devtmpfs</code>), по мере обнаружения ядром. Для
+ драйверов, которые скомпилированы в виде модулей, регистрация
+ происходит при его загрузке. После монтирования файловой системы
+ <code class="systemitem">sysfs</code> (в каталог <code class=
+ "filename">/sys</code>), данные, зарегистрированные драйверами, в
+ <code class="systemitem">sysfs</code>, станут доступны для
+ пользовательского пространства и udevd для обработки (включая
+ модификацию узлов устройств).
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ <a id="ch-config-udev-device-node-creation" name=
+ "ch-config-udev-device-node-creation"></a>9.3.2.2. Создание узла
+ устройства
+ </h3>
+ <p>
+ Файлы устройств создаются ядром в файловой системе <code class=
+ "systemitem">devtmpfs</code>. Любой драйвер, которому необходимо
+ зарегистрировать узел устройства, будет использовать для этого
+ <code class="systemitem">devtmpfs</code> (через системный драйвер
+ ядра). Когда экземпляр <code class="systemitem">devtmpfs</code>
+ монтируется в каталог <code class="filename">/dev</code>, узел
+ устройства будет доступен в пользовательском пространстве с
+ фиксированным именем, разрешениями и владельцем.
+ </p>
+ <p>
+ Через некоторое время, ядро отправит uevent в <span class=
+ "command"><strong>udevd</strong></span>. На основе правил,
+ которые указанны в файлах в каталогах <code class=
+ "filename">/etc/udev/rules.d</code>, <code class=
+ "filename">/lib/udev/rules.d</code>, и <code class=
+ "filename">/run/udev/rules.d</code>, <span class=
+ "command"><strong>udevd</strong></span> создаст дополнительные
+ символические ссылки на узлы устройств, или сменит разрешения,
+ владельца или группу, или изменит запись (имя) во внутренней базе
+ данных <span class="command"><strong>udevd</strong></span> для
+ этого объекта.
+ </p>
+ <p>
+ Правила в этих трёх каталогах пронумерованы и используются
+ совместно. Если <span class=
+ "command"><strong>udevd</strong></span> не может найти правило
+ для устройства, он оставит права доступа и владельца на
+ <code class="systemitem">devtmpfs</code>, которые были
+ установлены изначально.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ <a id="module-loading" name="module-loading"></a>9.3.2.3.
+ Загрузка модуля
+ </h3>
+ <p>
+ Драйверы устройств, скомпилированные в виде модулей ядра могут
+ содержать встроенные псевдонимы. Псевдонимы можно увидеть
+ просмотрев вывод программы <span class=
+ "command"><strong>modinfo</strong></span>, обычно они связаны со
+ специфичными для шины идентификаторами устройств, которые
+ поддерживается модулем. Например, драйвер <span class=
+ "emphasis"><em>snd-fm801</em></span> подерживает PCI устройства с
+ идентификатором поставщика 0x1319 и идентификатором устройства
+ 0x0801, и имеет псевдоним <code class=
+ "literal">pci:v00001319d00000801sv*sd*bc04sc01i*</code>. Для
+ большинства устройств, драйвер шины экспортирует псевдонимы
+ драйвера, которые будет обрабатывать устройство через
+ <code class="systemitem">sysfs</code>. Например, файл
+ <code class="filename">/sys/bus/pci/devices/0000:00:0d.0/modalias</code>
+ может содержать строку <code class=
+ "literal">pci:v00001319d00000801sv00001319sd00001319bc04sc01i00</code>.
+ Правила по умолчанию, которые предоставлены Udev, заставят
+ <span class="command"><strong>udevd</strong></span> вызвать
+ <span class="command"><strong>/sbin/modprobe</strong></span> с
+ содержимым, которое находится в значении переменной окружения
+ <code class="envar">MODALIAS</code> uevent (которое должно
+ совпадать с содержимым файла <code class=
+ "filename">modalias</code> в sysfs), тем самым загружая все
+ модули, чьи псевдонимы совпадают в строке после расширения
+ подстановочных знаков
+ </p>
+ <p>
+ В указанном примере, это означает, что в дополнение к
+ <span class="emphasis"><em>snd-fm801</em></span> будет загружен
+ устаревший (и нежелательный) драйвер <span class=
+ "emphasis"><em>forte</em></span>, если он будет доступен. Ниже
+ приведены способы, как можно предотвратить загрузку нежелательных
+ драйверов.
+ </p>
+ <p>
+ Само ядро также способно загружать модули для сетевых протоколов,
+ файловых систем и поддержки NLS по запросу.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.2.4. Работа с устройствами с горячей заменой или
+ динамическими устройствами
+ </h3>
+ <p>
+ При подключении устройства, например, MP3-плеер, к универсальной
+ последовательной шине (USB), ядро распознает, что устройство
+ подключено, и генерирует событие uevent. Затем это событие
+ обрабатывается <span class=
+ "command"><strong>udevd</strong></span>, как было описано выше.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.3.3. Проблемы с загрузкой модулей и созданием устройств
+ </h2>
+ <p>
+ Существует несколько возможных проблем, связанных с автоматическим
+ созданием узлов устройств.
+ </p>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.3.1. Модуль ядра не загружается автоматически
+ </h3>
+ <p>
+ Udev загрузит модуль только в том случае, если у него есть
+ псевдоним, специфичный для шины, и драйвер шины правильно
+ экспортирует необходимые псевдонимы в <code class=
+ "systemitem">sysfs</code>. В других случаях следует организовать
+ загрузку модуля иными способами. Известно, что, начиная с версии
+ Linux-6.10.5, udev, выполняет загрузку правильно написанных
+ драйверов для INPUT, IDE, PCI, USB, SCSI, SERIO, и FireWire
+ устройств.
+ </p>
+ <p>
+ Чтобы определить, имеет ли требуемый драйвер устройства
+ необходимую поддержку Udev, запустите <span class=
+ "command"><strong>modinfo</strong></span> с именем модуля в
+ качестве аргумента. Далее, попробуйте найти каталог устройства в
+ <code class="filename">/sys/bus</code> и проверьте, есть ли там
+ файл <code class="filename">modalias</code>.
+ </p>
+ <p>
+ Если файл <code class="filename">modalias</code> существует в
+ <code class="systemitem">sysfs</code>, то драйвер, который
+ поддерживает устройство, может обращаться к нему напрямую, но не
+ имеет псевдонима, это ошибка в драйвере. Загрузите драйвер без
+ помощи Udev и ожидайте, что проблема будет исправлена позднее.
+ </p>
+ <p>
+ Если же в каталоге <code class="filename">/sys/bus</code> нет
+ файла <code class="filename">modalias</code>, это означает, что
+ разработчики ядра еще не добавили поддержку <code class=
+ "filename">modalias</code> к этому типу шины. В Linux-6.10.5 это
+ относится к шиной ISA. Ожидайте, что эта проблема будет
+ исправлена в более поздних версиях ядра.
+ </p>
+ <p>
+ Udev не предназначен для загрузки драйверов <span class=
+ "quote">«<span class="quote">обёрток</span>»</span>, таких как
+ <span class="emphasis"><em>snd-pcm-oss</em></span> и не
+ аппаратных драйверов, например, <span class=
+ "emphasis"><em>loop</em></span>.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.3.2. Модуль ядра не загружается автоматически и Udev не
+ предназначен для его загрузки
+ </h3>
+ <p>
+ Если модуль <span class="quote">«<span class=
+ "quote">обёртка</span>»</span> только расширяет функциональность,
+ предоставляемую каким-либо другим модулем (например модуль
+ <span class="emphasis"><em>snd-pcm-oss</em></span> расширяет
+ функциональность модуля <span class=
+ "emphasis"><em>snd-pcm</em></span>, давая возможность звуковым
+ картам быть доступными для OSS приложений), настройте
+ <span class="command"><strong>modprobe</strong></span> для
+ загрузки оболочки после того, как Udev загрузит обернутый модуль.
+ Для этого добавьте строку <span class="quote">«<span class=
+ "quote">softdep</span>»</span> в файл, который находится в
+ каталоге <code class="filename">/etc/modprobe.d/<em class=
+ "replaceable"><code>&lt;filename&gt;</code></em>.conf</code>.
+ Например:
+ </p>
+ <pre class="screen"><code class=
+ "literal">softdep snd-pcm post: snd-pcm-oss</code></pre>
+ <p>
+ Обратите внимание, что команда <span class="quote">«<span class=
+ "quote">softdep</span>»</span> разрешает добавлять <code class=
+ "literal">pre:</code> зависимости, или одновременно <code class=
+ "literal">pre:</code> и <code class="literal">post:</code>
+ зависимости. Обратитесь к документации <a class="ulink" href=
+ "https://man.archlinux.org/man/modprobe.d.5">modprobe.d(5)</a>
+ для изучения синтаксиса и возможностей <span class=
+ "quote">«<span class="quote">softdep</span>»</span>.
+ </p>
+ <p>
+ Если рассматриваемый модуль не является обёрткой, и полезен сам
+ по себе, настройте загрузочный скрипт <span class=
+ "command"><strong>modules</strong></span>, чтобы он
+ инициализировался при загрузке системы. Для этого добавьте имя
+ модуля в файл <code class=
+ "filename">/etc/sysconfig/modules</code> в отдельной строке. Этот
+ способ сработает и для модулей-обёрток, но не является
+ оптимальным.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.3.3. Udev загружает какой-то нежелательный модуль
+ </h3>
+ <p>
+ Либо не создавайте модуль, либо занесите его в черный список в
+ файле <code class=
+ "filename">/etc/modprobe.d/blacklist.conf</code>, как это сделано
+ с модулем <span class="emphasis"><em>forte</em></span> в примере
+ ниже:
+ </p>
+ <pre class="screen"><code class=
+ "literal">blacklist forte</code></pre>
+ <p>
+ Модули, занесенные в черный список, можно загрузить вручную с
+ помощью явной команды <span class=
+ "command"><strong>modprobe</strong></span>.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.3.4. Udev неправильно создает устройство или делает
+ неправильную символическую ссылку
+ </h3>
+ <p>
+ Это обычно происходит, если правило неожиданно совпадает с другим
+ устройством. Например, плохо написанное поставщиком оборудования
+ правило может соответствовать как диску SCSI(искомое устройство),
+ так и универсальному устройству SCSI (неправильно). Найдите
+ ошибочное правило и исправьте его с помощью команды <span class=
+ "command"><strong>udevadm info</strong></span>.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.3.5. Правило Udev работает ненадежно
+ </h3>
+ <p>
+ Это может быть проявлением предыдущей проблемы. В ином случае,
+ если правило использует атрибуты файловой системы <code class=
+ "systemitem">sysfs</code>, то это может быть проблемой
+ синхронизации ядра, которая будет исправлена в более поздних
+ версиях ядра. Но вы можете обойти проблему, создав правило,
+ которое ожидает используемый атрибут <code class=
+ "systemitem">sysfs</code> и добавляет его к файлу правил
+ <code class=
+ "filename">/etc/udev/rules.d/10-wait_for_sysfs.rules</code>
+ (создайте его, если файл не существует). Пожалуйста, сообщите в
+ списке рассылки разработчиков LFS, если это решение вам поможет.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.3.6. Udev не создаёт устройство
+ </h3>
+ <p>
+ Во-первых, убедитесь, что драйвер встроен в ядро или уже загружен
+ как модуль, и, что udev не создает устройство с неправильным
+ именем.
+ </p>
+ <p>
+ Если драйвер ядра не экспортирует свои данные в <code class=
+ "systemitem">sysfs</code>, udev не хватает информации,
+ необходимой для создания узла устройства. Это, вероятнее всего,
+ произойдет со сторонними драйверами, которых нет в дереве
+ исходного кода ядра. Создайте статический узел в каталоге
+ <code class="filename">/usr/lib/udev/devices</code> с
+ соответствующими старшим/младшим номерами (смотрите файл
+ devices.txt в документации к ядру или документации,
+ предоставленной сторонним поставщиком драйвера). Статический узел
+ будет скопирован в <code class="filename">/dev</code> с помощью
+ <span class="command"><strong>udev</strong></span>.
+ </p>
+ </div>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.3.3.7. Порядок присвоения имен устройствам меняется случайным
+ образом после перезагрузки
+ </h3>
+ <p>
+ Это связано с тем, что udev обрабатывает события uevents и
+ загружает модули параллельно, а значит в непредсказуемом порядке.
+ Это никогда не будет <span class="quote">«<span class=
+ "quote">исправлено</span>»</span>. Вы не должны полагаться на то
+ что имена устройств ядра стабильны. Вместо этого создайте свои
+ собственные правила, которые делают символические ссылки со
+ стабильными именами на основе некоторых неизменяемых атрибутов
+ устройства, таких как серийный номер или вывод различных утилит
+ *_id, установленных Udev. Смотрите <a class="xref" href=
+ "symlinks.html" title=
+ "9.4. Управление устройствами">Раздел&nbsp;9.4, «Управление
+ устройствами»</a> и <a class="xref" href="network.html" title=
+ "9.5. Настройка сети">Раздел&nbsp;9.5, «Настройка сети»</a> для
+ примера.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.3.4. Полезная информация
+ </h2>
+ <p>
+ Дополнительную документацию можно получить на следующих сайтах:
+ </p>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ Реализация пользовательского пространства в <code class=
+ "systemitem">devfs</code> <a class="ulink" href=
+ "http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf">
+ http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf</a>
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Файловая система <code class="systemitem">sysfs</code>
+ <a class="ulink" href=
+ "https://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf">
+ https://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf</a>
+ </p>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="bootscripts.html" title=
+ "LFS-Bootscripts-20240825">Пред.</a>
+ <p>
+ LFS-Bootscripts-20240825
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="symlinks.html" title=
+ "Управление устройствами">След.</a>
+ <p>
+ Управление устройствами
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter09/usage.html b/lfs-12.2-sysv/chapter09/usage.html
new file mode 100644
index 0000000..cd9a64d
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/usage.html
@@ -0,0 +1,1081 @@
+<!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>
+ 9.6. Настройка и использование загрузочных скриптов System V
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="network.html" title=
+ "Настройка сети">Пред.</a>
+ <p>
+ Настройка сети
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="locale.html" title=
+ "Настройка системной локали">След.</a>
+ <p>
+ Настройка системной локали
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-usage" name="ch-config-usage"></a>9.6. Настройка и
+ использование загрузочных скриптов System V
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.6.1. Как работают загрузочные скрипты System V?
+ </h2>
+ <p>
+ В этой версии LFS используется специальное средство загрузки под
+ названием SysVinit, основанное на наборе уровней выполнения
+ (<span class="emphasis"><em>run-levels</em></span>). Процедура
+ загрузки может сильно отличаться от одной системы к другой; и тот
+ факт, что в конкретном дистрибутиве Linux все работало должным
+ образом, не гарантирует, что оно будут работать так же в LFS. LFS
+ работает по-своему, но соблюдает общепринятые стандарты.
+ </p>
+ <p>
+ Существует альтернативная система загрузки, которая называется
+ <span class="command"><strong>systemd</strong></span>. Мы не будем
+ обсуждать этот вариант загрузки здесь. Для получения подробного
+ описания, посетите <a class="ulink" href=
+ "https://www.linux.com/training-tutorials/understanding-and-using-systemd/">
+ https://www.linux.com/training-tutorials/understanding-and-using-systemd/</a>.
+ </p>
+ <p>
+ SysVinit (в дальнейшем именуемый <span class="quote">«<span class=
+ "quote">init</span>»</span>) использует схему уровней выполнения.
+ Существует семь уровней выполнения, пронумерованных от 0 до 6. (На
+ самом деле уровней больше, но они предназначены для особых случаев
+ и обычно не используются. Подробности смотрите в руководстве
+ <a class="ulink" href=
+ "https://man.archlinux.org/man/init.8">init(8)</a>). Каждый из них
+ соответствует действиям, которые компьютер должен выполнить при
+ запуске и выключении. Уровень выполнения по умолчанию — 3. Ниже
+ приведено описание различных уровней в том виде, в каком они
+ реализованы в LFS:
+ </p>
+ <div class="literallayout">
+ <p>
+ 0:&nbsp;выключение&nbsp;компьютера<br />
+ 1:&nbsp;однопользовательский&nbsp;режим<br />
+ 2:&nbsp;зарезервировано&nbsp;для&nbsp;настройки,&nbsp;в&nbsp;остальном&nbsp;аналогично&nbsp;3<br />
+
+ 3:&nbsp;многопользовательский&nbsp;режим&nbsp;с&nbsp;поддержкой&nbsp;сети<br />
+
+ 4:&nbsp;зарезервировано&nbsp;для&nbsp;настройки,&nbsp;в&nbsp;остальном&nbsp;аналогично&nbsp;3<br />
+
+ 5:&nbsp;то&nbsp;же,&nbsp;что&nbsp;и&nbsp;4,&nbsp;обычно&nbsp;используется&nbsp;для&nbsp;входа&nbsp;в&nbsp;систему&nbsp;с&nbsp;графическим&nbsp;интерфейсом&nbsp;(например,&nbsp;<br />
+
+ <span class=
+ "command"><strong>gdm</strong></span>&nbsp;от&nbsp;GNOME&nbsp;или&nbsp;<span class="command"><strong>lxdm</strong></span>&nbsp;от&nbsp;LXDE)<br />
+
+ 6:&nbsp;перезагрузка&nbsp;компьютера
+ </p>
+ </div>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Раньше, много лет назад, уровень выполнения 2 обозначался как
+ <span class="quote">«<span class="quote">многопользовательский
+ режим без поддержки сети</span>»</span>, тогда, несколько
+ пользователей могли подключаться к системе через последовательные
+ порты. В сегодняшних условиях это не имеет смысла, и мы
+ обозначаем этот уровень как <span class="quote">«<span class=
+ "quote">зарезервировано</span>»</span>.
+ </p>
+ </div>
+ </div>
+ <div class="configuration" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="conf-sysvinit" name="conf-sysvinit"></a>9.6.2. Настройка
+ SysVinit
+ </h2>
+ <p>
+ Во время инициализации ядра первой запускаемой программой (если она
+ не переопределена в командной строке) является <span class=
+ "command"><strong>init</strong></span>. Эта программа считывает
+ файл инициализации <code class="filename">/etc/inittab</code>.
+ Создайте этот файл:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/inittab &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/inittab
+
+id:3:initdefault:
+
+si::sysinit:/etc/rc.d/init.d/rc S
+
+l0:0:wait:/etc/rc.d/init.d/rc 0
+l1:S1:wait:/etc/rc.d/init.d/rc 1
+l2:2:wait:/etc/rc.d/init.d/rc 2
+l3:3:wait:/etc/rc.d/init.d/rc 3
+l4:4:wait:/etc/rc.d/init.d/rc 4
+l5:5:wait:/etc/rc.d/init.d/rc 5
+l6:6:wait:/etc/rc.d/init.d/rc 6
+
+ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
+
+su:S06:once:/sbin/sulogin
+s1:1:respawn:/sbin/sulogin
+
+1:2345:respawn:/sbin/agetty --noclear tty1 9600
+2:2345:respawn:/sbin/agetty tty2 9600
+3:2345:respawn:/sbin/agetty tty3 9600
+4:2345:respawn:/sbin/agetty tty4 9600
+5:2345:respawn:/sbin/agetty tty5 9600
+6:2345:respawn:/sbin/agetty tty6 9600
+
+# End /etc/inittab</code>
+EOF</kbd></pre>
+ <p>
+ Пояснения по содержимому этого файла инициализации находится на
+ справочной странице <span class="emphasis"><em>inittab</em></span>.
+ Для LFS основной командой является <span class=
+ "command"><strong>rc</strong></span>. В приведенном выше файле
+ инициализации, <span class="command"><strong>rc</strong></span>
+ будет выполнять все сценарии, начинающиеся с символа S в каталоге
+ <code class="filename">/etc/rc.d/rcS.d</code>, за которыми следуют
+ все скрипты, начинающиеся с S в каталоге <code class=
+ "filename">/etc/rc.d/rc?.d</code>, где знак вопроса задается
+ значением initdefault.
+ </p>
+ <p>
+ Для удобства, скрипт <span class=
+ "command"><strong>rc</strong></span> считывает библиотеку функций
+ из <code class="filename">/lib/lsb/init-functions</code>. Эта
+ библиотека также читает необязательный файл конфигурации
+ <code class="filename">/etc/sysconfig/rc.site</code>. В этот файл
+ можно поместить любой из параметров конфигурации системы, описанных
+ в последующих разделах, что позволяет объединить все параметры
+ системы в одном файле.
+ </p>
+ <p>
+ Для удобства отладки скрипт functions также записывает весь вывод в
+ <code class="filename">/run/var/bootlog</code>. Поскольку каталог
+ <code class="filename">/run</code> является tmpfs, этот файл не
+ сохраняется при загрузке; однако его содержимое добавляется в файл
+ <code class="filename">/var/log/boot.log</code> по окончании
+ процесса загрузки.
+ </p>
+ <div class="sect3">
+ <h3 class="sect3">
+ <a id="init-levels" name="init-levels"></a>9.6.2.1. Изменение
+ уровней выполнения
+ </h3>
+ <p>
+ Изменить уровень выполнения можно с помощью команды <span class=
+ "command"><strong>init <em class=
+ "replaceable"><code>&lt;runlevel&gt;</code></em></strong></span>,
+ где <em class="replaceable"><code>&lt;runlevel&gt;</code></em> -
+ это целевой уровнем выполнения. Например, чтобы перезагрузить
+ компьютер, пользователь должен выполнить команду <span class=
+ "command"><strong>init 6</strong></span>, которая является
+ псевдонимом для команды <span class=
+ "command"><strong>reboot</strong></span>. Аналогично, init 0
+ является псевдонимом для команды <span class=
+ "command"><strong>halt</strong></span>.
+ </p>
+ <p>
+ В каталоге <code class="filename">/etc/rc.d</code> есть ещё
+ несколько каталогов, которые выглядят как <code class=
+ "filename">rc?.d</code> (где ? - номер уровня выполнения), все
+ они содержат ряд символических ссылок. Некоторые ссылки
+ начинаются с <span class="emphasis"><em>K</em></span>, другие
+ начинаются с <span class="emphasis"><em>S</em></span>, и все они
+ содержат две цифры после начальной буквы. K означает остановить
+ (убить) службу, а S означает запустить службу. Числа определяют
+ порядок выполнения сценариев от 00 до 99—чем меньше число, тем
+ раньше запускается скрипт. Когда <span class=
+ "command"><strong>init</strong></span> переключается на другой
+ уровень выполнения, соответствующие службы либо запускаются, либо
+ останавливаются, в зависимости от выбранного уровня выполнения.
+ </p>
+ <p>
+ Реальные скрипты находятся в каталоге <code class=
+ "filename">/etc/rc.d/init.d</code>. Они выполняют фактическую
+ работу, и символические ссылки указывают на них. Ссылки К и S
+ указывают на один и тот же скрипт в <code class=
+ "filename">/etc/rc.d/init.d</code>. Это связано с тем, что
+ скрипты могут вызываться с разными параметрами, такими как
+ <em class="parameter"><code>start</code></em>, <em class=
+ "parameter"><code>stop</code></em>, <em class=
+ "parameter"><code>restart</code></em>, <em class=
+ "parameter"><code>reload</code></em>, и <em class=
+ "parameter"><code>status</code></em>. Когда встречается ссылка K,
+ соответствующий скрипт запускается с аргументом <em class=
+ "parameter"><code>stop</code></em>. Когда встречается S-ссылка,
+ соответствующий скрипт запускается с аргументом <em class=
+ "parameter"><code>start</code></em>.
+ </p>
+ <p>
+ Ниже приведено описание к аргументам скриптов:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>start</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Служба запущена.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>stop</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Служба остановлена.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>restart</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Служба остановлена и снова запущена.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>reload</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Конфигурация сервиса обновлена. Используется после
+ изменения файла конфигурации службы, когда перезапуск не
+ требуется.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>status</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Сообщает, запущена ли служба и с какими ИД процессов.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Не стесняйтесь изменять работу процесса загрузки (в конце концов,
+ это ваша собственная система LFS). Приведенные здесь файлы
+ являются примером того, как это можно сделать.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.6.3. Загрузочные скрипты Udev
+ </h2>
+ <p>
+ Инит-скрипт <code class="filename">/etc/rc.d/init.d/udev</code>
+ запускает <span class="command"><strong>udevd</strong></span>,
+ который инициализирует все устройства "холодного подключения",
+ которые уже были созданы ядром, и ожидает выполнения всех правил.
+ Скрипт также отключает обработчик uevent по умолчанию <code class=
+ "filename">/sbin/hotplug</code>. Это сделано потому, что ядру
+ больше не нужно обращаться к внешнему бинарному файлу. Вместо этого
+ <span class="command"><strong>udevd</strong></span> будет
+ прослушивать сокет netlink на предмет событий, которые вызывает
+ ядро.
+ </p>
+ <p>
+ Инит-скрипт <span class=
+ "command"><strong>/etc/rc.d/init.d/udev_retry</strong></span>
+ решает задачу повторного запуска событий для подсистем, правила
+ которых могут зависеть от файловых систем, которые не монтируются
+ до запуска скрипта <span class=
+ "command"><strong>mountfs</strong></span> (в частности, его
+ вызывают <code class="filename">/usr</code> и <code class=
+ "filename">/var</code>). Этот скрипт запускается после скрипта
+ <span class="command"><strong>mountfs</strong></span>, поэтому эти
+ правила (при повторном запуске) должны сработать во второй раз. Он
+ настраивается в файле <code class=
+ "filename">/etc/sysconfig/udev_retry</code>; любые слова в этом
+ файле, кроме комментариев, являются именами подсистем, которые
+ запускаются при повторной попытке. Чтобы найти подсистему
+ устройства, используйте <span class="command"><strong>udevadm info
+ --attribute-walk &lt;device&gt;</strong></span>, где &lt;device&gt;
+ - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или
+ /sys/class/rtc.
+ </p>
+ <p>
+ Для получения информации о загрузке модуля ядра и udev смотрите
+ <a class="xref" href="udev.html#module-loading" title=
+ "9.3.2.3. Загрузка модуля">Раздел&nbsp;9.3.2.3, «Загрузка
+ модуля»</a>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-clock" name="ch-config-clock"></a>9.6.4. Настройка
+ системного времени
+ </h2>
+ <p>
+ Скрипт <span class="command"><strong>setclock</strong></span>
+ считывает время с аппаратных часов, также известных как часы BIOS
+ или CMOS (Complementary Metal Oxide Semiconductor). Если на
+ аппаратных часах установлено время UTC (всемирное скоординированное
+ время), этот скрипт преобразует полученное значение в локальное
+ время, используя файл <code class="filename">/etc/localtime</code>
+ (который сообщает программе <span class=
+ "command"><strong>hwclock</strong></span>, в какой временной зоне
+ находится пользователь). Невозможно определить, установленное на
+ аппаратных часах время UTC или же локальное, поэтому необходимо
+ указать его вручную.
+ </p>
+ <p>
+ Скрипт <span class="command"><strong>setclock</strong></span>
+ запускается системой <span class="application">udev</span> при
+ загрузке, когда ядро определяет возможности аппаратного
+ обеспечения. Также его можно запустить вручную с параметром stop,
+ чтобы сохранить системное время в аппаратные часы CMOS.
+ </p>
+ <p>
+ Если Вы не можете вспомнить, установлено на аппаратных часах UTC
+ или локальное время, запустите команду <strong class=
+ "userinput"><code>hwclock --localtime --show</code></strong>. Она
+ отобразит текущее время в соответствии с аппаратными часами. Если
+ оно совпадает с тем, что показывают ваши настенные/наручные часы,
+ значит на часах CMOS установлено локальное время. Если вывод
+ <span class="command"><strong>hwclock</strong></span> не совпадает
+ с локальным временем, скорее всего, это UTC. Проверьте это, добавив
+ или вычитая нужное количество часов для вашего часового пояса ко
+ времени, отображаемому <span class=
+ "command"><strong>hwclock</strong></span>. Например, если ваш
+ часовой пояс это MSK, также известный как GMT +0300, то нужно
+ вычесть три часа из локального времени.
+ </p>
+ <p>
+ Измените значение переменной <code class="envar">UTC</code> ниже на
+ <em class="parameter"><code>0</code></em> (ноль), если на
+ аппаратных часах установлено <span class=
+ "emphasis"><em>НЕ</em></span> UTC.
+ </p>
+ <p>
+ Создайте новый файл <code class=
+ "filename">/etc/sysconfig/clock</code> выполнив:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/clock &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/clock
+
+UTC=1
+
+# Set this to any options you might need to give to hwclock,
+# such as machine hardware clock type for Alphas.
+CLOCKPARAMS=
+
+# End /etc/sysconfig/clock</code>
+EOF</kbd></pre>
+ <p>
+ Хороший совет, объясняющий, как обращаться с временем в LFS,
+ доступен по адресу <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt">
+ https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt</a>.
+ Там объясняются такие вопросы, как часовые пояса, UTC и переменная
+ окружения <code class="envar">TZ</code>.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Параметры CLOCKPARAMS и UTC также могут быть указаны в файле
+ <code class="filename">/etc/sysconfig/rc.site</code>.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-console" name="ch-config-console"></a>9.6.5.
+ Настройка консоли Linux
+ </h2>
+ <p>
+ Эта секция описывает настройку скрипта <span class=
+ "command"><strong>console</strong></span>, который устанавливает
+ раскладку клавиатуры, шрифт консоли и уровень подробности
+ информации, выводимой ядром на консоль. Если Вы не планируете
+ использовать символы, не соответствующие стандарту ASCII (например,
+ знак копирайта, символы фунта и евро), и собираетесь печатать
+ только в английской раскладке, то можете пропустить большую часть
+ секции. Без файла конфигурации (или эквивалентных настроек в
+ <code class="filename">rc.site</code>), скрипт <span class=
+ "command"><strong>console</strong></span> не будет ничего делать.
+ </p>
+ <p>
+ Скрипт <span class="command"><strong>console</strong></span>
+ считывает конфигурацию из файла <code class=
+ "filename">/etc/sysconfig/console</code>. Решите для себя, какую
+ раскладку клавиатуры и какой шрифт намерены использовать. В этом
+ также могут помочь различные HOWTO для конкретных языков; смотрите
+ <a class="ulink" href=
+ "https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html">https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html</a>.
+ Если вы все еще сомневаетесь, посмотрите в каталогах <code class=
+ "filename">/usr/share/keymaps</code> и <code class=
+ "filename">/usr/share/consolefonts</code> допустимые раскладки и
+ экранные шрифты. Прочтите справочные страницы <a class="ulink"
+ href="https://man.archlinux.org/man/loadkeys.1">loadkeys(1)</a> и
+ <a class="ulink" href=
+ "https://man.archlinux.org/man/setfont.8">setfont(8)</a>, чтобы
+ определить правильные аргументы для этих программ.
+ </p>
+ <p>
+ Файл <code class="filename">/etc/sysconfig/console</code> должен
+ содержать строки вида: <code class=
+ "envar">ПЕРЕМЕННАЯ=значение</code>. Допустимы следующие переменные:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">LOGLEVEL</span>
+ </dt>
+ <dd>
+ <p>
+ Эта переменная задает уровень подробности сообщений,
+ посылаемых ядром на системную консоль. Значение этой
+ переменной передается в качестве аргумента утилите
+ <span class="command"><strong>dmesg -n</strong></span>.
+ Допустимы уровни от <code class="literal">1</code>(нет
+ сообщений) до <code class="literal">8</code>. По умолчанию
+ <code class="literal">7</code>, что является довольно
+ подробным.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">KEYMAP</span>
+ </dt>
+ <dd>
+ <p>
+ Эта переменная указывает аргументы для программы <span class=
+ "command"><strong>loadkeys</strong></span>, обычно это имя
+ загружаемой раскладки, например, <code class=
+ "literal">it</code>. Если эта переменная не установлена,
+ загрузочный скрипт не будет запускать программу loadkeys, и
+ будет использоваться раскладка по умолчанию. Обратите
+ внимание, что некоторые раскладки имеют несколько версий с
+ одним и тем же именем (cz и его варианты в qwerty/ и qwertz/,
+ es в olpc/ и qwerty/ и trf в fgGIod/ и qwerty/). В этих
+ случаях также следует указать родительский каталог (например,
+ qwerty/es), чтобы обеспечить загрузку правильной раскладки.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">KEYMAP_CORRECTIONS</span>
+ </dt>
+ <dd>
+ <p>
+ Эта (крайне редко используемая) переменная задает аргументы
+ для второго вызова программы <span class=
+ "command"><strong>loadkeys</strong></span>. Она полезна, если
+ стандартная раскладка вас не совсем устраивает и необходимо
+ внести небольшую корректировку. Например, чтобы добавить
+ символ евро в раскладку, которая его не содержит, присвойте
+ этой переменной значение <code class="literal">euro2</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">FONT</span>
+ </dt>
+ <dd>
+ <p>
+ Эта переменная определяет аргументы для программы
+ <span class="command"><strong>setfont</strong></span>. Обычно
+ она включает в себя имя шрифта <code class=
+ "literal">-m</code> и имя загружаемой таблицы символов.
+ Например, чтобы загрузить шрифт <span class=
+ "quote">«<span class="quote">lat1-16</span>»</span> вместе с
+ таблицей символов <span class="quote">«<span class=
+ "quote">8859-1</span>»</span> (подходит для США), установите
+ эту переменную в <code class="literal">lat1-16 -m
+ 8859-1</code>. В режиме UTF-8 ядро использует таблицу
+ символов для преобразования 8-битных кодов клавиш в UTF-8,
+ поэтому аргумент параметра "-m" должен быть установлен на
+ кодировку соответствующих кодов клавиш в раскладке.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">UNICODE</span>
+ </dt>
+ <dd>
+ <p>
+ Присвойте этой переменной значение <code class=
+ "literal">1</code>, <code class="literal">yes</code> или
+ <code class="literal">true</code>, чтобы переключить консоль
+ в режим UTF-8. Это полезно при использовании локали,
+ основанной на UTF-8, и не рекомендуется в иных случаях.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">LEGACY_CHARSET</span>
+ </dt>
+ <dd>
+ <p>
+ Для многих раскладок клавиатуры в пакете Kbd не существует
+ готового Unicode-варианта. Скрипт <span class=
+ "command"><strong>console</strong></span> будет на лету
+ конвертировать имеющуюся раскладку в UTF-8, если присвоить
+ этой переменной имя доступной не-UTF-8 раскладки.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Несколько примеров:
+ </p>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ Мы будем использовать <code class="literal">C.UTF-8</code> в
+ качестве локали для интерактивных сеансов в консоли Linux в
+ <a class="xref" href="locale.html" title=
+ "9.7. Настройка системной локали">Раздел&nbsp;9.7, «Настройка
+ системной локали,»</a>, поэтому нам следует установить
+ значение переменной <code class="literal">UNICODE</code> в
+ <code class="literal">1</code>. Консольные шрифты,
+ поставляемые пакетом <span class="application">Kbd</span>,
+ содержащие глифы для всех символов сообщений программы в
+ <code class="literal">C.UTF-8</code> являются <code class=
+ "filename">LatArCyrHeb*.psfu.gz</code>, <code class=
+ "filename">LatGrkCyr*.psfu.gz</code>, <code class=
+ "filename">Lat2-Terminus16.psfu.gz</code> и <code class=
+ "filename">pancyrillic.f16.psfu.gz</code> из каталога
+ <code class="filename">/usr/share/consolefonts</code> (в
+ других поставляемых консольных шрифтах отсутствуют глифы
+ некоторых символов Unicode, таких как левые/правые кавычки и
+ английское тире). Поэтому установите один из них, например
+ <code class="filename">Lat2-Terminus16.psfu.gz</code>, в
+ качестве шрифта консоли по умолчанию:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+FONT="Lat2-Terminus16"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Для русскоязычных пользователей может подойти такой вариант:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="ruwin_alt_sh-UTF-8"
+FONT="cyr-sun16"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Для поиска нужной раскладки, выполните команду:
+ <span class="command"><strong>find /usr/share/keymaps -type
+ f</strong></span>
+ </p>
+ <p>
+ <code class="literal">ruwin_alt-UTF-8</code> - переключение
+ раскладки по Alt.
+ </p>
+ <p>
+ <code class="literal">ruwin_alt_sh-UTF-8</code> -
+ переключение раскладки по Alt+Shift.
+ </p>
+ <p>
+ <code class="literal">ruwin_cplk-UTF-8</code> -
+ переключение раскладки по Caps Lock.
+ </p>
+ <p>
+ <code class="literal">ruwin_ct_sh-UTF-8</code> -
+ переключение раскладки по Ctrl+Shift.
+ </p>
+ <p>
+ <code class="literal">ruwin_ctrl-UTF-8</code> -
+ переключение раскладки по Ctrl.
+ </p>
+ <p>
+ Посмотреть список доступных шрифтов можно с помощью
+ следующей команды: <span class="command"><strong>ls
+ /usr/share/consolefonts</strong></span>
+ </p>
+ </div>
+ </li>
+ <li class="listitem">
+ <p>
+ Для не-Unicode настройки необходимы только переменные KEYMAP
+ и FONT. Например, для польских пользователей может подойти
+ такой вариант:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+KEYMAP="pl2"
+FONT="lat2a-16 -m 8859-2"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Как упоминалось выше, иногда бывает необходимо
+ подкорректировать раскладку. Следующий пример добавляет
+ символ евро к немецкой раскладке:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+KEYMAP="de-latin1"
+KEYMAP_CORRECTIONS="euro2"
+FONT="lat0-16 -m 8859-15"
+UNICODE="1"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Ниже приведен пример с поддержкой Unicode для болгарского
+ языка, где существует стандартная раскладка UTF-8:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="bg_bds-utf8"
+FONT="LatArCyrHeb-16"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Из-за использования 512-символьного шрифта LatArCyrHeb-16 в
+ предыдущем примере, яркие цвета больше не доступны в консоли
+ Linux, если используется фреймбуфер. Если Вы хотите
+ использовать яркие цвета без фреймбуфера и можете обходиться
+ без символов, не относящихся к вашему языку, тогда можно
+ использовать специфичный для вашего языка 256-символьный
+ шрифт, как показано ниже:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="bg_bds-utf8"
+FONT="cyr-sun16"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Следующий пример демонстрирует автоматическое преобразование
+ раскладки из ISO-8859-15 в UTF-8 и включает "мертвые" клавиши
+ в режиме Unicode:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="de-latin1"
+KEYMAP_CORRECTIONS="euro2"
+LEGACY_CHARSET="iso-8859-15"
+FONT="LatArCyrHeb-16 -m 8859-15"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Некоторые раскладки включают в себя "мертвые" клавиши (то
+ есть клавиши, нажатие которых само по себе не приводит к
+ появлению на экране символа, но которые влияют на символ,
+ генерируемый следующей клавишей) или определяют слияние
+ символов (например: <span class="quote">«<span class=
+ "quote">нажмите Ctrl+. A E чтобы получить Æ</span>»</span> в
+ раскладке по умолчанию). Linux-6.10.5 правильно
+ интерпретирует "мертвые" клавиши и слияния, только когда
+ исходные символы имеют 8-битные коды. Эта особенность не
+ влияет на раскладки для европейских языков, поскольку в них
+ "сливаются" два ASCII-символа или добавляются подчеркивания к
+ неподчеркнутым ASCII-символам. Однако, в режиме UTF-8 могут
+ быть проблемы, например, для греческого языка, когда
+ необходимо подчеркнуть символ α. Решением в этой ситуации
+ будет отказ от использования UTF-8 или установка графической
+ системы X Window, не имеющих подобных ограничений.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Для китайского, японского, корейского и некоторых других
+ языков невозможно настроить консоль Linux так, чтобы она
+ отображала все необходимые символы. Пользователи, которым
+ требуются эти языки, должны установить систему X Window,
+ шрифты, покрывающие необходимый диапазон символов, и
+ правильный метод ввода (например, SCIM поддерживает большое
+ число разнообразных языков).
+ </p>
+ </li>
+ </ul>
+ </div>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Файл <code class="filename">/etc/sysconfig/console</code>
+ управляет только локализацией текстовой консоли Linux. Он никак
+ не влияет на настройки раскладки клавиатуры и шрифтов в системе X
+ Window, в сессиях SSH или на последовательном терминале. В этих
+ ситуациях ограничения, описанные в двух расположенных выше
+ абзацах, не применяются.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-createfiles" name=
+ "ch-config-createfiles"></a>9.6.6. Создание файлов при загрузке
+ </h2>
+ <p>
+ Иногда необходимо создавать файлы во время загрузки. Например,
+ часто требуется каталог <code class=
+ "filename">/tmp/.ICE-unix</code> . Это можно сделать, создав запись
+ в скрипте <code class="filename">/etc/sysconfig/createfiles</code>.
+ Формат этого файла описан в комментариях файла конфигурации по
+ умолчанию.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-sysklogd" name="ch-config-sysklogd"></a>9.6.7.
+ Настройка скрипта Sysklogd
+ </h2>
+ <p>
+ Скрипт <code class="filename">sysklogd</code> вызывает программу
+ <span class="command"><strong>syslogd</strong></span> как часть
+ инициализации System V. Параметр <em class="parameter"><code>-m
+ 0</code></em> отключает периодическую (по умолчанию - каждые 20
+ минут) запись временных меток в файлы журналов, производимую
+ <span class="command"><strong>syslogd</strong></span>. Если Вам
+ необходимо включить периодическую запись временных меток,
+ отредактируйте файл <code class=
+ "filename">/etc/sysconfig/rc.site</code> и присвойте переменной
+ SYSKLOGD_PARMS требуемое значение. Например, чтобы сбросить все
+ параметры, присвойте переменной пустое значение:
+ </p>
+ <pre class="screen">SYSKLOGD_PARMS=</pre>
+ <p>
+ Дополнительные параметры смотрите в <strong class=
+ "userinput"><code>man syslogd</code></strong>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-site" name="ch-config-site"></a>9.6.8. Файл
+ rc.site
+ </h2>
+ <p>
+ Необязательный файл <code class=
+ "filename">/etc/sysconfig/rc.site</code> содержит настройки,
+ автоматически применяемые всеми загрузочными скриптами. Этот файл
+ может содержать парамеры, обычно указываемые в файлах <code class=
+ "filename">hostname</code>, <code class="filename">console</code> и
+ <code class="filename">clock</code> из каталога <code class=
+ "filename">/etc/sysconfig/</code>. Если значение одной и той же
+ переменной присваивается, как в одном из этих файлов, так и в
+ <code class="filename">rc.site</code>, приоритет имеет значение из
+ специализированного файла.
+ </p>
+ <p>
+ <code class="filename">rc.site</code> также содержит параметры,
+ которые могут настраивать другие аспекты процесса загрузки.
+ Установка переменной IPROMPT позволит выборочно запускать
+ загрузочные скрипты. Другие параметры описаны в комментариях к
+ файлу. Версия файла по умолчанию выглядит следующим образом:
+ </p>
+ <pre class="auto"># rc.site
+# Optional parameters for boot scripts.
+
+# Distro Information
+# These values, if specified here, override the defaults
+#DISTRO="Linux From Scratch" # The distro name
+#DISTRO_CONTACT="lfs-dev@lists.linuxfromscratch.org" # Bug report address
+#DISTRO_MINI="LFS" # Short name used in filenames for distro config
+
+# Define custom colors used in messages printed to the screen
+
+# Please consult `man console_codes` for more information
+# under the "ECMA-48 Set Graphics Rendition" section
+#
+# Warning: when switching from a 8bit to a 9bit font,
+# the linux console will reinterpret the bold (1;) to
+# the top 256 glyphs of the 9bit font. This does
+# not affect framebuffer consoles
+
+# These values, if specified here, override the defaults
+#BRACKET="\\033[1;34m" # Blue
+#FAILURE="\\033[1;31m" # Red
+#INFO="\\033[1;36m" # Cyan
+#NORMAL="\\033[0;39m" # Grey
+#SUCCESS="\\033[1;32m" # Green
+#WARNING="\\033[1;33m" # Yellow
+
+# Use a colored prefix
+# These values, if specified here, override the defaults
+#BMPREFIX=" "
+#SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} "
+#FAILURE_PREFIX="${FAILURE}*****${NORMAL} "
+#WARNING_PREFIX="${WARNING} *** ${NORMAL} "
+
+# Manually set the right edge of message output (characters)
+# Useful when resetting console font during boot to override
+# automatic screen width detection
+#COLUMNS=120
+
+# Interactive startup
+#IPROMPT="yes" # Whether to display the interactive boot prompt
+#itime="3" # The amount of time (in seconds) to display the prompt
+
+# The total length of the distro welcome string, without escape codes
+#wlen=$(echo "Welcome to ${DISTRO}" | wc -c )
+#welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"
+
+# The total length of the interactive string, without escape codes
+#ilen=$(echo "Press 'I' to enter interactive startup" | wc -c )
+#i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"
+
+# Set scripts to skip the file system check on reboot
+#FASTBOOT=yes
+
+# Skip reading from the console
+#HEADLESS=yes
+
+# Write out fsck progress if yes
+#VERBOSE_FSCK=no
+
+# Speed up boot without waiting for settle in udev
+#OMIT_UDEV_SETTLE=y
+
+# Speed up boot without waiting for settle in udev_retry
+#OMIT_UDEV_RETRY_SETTLE=yes
+
+# Skip cleaning /tmp if yes
+#SKIPTMPCLEAN=no
+
+# For setclock
+#UTC=1
+#CLOCKPARAMS=
+
+# For consolelog (Note that the default, 7=debug, is noisy)
+#LOGLEVEL=7
+
+# For network
+#HOSTNAME=mylfs
+
+# Delay between TERM and KILL signals at shutdown
+#KILLDELAY=3
+
+# Optional sysklogd parameters
+#SYSKLOGD_PARMS="-m 0"
+
+# Console parameters
+#UNICODE=1
+#KEYMAP="de-latin1"
+#KEYMAP_CORRECTIONS="euro2"
+#FONT="lat0-16 -m 8859-15"
+#LEGACY_CHARSET=
+
+</pre>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.6.8.1. Настройка скриптов загрузки и завершения работы
+ </h3>
+ <p>
+ Загрузочные скрипты LFS загружают и завершают работу системы
+ довольно эффективно, но есть несколько настроек, которые вы
+ можете внести в файл rc.site, чтобы еще больше повысить скорость
+ и настроить сообщения в соответствии с вашими предпочтениями.
+ Чтобы сделать это, измените настройки в приведенном выше файле
+ <code class="filename">/etc/sysconfig/rc.site</code>.
+ </p>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ Во время работы загрузочного скрипта <code class=
+ "filename">udev</code> происходит вызов <span class=
+ "command"><strong>udev settle</strong></span>, для
+ завершения которого требуется некоторое время. Это время
+ может и не потребоваться в зависимости от конфигурации
+ устройств в системе. Если у вас имеются только простые
+ разделы и одна сетевая карта, процессу загрузки, вероятно,
+ не нужно будет ждать завершения работы этой команды. Чтобы
+ пропустить её, установите переменную OMIT_UDEV_SETTLE=y.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Скрипт загрузки <code class="filename">udev_retry</code>
+ также по умолчанию запускает <span class=
+ "command"><strong>udev settle</strong></span>. Команда
+ необходима только тогда, когда каталог <code class=
+ "filename">/var</code> смонтирован в отдельный раздел. Это
+ связано с тем, что часам нужен доступ к файлу <code class=
+ "filename">/var/lib/hwclock/adjtime</code>. Для других
+ настроек также может потребоваться дождаться завершения
+ udev, но в большинстве случаев в этом нет необходимости.
+ Пропустите команду, установив переменную
+ OMIT_UDEV_RETRY_SETTLE=y.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ По умолчанию проверка файловой системы выполняется в
+ "тихом" режиме. Это может показаться задержкой во время
+ процесса загрузки. Чтобы включить вывод <span class=
+ "command"><strong>fsck</strong></span>, установите
+ переменную VERBOSE_FSCK=y.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ При перезагрузке вы, возможно, захотите полностью
+ пропустить проверку файловой системы, <span class=
+ "command"><strong>fsck</strong></span>. Чтобы сделать это,
+ либо создайте файл <code class="filename">/fastboot</code>,
+ либо перезагрузите систему командой <span class=
+ "command"><strong>/sbin/shutdown -f -r now</strong></span>.
+ С другой стороны, вы можете принудительно проверить все
+ файловые системы, создав <code class=
+ "filename">/forcefsck</code> или запустив <span class=
+ "command"><strong>shutdown</strong></span> с параметром
+ <em class="parameter"><code>-F</code></em> вместо
+ <em class="parameter"><code>-f</code></em>.
+ </p>
+ <p>
+ Установка переменной FASTBOOT=y отключит <span class=
+ "command"><strong>fsck</strong></span> во время процесса
+ загрузки до тех пор, пока она не будет удалена. Это не
+ рекомендуется делать на постоянной основе.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Обычно все файлы в каталоге <code class=
+ "filename">/tmp</code> удаляются во время загрузки. В
+ зависимости от количества имеющихся файлов или каталогов
+ это может привести к заметной задержке в процессе загрузки.
+ Чтобы пропустить удаление этих файлов, установите
+ переменную SKIPTMPCLEAN=y.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Во время завершения работы, <span class=
+ "command"><strong>init</strong></span> отправляет сигнал
+ TERM каждой запущенной программе (например, agetty),
+ ожидает установленное время (по умолчанию 3 секунды), затем
+ посылает каждому процессу сигнал завершения(KILL) и снова
+ ждёт. Этот процесс повторяется в сценарии <span class=
+ "command"><strong>sendsignals</strong></span> для любых
+ процессов, которые не завершаются их собственными
+ скриптами. Задержка для <span class=
+ "command"><strong>init</strong></span> может быть
+ установлена путем передачи параметра. Например, чтобы
+ устранить задержку в <span class=
+ "command"><strong>init</strong></span>, передайте параметр
+ -t0 при выключении или перезагрузке (например, <span class=
+ "command"><strong>/sbin/shutdown -t0 -r
+ now</strong></span>). Задержку для скрипта <span class=
+ "command"><strong>sendsignals</strong></span> можно
+ пропустить, установив параметр KILLDELAY=0.
+ </p>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="network.html" title=
+ "Настройка сети">Пред.</a>
+ <p>
+ Настройка сети
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="locale.html" title=
+ "Настройка системной локали">След.</a>
+ <p>
+ Настройка системной локали
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>