diff options
author | Sn4il <sn4il@thedroth.rocks> | 2024-03-06 10:25:41 +0300 |
---|---|---|
committer | Sn4il <sn4il@thedroth.rocks> | 2024-03-06 10:25:41 +0300 |
commit | 5a6834585c43296c2207f5f251d3d5c237c7c8d2 (patch) | |
tree | 5c3f9adc4c5fd0b3bdc3b017b021a36016c0f15b /lfs-12.1-sysv/chapter09 | |
parent | 2b6ec04f001bbdf660476a1275d90075d746833c (diff) | |
download | sn4il-site-5a6834585c43296c2207f5f251d3d5c237c7c8d2.tar.gz sn4il-site-5a6834585c43296c2207f5f251d3d5c237c7c8d2.zip |
Update LFS mirror
Diffstat (limited to 'lfs-12.1-sysv/chapter09')
-rw-r--r-- | lfs-12.1-sysv/chapter09/bootscripts.html | 513 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/chapter09.html | 115 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/etcshells.html | 111 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/inputrc.html | 156 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/introduction.html | 182 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/locale.html | 256 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/network.html | 342 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/symlinks.html | 430 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/udev.html | 490 | ||||
-rw-r--r-- | lfs-12.1-sysv/chapter09/usage.html | 1081 |
10 files changed, 3676 insertions, 0 deletions
diff --git a/lfs-12.1-sysv/chapter09/bootscripts.html b/lfs-12.1-sysv/chapter09/bootscripts.html new file mode 100644 index 0000000..ebcc945 --- /dev/null +++ b/lfs-12.1-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-20230728 + </title> + <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> + <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /> + <link rel="stylesheet" href="../stylesheets/lfs-print.css" type= + "text/css" media="print" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + </head> + <body class="lfs" id="lfs-12.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </h4> + <h3> + Глава 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.1">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ch-config-bootscripts" name="ch-config-bootscripts"></a>9.2. + LFS-Bootscripts-20230728 + </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">244 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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/chapter09.html b/lfs-12.1-sysv/chapter09/chapter09.html new file mode 100644 index 0000000..0d7f3eb --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </h4> + <h3> + Часть IV. Сборка системы 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= + "Часть IV. Сборка системы LFS">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.1">Начало</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-20230728</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= + "Часть IV. Сборка системы LFS">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/etcshells.html b/lfs-12.1-sysv/chapter09/etcshells.html new file mode 100644 index 0000000..0b95e4a --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </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.1">Начало</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 > /etc/shells << "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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/inputrc.html b/lfs-12.1-sysv/chapter09/inputrc.html new file mode 100644 index 0000000..f1d2811 --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </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.1">Начало</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 > /etc/inputrc << "EOF" +<code class="literal"># Begin /etc/inputrc +# Modified by Chris Lynn <roryo@roryo.dynup.net> + +# Разрешить перенос приглашения оболочки на следующую строку +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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/introduction.html b/lfs-12.1-sysv/chapter09/introduction.html new file mode 100644 index 0000000..69b8cfc --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </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-20230728">След.</a> + <p> + LFS-Bootscripts-20230728 + </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.1">Начало</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 — выключение<br /> + 1 — Однопользовательский режим<br /> + 2 — Определяемый пользователем<br /> + 3 — Полный многопользовательский режим<br /> + 4 — Определяемый пользователем<br /> + 5 — Полный многопользовательский режим с дисплей-менеджером<br /> + + 6 — перезагрузка + </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-20230728">След.</a> + <p> + LFS-Bootscripts-20230728 + </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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/locale.html b/lfs-12.1-sysv/chapter09/locale.html new file mode 100644 index 0000000..15d4163 --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </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.1">Начало</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><ll></code></em> + двухбуквенным кодом нужного вам языка (например <code class= + "literal">en</code>), а <em class= + "replaceable"><code><CC></code></em> двухбуквенным кодом + соответствующей страны (например <code class="literal">GB</code>). + <em class="replaceable"><code><charmap></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><locale name></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><locale name></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=<locale name> locale language +LC_ALL=<locale name> locale charmap +LC_ALL=<locale name> locale int_curr_symbol +LC_ALL=<locale name> 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 > /etc/profile << "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><ll>_<CC>.<charmap><@modifiers></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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/network.html b/lfs-12.1-sysv/chapter09/network.html new file mode 100644 index 0000000..c3cc258 --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </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.1">Начало</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.75. Udev из Systemd-255">Раздел 8.75, «Udev из + Systemd-255»</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 > ifconfig.<em class= +"replaceable"><code>eth0</code></em> << "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 > /etc/resolv.conf << "EOF" +<code class="literal"># Begin /etc/resolv.conf + +domain <em class="replaceable"><code><Ваше доменное имя></code></em> +nameserver <em class= +"replaceable"><code><IP-адрес вашего основного DNS-сервера></code></em> +nameserver <em class= +"replaceable"><code><IP-адрес вашего дополнительного DNS-сервера></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><IP-адрес вашего + основного DNS-сервера></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><lfs></code></em>" > /etc/hostname</kbd></pre> + <p> + <em class="replaceable"><code><lfs></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 > /etc/hosts << "EOF" +<code class="literal"># Begin /etc/hosts + +127.0.0.1 localhost.localdomain localhost +127.0.1.1 <em class="replaceable"><code><FQDN></code></em> <em class= +"replaceable"><code><HOSTNAME></code></em> +<em class="replaceable"><code><192.168.1.1></code></em> <em class= +"replaceable"><code><FQDN></code></em> <em class= +"replaceable"><code><HOSTNAME></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><192.168.1.1></code></em>, <em class= + "replaceable"><code><FQDN></code></em>, и <em class= + "replaceable"><code><HOSTNAME></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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/symlinks.html b/lfs-12.1-sysv/chapter09/symlinks.html new file mode 100644 index 0000000..25c0faf --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </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.1">Начало</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">Раздел 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/=.*$/=/' \ + -i /usr/lib/udev/network/99-default.link \ + > /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. Взаимодействие с устройствами и модулями">Раздел 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. Настройка сети">Раздел 9.5, «Настройка сети»</a>, + инструкции по настройке звуковых карт можно найти в <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/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 > /etc/udev/rules.d/83-duplicate_devs.rules << "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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/udev.html b/lfs-12.1-sysv/chapter09/udev.html new file mode 100644 index 0000000..fdcde06 --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </h4> + <h3> + Глава 9. Системные настройки + </h3> + <ul> + <li class="prev"> + <a accesskey="p" href="bootscripts.html" title= + "LFS-Bootscripts-20230728">Пред.</a> + <p> + LFS-Bootscripts-20230728 + </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.1">Начало</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. Установка базового системного программного обеспечения">Глава 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.7.4, 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.7.4 это + относится к шиной 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><filename></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. Управление устройствами">Раздел 9.4, «Управление + устройствами»</a> и <a class="xref" href="network.html" title= + "9.5. Настройка сети">Раздел 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-20230728">Пред.</a> + <p> + LFS-Bootscripts-20230728 + </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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> diff --git a/lfs-12.1-sysv/chapter09/usage.html b/lfs-12.1-sysv/chapter09/usage.html new file mode 100644 index 0000000..43c41a4 --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </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.1">Начало</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: выключение компьютера<br /> + 1: однопользовательский режим<br /> + 2: зарезервировано для настройки, в остальном аналогично 3<br /> + + 3: многопользовательский режим с поддержкой сети<br /> + + 4: зарезервировано для настройки, в остальном аналогично 3<br /> + + 5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например, <br /> + + <span class= + "command"><strong>gdm</strong></span> от GNOME или <span class="command"><strong>lxdm</strong></span> от LXDE)<br /> + + 6: перезагрузка компьютера + </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 > /etc/inittab << "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><runlevel></code></em></strong></span>, + где <em class="replaceable"><code><runlevel></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 <device></strong></span>, где <device> + - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или + /sys/class/rtc. + </p> + <p> + Для получения информации о загрузке модуля ядра и udev смотрите + <a class="xref" href="udev.html#module-loading" title= + "9.3.2.3. Загрузка модуля">Раздел 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 > /etc/sysconfig/clock << "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. Настройка системной локали">Раздел 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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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.7.4 правильно интерпретирует + "мертвые" клавиши и слияния, только когда исходные символы + имеют 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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> |