summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter09/usage.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.2-sysv/chapter09/usage.html')
-rw-r--r--lfs-12.2-sysv/chapter09/usage.html1081
1 files changed, 1081 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter09/usage.html b/lfs-12.2-sysv/chapter09/usage.html
new file mode 100644
index 0000000..cd9a64d
--- /dev/null
+++ b/lfs-12.2-sysv/chapter09/usage.html
@@ -0,0 +1,1081 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ 9.6. Настройка и использование загрузочных скриптов System V
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 9. Системные настройки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="network.html" title=
+ "Настройка сети">Пред.</a>
+ <p>
+ Настройка сети
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="locale.html" title=
+ "Настройка системной локали">След.</a>
+ <p>
+ Настройка системной локали
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-config-usage" name="ch-config-usage"></a>9.6. Настройка и
+ использование загрузочных скриптов System V
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.6.1. Как работают загрузочные скрипты System V?
+ </h2>
+ <p>
+ В этой версии LFS используется специальное средство загрузки под
+ названием SysVinit, основанное на наборе уровней выполнения
+ (<span class="emphasis"><em>run-levels</em></span>). Процедура
+ загрузки может сильно отличаться от одной системы к другой; и тот
+ факт, что в конкретном дистрибутиве Linux все работало должным
+ образом, не гарантирует, что оно будут работать так же в LFS. LFS
+ работает по-своему, но соблюдает общепринятые стандарты.
+ </p>
+ <p>
+ Существует альтернативная система загрузки, которая называется
+ <span class="command"><strong>systemd</strong></span>. Мы не будем
+ обсуждать этот вариант загрузки здесь. Для получения подробного
+ описания, посетите <a class="ulink" href=
+ "https://www.linux.com/training-tutorials/understanding-and-using-systemd/">
+ https://www.linux.com/training-tutorials/understanding-and-using-systemd/</a>.
+ </p>
+ <p>
+ SysVinit (в дальнейшем именуемый <span class="quote">«<span class=
+ "quote">init</span>»</span>) использует схему уровней выполнения.
+ Существует семь уровней выполнения, пронумерованных от 0 до 6. (На
+ самом деле уровней больше, но они предназначены для особых случаев
+ и обычно не используются. Подробности смотрите в руководстве
+ <a class="ulink" href=
+ "https://man.archlinux.org/man/init.8">init(8)</a>). Каждый из них
+ соответствует действиям, которые компьютер должен выполнить при
+ запуске и выключении. Уровень выполнения по умолчанию — 3. Ниже
+ приведено описание различных уровней в том виде, в каком они
+ реализованы в LFS:
+ </p>
+ <div class="literallayout">
+ <p>
+ 0:&nbsp;выключение&nbsp;компьютера<br />
+ 1:&nbsp;однопользовательский&nbsp;режим<br />
+ 2:&nbsp;зарезервировано&nbsp;для&nbsp;настройки,&nbsp;в&nbsp;остальном&nbsp;аналогично&nbsp;3<br />
+
+ 3:&nbsp;многопользовательский&nbsp;режим&nbsp;с&nbsp;поддержкой&nbsp;сети<br />
+
+ 4:&nbsp;зарезервировано&nbsp;для&nbsp;настройки,&nbsp;в&nbsp;остальном&nbsp;аналогично&nbsp;3<br />
+
+ 5:&nbsp;то&nbsp;же,&nbsp;что&nbsp;и&nbsp;4,&nbsp;обычно&nbsp;используется&nbsp;для&nbsp;входа&nbsp;в&nbsp;систему&nbsp;с&nbsp;графическим&nbsp;интерфейсом&nbsp;(например,&nbsp;<br />
+
+ <span class=
+ "command"><strong>gdm</strong></span>&nbsp;от&nbsp;GNOME&nbsp;или&nbsp;<span class="command"><strong>lxdm</strong></span>&nbsp;от&nbsp;LXDE)<br />
+
+ 6:&nbsp;перезагрузка&nbsp;компьютера
+ </p>
+ </div>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Раньше, много лет назад, уровень выполнения 2 обозначался как
+ <span class="quote">«<span class="quote">многопользовательский
+ режим без поддержки сети</span>»</span>, тогда, несколько
+ пользователей могли подключаться к системе через последовательные
+ порты. В сегодняшних условиях это не имеет смысла, и мы
+ обозначаем этот уровень как <span class="quote">«<span class=
+ "quote">зарезервировано</span>»</span>.
+ </p>
+ </div>
+ </div>
+ <div class="configuration" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="conf-sysvinit" name="conf-sysvinit"></a>9.6.2. Настройка
+ SysVinit
+ </h2>
+ <p>
+ Во время инициализации ядра первой запускаемой программой (если она
+ не переопределена в командной строке) является <span class=
+ "command"><strong>init</strong></span>. Эта программа считывает
+ файл инициализации <code class="filename">/etc/inittab</code>.
+ Создайте этот файл:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/inittab &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/inittab
+
+id:3:initdefault:
+
+si::sysinit:/etc/rc.d/init.d/rc S
+
+l0:0:wait:/etc/rc.d/init.d/rc 0
+l1:S1:wait:/etc/rc.d/init.d/rc 1
+l2:2:wait:/etc/rc.d/init.d/rc 2
+l3:3:wait:/etc/rc.d/init.d/rc 3
+l4:4:wait:/etc/rc.d/init.d/rc 4
+l5:5:wait:/etc/rc.d/init.d/rc 5
+l6:6:wait:/etc/rc.d/init.d/rc 6
+
+ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
+
+su:S06:once:/sbin/sulogin
+s1:1:respawn:/sbin/sulogin
+
+1:2345:respawn:/sbin/agetty --noclear tty1 9600
+2:2345:respawn:/sbin/agetty tty2 9600
+3:2345:respawn:/sbin/agetty tty3 9600
+4:2345:respawn:/sbin/agetty tty4 9600
+5:2345:respawn:/sbin/agetty tty5 9600
+6:2345:respawn:/sbin/agetty tty6 9600
+
+# End /etc/inittab</code>
+EOF</kbd></pre>
+ <p>
+ Пояснения по содержимому этого файла инициализации находится на
+ справочной странице <span class="emphasis"><em>inittab</em></span>.
+ Для LFS основной командой является <span class=
+ "command"><strong>rc</strong></span>. В приведенном выше файле
+ инициализации, <span class="command"><strong>rc</strong></span>
+ будет выполнять все сценарии, начинающиеся с символа S в каталоге
+ <code class="filename">/etc/rc.d/rcS.d</code>, за которыми следуют
+ все скрипты, начинающиеся с S в каталоге <code class=
+ "filename">/etc/rc.d/rc?.d</code>, где знак вопроса задается
+ значением initdefault.
+ </p>
+ <p>
+ Для удобства, скрипт <span class=
+ "command"><strong>rc</strong></span> считывает библиотеку функций
+ из <code class="filename">/lib/lsb/init-functions</code>. Эта
+ библиотека также читает необязательный файл конфигурации
+ <code class="filename">/etc/sysconfig/rc.site</code>. В этот файл
+ можно поместить любой из параметров конфигурации системы, описанных
+ в последующих разделах, что позволяет объединить все параметры
+ системы в одном файле.
+ </p>
+ <p>
+ Для удобства отладки скрипт functions также записывает весь вывод в
+ <code class="filename">/run/var/bootlog</code>. Поскольку каталог
+ <code class="filename">/run</code> является tmpfs, этот файл не
+ сохраняется при загрузке; однако его содержимое добавляется в файл
+ <code class="filename">/var/log/boot.log</code> по окончании
+ процесса загрузки.
+ </p>
+ <div class="sect3">
+ <h3 class="sect3">
+ <a id="init-levels" name="init-levels"></a>9.6.2.1. Изменение
+ уровней выполнения
+ </h3>
+ <p>
+ Изменить уровень выполнения можно с помощью команды <span class=
+ "command"><strong>init <em class=
+ "replaceable"><code>&lt;runlevel&gt;</code></em></strong></span>,
+ где <em class="replaceable"><code>&lt;runlevel&gt;</code></em> -
+ это целевой уровнем выполнения. Например, чтобы перезагрузить
+ компьютер, пользователь должен выполнить команду <span class=
+ "command"><strong>init 6</strong></span>, которая является
+ псевдонимом для команды <span class=
+ "command"><strong>reboot</strong></span>. Аналогично, init 0
+ является псевдонимом для команды <span class=
+ "command"><strong>halt</strong></span>.
+ </p>
+ <p>
+ В каталоге <code class="filename">/etc/rc.d</code> есть ещё
+ несколько каталогов, которые выглядят как <code class=
+ "filename">rc?.d</code> (где ? - номер уровня выполнения), все
+ они содержат ряд символических ссылок. Некоторые ссылки
+ начинаются с <span class="emphasis"><em>K</em></span>, другие
+ начинаются с <span class="emphasis"><em>S</em></span>, и все они
+ содержат две цифры после начальной буквы. K означает остановить
+ (убить) службу, а S означает запустить службу. Числа определяют
+ порядок выполнения сценариев от 00 до 99—чем меньше число, тем
+ раньше запускается скрипт. Когда <span class=
+ "command"><strong>init</strong></span> переключается на другой
+ уровень выполнения, соответствующие службы либо запускаются, либо
+ останавливаются, в зависимости от выбранного уровня выполнения.
+ </p>
+ <p>
+ Реальные скрипты находятся в каталоге <code class=
+ "filename">/etc/rc.d/init.d</code>. Они выполняют фактическую
+ работу, и символические ссылки указывают на них. Ссылки К и S
+ указывают на один и тот же скрипт в <code class=
+ "filename">/etc/rc.d/init.d</code>. Это связано с тем, что
+ скрипты могут вызываться с разными параметрами, такими как
+ <em class="parameter"><code>start</code></em>, <em class=
+ "parameter"><code>stop</code></em>, <em class=
+ "parameter"><code>restart</code></em>, <em class=
+ "parameter"><code>reload</code></em>, и <em class=
+ "parameter"><code>status</code></em>. Когда встречается ссылка K,
+ соответствующий скрипт запускается с аргументом <em class=
+ "parameter"><code>stop</code></em>. Когда встречается S-ссылка,
+ соответствующий скрипт запускается с аргументом <em class=
+ "parameter"><code>start</code></em>.
+ </p>
+ <p>
+ Ниже приведено описание к аргументам скриптов:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>start</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Служба запущена.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>stop</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Служба остановлена.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>restart</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Служба остановлена и снова запущена.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>reload</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Конфигурация сервиса обновлена. Используется после
+ изменения файла конфигурации службы, когда перезапуск не
+ требуется.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>status</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Сообщает, запущена ли служба и с какими ИД процессов.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Не стесняйтесь изменять работу процесса загрузки (в конце концов,
+ это ваша собственная система LFS). Приведенные здесь файлы
+ являются примером того, как это можно сделать.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 9.6.3. Загрузочные скрипты Udev
+ </h2>
+ <p>
+ Инит-скрипт <code class="filename">/etc/rc.d/init.d/udev</code>
+ запускает <span class="command"><strong>udevd</strong></span>,
+ который инициализирует все устройства "холодного подключения",
+ которые уже были созданы ядром, и ожидает выполнения всех правил.
+ Скрипт также отключает обработчик uevent по умолчанию <code class=
+ "filename">/sbin/hotplug</code>. Это сделано потому, что ядру
+ больше не нужно обращаться к внешнему бинарному файлу. Вместо этого
+ <span class="command"><strong>udevd</strong></span> будет
+ прослушивать сокет netlink на предмет событий, которые вызывает
+ ядро.
+ </p>
+ <p>
+ Инит-скрипт <span class=
+ "command"><strong>/etc/rc.d/init.d/udev_retry</strong></span>
+ решает задачу повторного запуска событий для подсистем, правила
+ которых могут зависеть от файловых систем, которые не монтируются
+ до запуска скрипта <span class=
+ "command"><strong>mountfs</strong></span> (в частности, его
+ вызывают <code class="filename">/usr</code> и <code class=
+ "filename">/var</code>). Этот скрипт запускается после скрипта
+ <span class="command"><strong>mountfs</strong></span>, поэтому эти
+ правила (при повторном запуске) должны сработать во второй раз. Он
+ настраивается в файле <code class=
+ "filename">/etc/sysconfig/udev_retry</code>; любые слова в этом
+ файле, кроме комментариев, являются именами подсистем, которые
+ запускаются при повторной попытке. Чтобы найти подсистему
+ устройства, используйте <span class="command"><strong>udevadm info
+ --attribute-walk &lt;device&gt;</strong></span>, где &lt;device&gt;
+ - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или
+ /sys/class/rtc.
+ </p>
+ <p>
+ Для получения информации о загрузке модуля ядра и udev смотрите
+ <a class="xref" href="udev.html#module-loading" title=
+ "9.3.2.3. Загрузка модуля">Раздел&nbsp;9.3.2.3, «Загрузка
+ модуля»</a>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-clock" name="ch-config-clock"></a>9.6.4. Настройка
+ системного времени
+ </h2>
+ <p>
+ Скрипт <span class="command"><strong>setclock</strong></span>
+ считывает время с аппаратных часов, также известных как часы BIOS
+ или CMOS (Complementary Metal Oxide Semiconductor). Если на
+ аппаратных часах установлено время UTC (всемирное скоординированное
+ время), этот скрипт преобразует полученное значение в локальное
+ время, используя файл <code class="filename">/etc/localtime</code>
+ (который сообщает программе <span class=
+ "command"><strong>hwclock</strong></span>, в какой временной зоне
+ находится пользователь). Невозможно определить, установленное на
+ аппаратных часах время UTC или же локальное, поэтому необходимо
+ указать его вручную.
+ </p>
+ <p>
+ Скрипт <span class="command"><strong>setclock</strong></span>
+ запускается системой <span class="application">udev</span> при
+ загрузке, когда ядро определяет возможности аппаратного
+ обеспечения. Также его можно запустить вручную с параметром stop,
+ чтобы сохранить системное время в аппаратные часы CMOS.
+ </p>
+ <p>
+ Если Вы не можете вспомнить, установлено на аппаратных часах UTC
+ или локальное время, запустите команду <strong class=
+ "userinput"><code>hwclock --localtime --show</code></strong>. Она
+ отобразит текущее время в соответствии с аппаратными часами. Если
+ оно совпадает с тем, что показывают ваши настенные/наручные часы,
+ значит на часах CMOS установлено локальное время. Если вывод
+ <span class="command"><strong>hwclock</strong></span> не совпадает
+ с локальным временем, скорее всего, это UTC. Проверьте это, добавив
+ или вычитая нужное количество часов для вашего часового пояса ко
+ времени, отображаемому <span class=
+ "command"><strong>hwclock</strong></span>. Например, если ваш
+ часовой пояс это MSK, также известный как GMT +0300, то нужно
+ вычесть три часа из локального времени.
+ </p>
+ <p>
+ Измените значение переменной <code class="envar">UTC</code> ниже на
+ <em class="parameter"><code>0</code></em> (ноль), если на
+ аппаратных часах установлено <span class=
+ "emphasis"><em>НЕ</em></span> UTC.
+ </p>
+ <p>
+ Создайте новый файл <code class=
+ "filename">/etc/sysconfig/clock</code> выполнив:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/clock &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/clock
+
+UTC=1
+
+# Set this to any options you might need to give to hwclock,
+# such as machine hardware clock type for Alphas.
+CLOCKPARAMS=
+
+# End /etc/sysconfig/clock</code>
+EOF</kbd></pre>
+ <p>
+ Хороший совет, объясняющий, как обращаться с временем в LFS,
+ доступен по адресу <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt">
+ https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt</a>.
+ Там объясняются такие вопросы, как часовые пояса, UTC и переменная
+ окружения <code class="envar">TZ</code>.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Параметры CLOCKPARAMS и UTC также могут быть указаны в файле
+ <code class="filename">/etc/sysconfig/rc.site</code>.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-console" name="ch-config-console"></a>9.6.5.
+ Настройка консоли Linux
+ </h2>
+ <p>
+ Эта секция описывает настройку скрипта <span class=
+ "command"><strong>console</strong></span>, который устанавливает
+ раскладку клавиатуры, шрифт консоли и уровень подробности
+ информации, выводимой ядром на консоль. Если Вы не планируете
+ использовать символы, не соответствующие стандарту ASCII (например,
+ знак копирайта, символы фунта и евро), и собираетесь печатать
+ только в английской раскладке, то можете пропустить большую часть
+ секции. Без файла конфигурации (или эквивалентных настроек в
+ <code class="filename">rc.site</code>), скрипт <span class=
+ "command"><strong>console</strong></span> не будет ничего делать.
+ </p>
+ <p>
+ Скрипт <span class="command"><strong>console</strong></span>
+ считывает конфигурацию из файла <code class=
+ "filename">/etc/sysconfig/console</code>. Решите для себя, какую
+ раскладку клавиатуры и какой шрифт намерены использовать. В этом
+ также могут помочь различные HOWTO для конкретных языков; смотрите
+ <a class="ulink" href=
+ "https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html">https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html</a>.
+ Если вы все еще сомневаетесь, посмотрите в каталогах <code class=
+ "filename">/usr/share/keymaps</code> и <code class=
+ "filename">/usr/share/consolefonts</code> допустимые раскладки и
+ экранные шрифты. Прочтите справочные страницы <a class="ulink"
+ href="https://man.archlinux.org/man/loadkeys.1">loadkeys(1)</a> и
+ <a class="ulink" href=
+ "https://man.archlinux.org/man/setfont.8">setfont(8)</a>, чтобы
+ определить правильные аргументы для этих программ.
+ </p>
+ <p>
+ Файл <code class="filename">/etc/sysconfig/console</code> должен
+ содержать строки вида: <code class=
+ "envar">ПЕРЕМЕННАЯ=значение</code>. Допустимы следующие переменные:
+ </p>
+ <div class="variablelist">
+ <dl class="variablelist">
+ <dt>
+ <span class="term">LOGLEVEL</span>
+ </dt>
+ <dd>
+ <p>
+ Эта переменная задает уровень подробности сообщений,
+ посылаемых ядром на системную консоль. Значение этой
+ переменной передается в качестве аргумента утилите
+ <span class="command"><strong>dmesg -n</strong></span>.
+ Допустимы уровни от <code class="literal">1</code>(нет
+ сообщений) до <code class="literal">8</code>. По умолчанию
+ <code class="literal">7</code>, что является довольно
+ подробным.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">KEYMAP</span>
+ </dt>
+ <dd>
+ <p>
+ Эта переменная указывает аргументы для программы <span class=
+ "command"><strong>loadkeys</strong></span>, обычно это имя
+ загружаемой раскладки, например, <code class=
+ "literal">it</code>. Если эта переменная не установлена,
+ загрузочный скрипт не будет запускать программу loadkeys, и
+ будет использоваться раскладка по умолчанию. Обратите
+ внимание, что некоторые раскладки имеют несколько версий с
+ одним и тем же именем (cz и его варианты в qwerty/ и qwertz/,
+ es в olpc/ и qwerty/ и trf в fgGIod/ и qwerty/). В этих
+ случаях также следует указать родительский каталог (например,
+ qwerty/es), чтобы обеспечить загрузку правильной раскладки.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">KEYMAP_CORRECTIONS</span>
+ </dt>
+ <dd>
+ <p>
+ Эта (крайне редко используемая) переменная задает аргументы
+ для второго вызова программы <span class=
+ "command"><strong>loadkeys</strong></span>. Она полезна, если
+ стандартная раскладка вас не совсем устраивает и необходимо
+ внести небольшую корректировку. Например, чтобы добавить
+ символ евро в раскладку, которая его не содержит, присвойте
+ этой переменной значение <code class="literal">euro2</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">FONT</span>
+ </dt>
+ <dd>
+ <p>
+ Эта переменная определяет аргументы для программы
+ <span class="command"><strong>setfont</strong></span>. Обычно
+ она включает в себя имя шрифта <code class=
+ "literal">-m</code> и имя загружаемой таблицы символов.
+ Например, чтобы загрузить шрифт <span class=
+ "quote">«<span class="quote">lat1-16</span>»</span> вместе с
+ таблицей символов <span class="quote">«<span class=
+ "quote">8859-1</span>»</span> (подходит для США), установите
+ эту переменную в <code class="literal">lat1-16 -m
+ 8859-1</code>. В режиме UTF-8 ядро использует таблицу
+ символов для преобразования 8-битных кодов клавиш в UTF-8,
+ поэтому аргумент параметра "-m" должен быть установлен на
+ кодировку соответствующих кодов клавиш в раскладке.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">UNICODE</span>
+ </dt>
+ <dd>
+ <p>
+ Присвойте этой переменной значение <code class=
+ "literal">1</code>, <code class="literal">yes</code> или
+ <code class="literal">true</code>, чтобы переключить консоль
+ в режим UTF-8. Это полезно при использовании локали,
+ основанной на UTF-8, и не рекомендуется в иных случаях.
+ </p>
+ </dd>
+ <dt>
+ <span class="term">LEGACY_CHARSET</span>
+ </dt>
+ <dd>
+ <p>
+ Для многих раскладок клавиатуры в пакете Kbd не существует
+ готового Unicode-варианта. Скрипт <span class=
+ "command"><strong>console</strong></span> будет на лету
+ конвертировать имеющуюся раскладку в UTF-8, если присвоить
+ этой переменной имя доступной не-UTF-8 раскладки.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Несколько примеров:
+ </p>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ Мы будем использовать <code class="literal">C.UTF-8</code> в
+ качестве локали для интерактивных сеансов в консоли Linux в
+ <a class="xref" href="locale.html" title=
+ "9.7. Настройка системной локали">Раздел&nbsp;9.7, «Настройка
+ системной локали,»</a>, поэтому нам следует установить
+ значение переменной <code class="literal">UNICODE</code> в
+ <code class="literal">1</code>. Консольные шрифты,
+ поставляемые пакетом <span class="application">Kbd</span>,
+ содержащие глифы для всех символов сообщений программы в
+ <code class="literal">C.UTF-8</code> являются <code class=
+ "filename">LatArCyrHeb*.psfu.gz</code>, <code class=
+ "filename">LatGrkCyr*.psfu.gz</code>, <code class=
+ "filename">Lat2-Terminus16.psfu.gz</code> и <code class=
+ "filename">pancyrillic.f16.psfu.gz</code> из каталога
+ <code class="filename">/usr/share/consolefonts</code> (в
+ других поставляемых консольных шрифтах отсутствуют глифы
+ некоторых символов Unicode, таких как левые/правые кавычки и
+ английское тире). Поэтому установите один из них, например
+ <code class="filename">Lat2-Terminus16.psfu.gz</code>, в
+ качестве шрифта консоли по умолчанию:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+FONT="Lat2-Terminus16"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Для русскоязычных пользователей может подойти такой вариант:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="ruwin_alt_sh-UTF-8"
+FONT="cyr-sun16"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Для поиска нужной раскладки, выполните команду:
+ <span class="command"><strong>find /usr/share/keymaps -type
+ f</strong></span>
+ </p>
+ <p>
+ <code class="literal">ruwin_alt-UTF-8</code> - переключение
+ раскладки по Alt.
+ </p>
+ <p>
+ <code class="literal">ruwin_alt_sh-UTF-8</code> -
+ переключение раскладки по Alt+Shift.
+ </p>
+ <p>
+ <code class="literal">ruwin_cplk-UTF-8</code> -
+ переключение раскладки по Caps Lock.
+ </p>
+ <p>
+ <code class="literal">ruwin_ct_sh-UTF-8</code> -
+ переключение раскладки по Ctrl+Shift.
+ </p>
+ <p>
+ <code class="literal">ruwin_ctrl-UTF-8</code> -
+ переключение раскладки по Ctrl.
+ </p>
+ <p>
+ Посмотреть список доступных шрифтов можно с помощью
+ следующей команды: <span class="command"><strong>ls
+ /usr/share/consolefonts</strong></span>
+ </p>
+ </div>
+ </li>
+ <li class="listitem">
+ <p>
+ Для не-Unicode настройки необходимы только переменные KEYMAP
+ и FONT. Например, для польских пользователей может подойти
+ такой вариант:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+KEYMAP="pl2"
+FONT="lat2a-16 -m 8859-2"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Как упоминалось выше, иногда бывает необходимо
+ подкорректировать раскладку. Следующий пример добавляет
+ символ евро к немецкой раскладке:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+KEYMAP="de-latin1"
+KEYMAP_CORRECTIONS="euro2"
+FONT="lat0-16 -m 8859-15"
+UNICODE="1"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Ниже приведен пример с поддержкой Unicode для болгарского
+ языка, где существует стандартная раскладка UTF-8:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="bg_bds-utf8"
+FONT="LatArCyrHeb-16"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Из-за использования 512-символьного шрифта LatArCyrHeb-16 в
+ предыдущем примере, яркие цвета больше не доступны в консоли
+ Linux, если используется фреймбуфер. Если Вы хотите
+ использовать яркие цвета без фреймбуфера и можете обходиться
+ без символов, не относящихся к вашему языку, тогда можно
+ использовать специфичный для вашего языка 256-символьный
+ шрифт, как показано ниже:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="bg_bds-utf8"
+FONT="cyr-sun16"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Следующий пример демонстрирует автоматическое преобразование
+ раскладки из ISO-8859-15 в UTF-8 и включает "мертвые" клавиши
+ в режиме Unicode:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/sysconfig/console
+
+UNICODE="1"
+KEYMAP="de-latin1"
+KEYMAP_CORRECTIONS="euro2"
+LEGACY_CHARSET="iso-8859-15"
+FONT="LatArCyrHeb-16 -m 8859-15"
+
+# End /etc/sysconfig/console</code>
+EOF</kbd></pre>
+ </li>
+ <li class="listitem">
+ <p>
+ Некоторые раскладки включают в себя "мертвые" клавиши (то
+ есть клавиши, нажатие которых само по себе не приводит к
+ появлению на экране символа, но которые влияют на символ,
+ генерируемый следующей клавишей) или определяют слияние
+ символов (например: <span class="quote">«<span class=
+ "quote">нажмите Ctrl+. A E чтобы получить Æ</span>»</span> в
+ раскладке по умолчанию). Linux-6.10.5 правильно
+ интерпретирует "мертвые" клавиши и слияния, только когда
+ исходные символы имеют 8-битные коды. Эта особенность не
+ влияет на раскладки для европейских языков, поскольку в них
+ "сливаются" два ASCII-символа или добавляются подчеркивания к
+ неподчеркнутым ASCII-символам. Однако, в режиме UTF-8 могут
+ быть проблемы, например, для греческого языка, когда
+ необходимо подчеркнуть символ α. Решением в этой ситуации
+ будет отказ от использования UTF-8 или установка графической
+ системы X Window, не имеющих подобных ограничений.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Для китайского, японского, корейского и некоторых других
+ языков невозможно настроить консоль Linux так, чтобы она
+ отображала все необходимые символы. Пользователи, которым
+ требуются эти языки, должны установить систему X Window,
+ шрифты, покрывающие необходимый диапазон символов, и
+ правильный метод ввода (например, SCIM поддерживает большое
+ число разнообразных языков).
+ </p>
+ </li>
+ </ul>
+ </div>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Файл <code class="filename">/etc/sysconfig/console</code>
+ управляет только локализацией текстовой консоли Linux. Он никак
+ не влияет на настройки раскладки клавиатуры и шрифтов в системе X
+ Window, в сессиях SSH или на последовательном терминале. В этих
+ ситуациях ограничения, описанные в двух расположенных выше
+ абзацах, не применяются.
+ </p>
+ </div>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-createfiles" name=
+ "ch-config-createfiles"></a>9.6.6. Создание файлов при загрузке
+ </h2>
+ <p>
+ Иногда необходимо создавать файлы во время загрузки. Например,
+ часто требуется каталог <code class=
+ "filename">/tmp/.ICE-unix</code> . Это можно сделать, создав запись
+ в скрипте <code class="filename">/etc/sysconfig/createfiles</code>.
+ Формат этого файла описан в комментариях файла конфигурации по
+ умолчанию.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-sysklogd" name="ch-config-sysklogd"></a>9.6.7.
+ Настройка скрипта Sysklogd
+ </h2>
+ <p>
+ Скрипт <code class="filename">sysklogd</code> вызывает программу
+ <span class="command"><strong>syslogd</strong></span> как часть
+ инициализации System V. Параметр <em class="parameter"><code>-m
+ 0</code></em> отключает периодическую (по умолчанию - каждые 20
+ минут) запись временных меток в файлы журналов, производимую
+ <span class="command"><strong>syslogd</strong></span>. Если Вам
+ необходимо включить периодическую запись временных меток,
+ отредактируйте файл <code class=
+ "filename">/etc/sysconfig/rc.site</code> и присвойте переменной
+ SYSKLOGD_PARMS требуемое значение. Например, чтобы сбросить все
+ параметры, присвойте переменной пустое значение:
+ </p>
+ <pre class="screen">SYSKLOGD_PARMS=</pre>
+ <p>
+ Дополнительные параметры смотрите в <strong class=
+ "userinput"><code>man syslogd</code></strong>.
+ </p>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-config-site" name="ch-config-site"></a>9.6.8. Файл
+ rc.site
+ </h2>
+ <p>
+ Необязательный файл <code class=
+ "filename">/etc/sysconfig/rc.site</code> содержит настройки,
+ автоматически применяемые всеми загрузочными скриптами. Этот файл
+ может содержать парамеры, обычно указываемые в файлах <code class=
+ "filename">hostname</code>, <code class="filename">console</code> и
+ <code class="filename">clock</code> из каталога <code class=
+ "filename">/etc/sysconfig/</code>. Если значение одной и той же
+ переменной присваивается, как в одном из этих файлов, так и в
+ <code class="filename">rc.site</code>, приоритет имеет значение из
+ специализированного файла.
+ </p>
+ <p>
+ <code class="filename">rc.site</code> также содержит параметры,
+ которые могут настраивать другие аспекты процесса загрузки.
+ Установка переменной IPROMPT позволит выборочно запускать
+ загрузочные скрипты. Другие параметры описаны в комментариях к
+ файлу. Версия файла по умолчанию выглядит следующим образом:
+ </p>
+ <pre class="auto"># rc.site
+# Optional parameters for boot scripts.
+
+# Distro Information
+# These values, if specified here, override the defaults
+#DISTRO="Linux From Scratch" # The distro name
+#DISTRO_CONTACT="lfs-dev@lists.linuxfromscratch.org" # Bug report address
+#DISTRO_MINI="LFS" # Short name used in filenames for distro config
+
+# Define custom colors used in messages printed to the screen
+
+# Please consult `man console_codes` for more information
+# under the "ECMA-48 Set Graphics Rendition" section
+#
+# Warning: when switching from a 8bit to a 9bit font,
+# the linux console will reinterpret the bold (1;) to
+# the top 256 glyphs of the 9bit font. This does
+# not affect framebuffer consoles
+
+# These values, if specified here, override the defaults
+#BRACKET="\\033[1;34m" # Blue
+#FAILURE="\\033[1;31m" # Red
+#INFO="\\033[1;36m" # Cyan
+#NORMAL="\\033[0;39m" # Grey
+#SUCCESS="\\033[1;32m" # Green
+#WARNING="\\033[1;33m" # Yellow
+
+# Use a colored prefix
+# These values, if specified here, override the defaults
+#BMPREFIX=" "
+#SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} "
+#FAILURE_PREFIX="${FAILURE}*****${NORMAL} "
+#WARNING_PREFIX="${WARNING} *** ${NORMAL} "
+
+# Manually set the right edge of message output (characters)
+# Useful when resetting console font during boot to override
+# automatic screen width detection
+#COLUMNS=120
+
+# Interactive startup
+#IPROMPT="yes" # Whether to display the interactive boot prompt
+#itime="3" # The amount of time (in seconds) to display the prompt
+
+# The total length of the distro welcome string, without escape codes
+#wlen=$(echo "Welcome to ${DISTRO}" | wc -c )
+#welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"
+
+# The total length of the interactive string, without escape codes
+#ilen=$(echo "Press 'I' to enter interactive startup" | wc -c )
+#i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"
+
+# Set scripts to skip the file system check on reboot
+#FASTBOOT=yes
+
+# Skip reading from the console
+#HEADLESS=yes
+
+# Write out fsck progress if yes
+#VERBOSE_FSCK=no
+
+# Speed up boot without waiting for settle in udev
+#OMIT_UDEV_SETTLE=y
+
+# Speed up boot without waiting for settle in udev_retry
+#OMIT_UDEV_RETRY_SETTLE=yes
+
+# Skip cleaning /tmp if yes
+#SKIPTMPCLEAN=no
+
+# For setclock
+#UTC=1
+#CLOCKPARAMS=
+
+# For consolelog (Note that the default, 7=debug, is noisy)
+#LOGLEVEL=7
+
+# For network
+#HOSTNAME=mylfs
+
+# Delay between TERM and KILL signals at shutdown
+#KILLDELAY=3
+
+# Optional sysklogd parameters
+#SYSKLOGD_PARMS="-m 0"
+
+# Console parameters
+#UNICODE=1
+#KEYMAP="de-latin1"
+#KEYMAP_CORRECTIONS="euro2"
+#FONT="lat0-16 -m 8859-15"
+#LEGACY_CHARSET=
+
+</pre>
+ <div class="sect3">
+ <h3 class="sect3">
+ 9.6.8.1. Настройка скриптов загрузки и завершения работы
+ </h3>
+ <p>
+ Загрузочные скрипты LFS загружают и завершают работу системы
+ довольно эффективно, но есть несколько настроек, которые вы
+ можете внести в файл rc.site, чтобы еще больше повысить скорость
+ и настроить сообщения в соответствии с вашими предпочтениями.
+ Чтобы сделать это, измените настройки в приведенном выше файле
+ <code class="filename">/etc/sysconfig/rc.site</code>.
+ </p>
+ <div class="itemizedlist">
+ <ul>
+ <li class="listitem">
+ <p>
+ Во время работы загрузочного скрипта <code class=
+ "filename">udev</code> происходит вызов <span class=
+ "command"><strong>udev settle</strong></span>, для
+ завершения которого требуется некоторое время. Это время
+ может и не потребоваться в зависимости от конфигурации
+ устройств в системе. Если у вас имеются только простые
+ разделы и одна сетевая карта, процессу загрузки, вероятно,
+ не нужно будет ждать завершения работы этой команды. Чтобы
+ пропустить её, установите переменную OMIT_UDEV_SETTLE=y.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Скрипт загрузки <code class="filename">udev_retry</code>
+ также по умолчанию запускает <span class=
+ "command"><strong>udev settle</strong></span>. Команда
+ необходима только тогда, когда каталог <code class=
+ "filename">/var</code> смонтирован в отдельный раздел. Это
+ связано с тем, что часам нужен доступ к файлу <code class=
+ "filename">/var/lib/hwclock/adjtime</code>. Для других
+ настроек также может потребоваться дождаться завершения
+ udev, но в большинстве случаев в этом нет необходимости.
+ Пропустите команду, установив переменную
+ OMIT_UDEV_RETRY_SETTLE=y.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ По умолчанию проверка файловой системы выполняется в
+ "тихом" режиме. Это может показаться задержкой во время
+ процесса загрузки. Чтобы включить вывод <span class=
+ "command"><strong>fsck</strong></span>, установите
+ переменную VERBOSE_FSCK=y.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ При перезагрузке вы, возможно, захотите полностью
+ пропустить проверку файловой системы, <span class=
+ "command"><strong>fsck</strong></span>. Чтобы сделать это,
+ либо создайте файл <code class="filename">/fastboot</code>,
+ либо перезагрузите систему командой <span class=
+ "command"><strong>/sbin/shutdown -f -r now</strong></span>.
+ С другой стороны, вы можете принудительно проверить все
+ файловые системы, создав <code class=
+ "filename">/forcefsck</code> или запустив <span class=
+ "command"><strong>shutdown</strong></span> с параметром
+ <em class="parameter"><code>-F</code></em> вместо
+ <em class="parameter"><code>-f</code></em>.
+ </p>
+ <p>
+ Установка переменной FASTBOOT=y отключит <span class=
+ "command"><strong>fsck</strong></span> во время процесса
+ загрузки до тех пор, пока она не будет удалена. Это не
+ рекомендуется делать на постоянной основе.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Обычно все файлы в каталоге <code class=
+ "filename">/tmp</code> удаляются во время загрузки. В
+ зависимости от количества имеющихся файлов или каталогов
+ это может привести к заметной задержке в процессе загрузки.
+ Чтобы пропустить удаление этих файлов, установите
+ переменную SKIPTMPCLEAN=y.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Во время завершения работы, <span class=
+ "command"><strong>init</strong></span> отправляет сигнал
+ TERM каждой запущенной программе (например, agetty),
+ ожидает установленное время (по умолчанию 3 секунды), затем
+ посылает каждому процессу сигнал завершения(KILL) и снова
+ ждёт. Этот процесс повторяется в сценарии <span class=
+ "command"><strong>sendsignals</strong></span> для любых
+ процессов, которые не завершаются их собственными
+ скриптами. Задержка для <span class=
+ "command"><strong>init</strong></span> может быть
+ установлена путем передачи параметра. Например, чтобы
+ устранить задержку в <span class=
+ "command"><strong>init</strong></span>, передайте параметр
+ -t0 при выключении или перезагрузке (например, <span class=
+ "command"><strong>/sbin/shutdown -t0 -r
+ now</strong></span>). Задержку для скрипта <span class=
+ "command"><strong>sendsignals</strong></span> можно
+ пропустить, установив параметр KILLDELAY=0.
+ </p>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="network.html" title=
+ "Настройка сети">Пред.</a>
+ <p>
+ Настройка сети
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="locale.html" title=
+ "Настройка системной локали">След.</a>
+ <p>
+ Настройка системной локали
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter09.html" title=
+ "Глава 9. Системные настройки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>