lfs-ru/chapter09/usage.xml
2024-08-16 12:51:31 +05:00

693 lines
46 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
<!ENTITY site SYSTEM "../appendices/rc.site.script">
%general-entities;
]>
<sect1 id="ch-config-usage" revision="sysv">
<?dbhtml filename="usage.html"?>
<title>Настройка и использование загрузочных скриптов System V</title>
<indexterm zone="ch-config-usage">
<primary sortas="a-Bootscripts">Bootscripts</primary>
<secondary>usage</secondary>
</indexterm>
<sect2>
<title>Как работают загрузочные скрипты System V?</title>
<para>В этой версии LFS используется специальное средство загрузки под названием SysVinit,
основанное на наборе уровней выполнения (<emphasis>run-levels</emphasis>). Процедура
загрузки может сильно отличаться от одной системы к другой; и тот факт, что в конкретном
дистрибутиве Linux все работало должным образом, не гарантирует, что оно будут работать
так же в LFS. LFS работает по-своему, но соблюдает общепринятые стандарты.</para>
<para>Существует альтернативная система загрузки, которая называется
<command>systemd</command>. Мы не будем обсуждать этот вариант загрузки здесь. Для получения
подробного описания, посетите
<ulink url="https://www.linux.com/training-tutorials/understanding-and-using-systemd/"/>.</para>
<para>SysVinit (в дальнейшем именуемый <quote>init</quote>) использует схему уровней выполнения.
Существует семь уровней выполнения, пронумерованных от 0 до 6. (На самом деле уровней
больше, но они предназначены для особых случаев и обычно не используются. Подробности смотрите в
руководстве <ulink role='man' url='&man;init.8'>init(8)</ulink>). Каждый из них соответствует
действиям, которые компьютер должен выполнить при запуске и выключении. Уровень выполнения по
умолчанию — 3. Ниже приведено описание различных уровней в том виде, в каком они реализованы в
LFS:</para>
<literallayout>0: выключение компьютера
1: однопользовательский режим
2: зарезервировано для настройки, в остальном аналогично 3
3: многопользовательский режим с поддержкой сети
4: зарезервировано для настройки, в остальном аналогично 3
5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например,
<command>gdm</command> от GNOME или <command>lxdm</command> от LXDE)
6: перезагрузка компьютера</literallayout>
<note>
<para>
Раньше, много лет назад, уровень выполнения 2 обозначался как <quote>многопользовательский
режим без поддержки сети</quote>, тогда, несколько пользователей могли подключаться к системе
через последовательные порты. В сегодняшних условиях это не имеет смысла, и мы обозначаем
этот уровень как <quote>зарезервировано</quote>.
</para>
</note>
</sect2>
<sect2 id="conf-sysvinit" role="configuration">
<title>Настройка SysVinit</title>
<indexterm zone="conf-sysvinit">
<primary sortas="a-Sysvinit">SysVinit</primary>
<secondary>configuring</secondary>
</indexterm>
<indexterm zone="conf-sysvinit">
<primary sortas="e-/etc/inittab">/etc/inittab</primary>
</indexterm>
<para>Во время инициализации ядра первой запускаемой программой (если она не переопределена
в командной строке) является <command>init</command>. Эта программа считывает файл инициализации
<filename>/etc/inittab</filename>. Создайте этот файл:</para>
<screen><userinput>cat &gt; /etc/inittab &lt;&lt; "EOF"
<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</literal>
EOF</userinput></screen>
<para>Пояснения по содержимому этого файла инициализации находится на справочной
странице <emphasis>inittab</emphasis>. Для LFS основной командой является <command>rc</command>.
В приведенном выше файле инициализации, <command>rc</command> будет выполнять все сценарии,
начинающиеся с символа S в каталоге <filename class="directory">/etc/rc.d/rcS.d</filename>, за
которыми следуют все скрипты, начинающиеся с S в каталоге <filename
class="directory">/etc/rc.d/rc?.d</filename>, где знак вопроса задается значением initdefault.</para>
<para>Для удобства, скрипт <command>rc</command> считывает библиотеку функций из
<filename class="directory">/lib/lsb/init-functions</filename>. Эта библиотека также читает
необязательный файл конфигурации <filename>/etc/sysconfig/rc.site</filename>. В этот файл
можно поместить любой из параметров конфигурации системы, описанных в последующих разделах,
что позволяет объединить все параметры системы в одном файле.</para>
<para>Для удобства отладки скрипт functions также записывает весь вывод в
<filename>/run/var/bootlog</filename>. Поскольку каталог <filename class="directory">/run</filename>
является tmpfs, этот файл не сохраняется при загрузке; однако его содержимое добавляется в
файл <filename>/var/log/boot.log</filename> по окончании процесса загрузки.</para>
<sect3 id="init-levels" >
<title>Изменение уровней выполнения</title>
<para>Изменить уровень выполнения можно с помощью команды <command>init
<replaceable>&lt;runlevel&gt;</replaceable></command>, где
<replaceable>&lt;runlevel&gt;</replaceable> - это целевой уровнем выполнения.
Например, чтобы перезагрузить компьютер, пользователь должен выполнить команду
<command>init 6</command>, которая является псевдонимом для команды
<command>reboot</command>. Аналогично, init 0 является псевдонимом для
команды <command>halt</command>.</para>
<para>В каталоге <filename
class="directory">/etc/rc.d</filename> есть ещё несколько каталогов, которые выглядят
как <filename class="directory">rc?.d</filename> (где ? - номер уровня выполнения),
все они содержат ряд символических ссылок. Некоторые ссылки начинаются с <emphasis>K</emphasis>,
другие начинаются с <emphasis>S</emphasis>, и все они содержат две цифры после начальной буквы.
K означает остановить (убить) службу, а S означает запустить службу. Числа определяют порядок
выполнения сценариев от 00 до 99&mdash;чем меньше число, тем раньше запускается скрипт.
Когда <command>init</command> переключается на другой уровень выполнения,
соответствующие службы либо запускаются, либо останавливаются, в зависимости от выбранного
уровня выполнения.</para>
<para>Реальные скрипты находятся в каталоге <filename
class="directory">/etc/rc.d/init.d</filename>. Они выполняют фактическую работу,
и символические ссылки указывают на них. Ссылки К и S указывают на один и тот
же скрипт в <filename class="directory">/etc/rc.d/init.d</filename>. Это
связано с тем, что скрипты могут вызываться с разными параметрами, такими
как <parameter>start</parameter>, <parameter>stop</parameter>,
<parameter>restart</parameter>, <parameter>reload</parameter>, и
<parameter>status</parameter>. Когда встречается ссылка K, соответствующий скрипт
запускается с аргументом <parameter>stop</parameter>. Когда встречается S-ссылка,
соответствующий скрипт запускается с аргументом <parameter>start</parameter>.</para>
<!-- Changed for March 24th, 2022 version of bootscripts
<para>There is one exception to this explanation. Links that start
with an <emphasis>S</emphasis> in the <filename
class="directory">rc0.d</filename> and <filename
class="directory">rc6.d</filename> directories will not cause anything
to be started. They will be called with the parameter
<parameter>stop</parameter> to stop something. The logic behind this
is that when a user is going to reboot or halt the system, nothing
needs to be started, but the order of shutdown needs to be controlled.
For these run levels, all <emphasis>K</emphasis> prefixed scripts will be
run before any <emphasis>S</emphasis> prefixed scripts are run with the
<parameter>stop</parameter> parameter.
</para>
-->
<para>Ниже приведено описание к аргументам скриптов:</para>
<variablelist>
<varlistentry>
<term><parameter>start</parameter></term>
<listitem>
<para>Служба запущена.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>stop</parameter></term>
<listitem>
<para>Служба остановлена.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>restart</parameter></term>
<listitem>
<para>Служба остановлена и снова запущена.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>reload</parameter></term>
<listitem>
<para>Конфигурация сервиса обновлена. Используется после изменения файла
конфигурации службы, когда перезапуск не требуется.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>status</parameter></term>
<listitem>
<para> Сообщает, запущена ли служба и с какими ИД процессов.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Не стесняйтесь изменять работу процесса загрузки (в конце концов,
это ваша собственная система LFS). Приведенные здесь файлы являются примером того, как
это можно сделать.</para>
</sect3>
</sect2>
<sect2>
<title>Загрузочные скрипты Udev</title>
<para>Инит-скрипт <filename>/etc/rc.d/init.d/udev</filename> запускает <command>udevd</command>,
который инициализирует все устройства "холодного подключения", которые уже были созданы ядром, и
ожидает выполнения всех правил. Скрипт также отключает обработчик uevent по умолчанию
<filename>/sbin/hotplug</filename>. Это сделано потому, что ядру больше не нужно обращаться к
внешнему бинарному файлу. Вместо этого <command>udevd</command> будет прослушивать сокет netlink
на предмет событий, которые вызывает ядро.</para>
<para>Инит-скрипт <command>/etc/rc.d/init.d/udev_retry</command> решает задачу повторного запуска
событий для подсистем, правила которых могут зависеть от файловых систем, которые не монтируются до
запуска скрипта <command>mountfs</command> (в частности, его вызывают <filename class="directory">/usr</filename>
и <filename class="directory">/var</filename>). Этот скрипт запускается после скрипта
<command>mountfs</command>, поэтому эти правила (при повторном запуске) должны сработать во второй раз.
Он настраивается в файле <filename>/etc/sysconfig/udev_retry</filename>; любые слова в этом файле,
кроме комментариев, являются именами подсистем, которые запускаются при повторной попытке. Чтобы найти
подсистему устройства, используйте <command>udevadm info --attribute-walk &lt;device&gt;</command>,
где &lt;device&gt; - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или /sys/class/rtc.</para>
<para>Для получения информации о загрузке модуля ядра и udev смотрите
<xref linkend="module-loading"/>.</para>
</sect2>
<sect2 id="ch-config-clock">
<title>Настройка системного времени</title>
<indexterm zone="ch-config-clock">
<primary sortas="d-setclock">setclock</primary>
<secondary>configuring</secondary></indexterm>
<para>Скрипт <command>setclock</command> считывает время с аппаратных часов, также известных как
часы BIOS или CMOS (Complementary Metal Oxide Semiconductor). Если на аппаратных часах установлено
время UTC (всемирное скоординированное время), этот скрипт преобразует полученное значение в
локальное время, используя файл <filename>/etc/localtime</filename> (который сообщает программе
<command>hwclock</command>, в какой временной зоне находится пользователь). Невозможно определить,
установленное на аппаратных часах время UTC или же локальное, поэтому необходимо указать его вручную.</para>
<para>Скрипт <command>setclock</command> запускается системой <application>udev</application> при
загрузке, когда ядро определяет возможности аппаратного обеспечения. Также его можно запустить
вручную с параметром stop, чтобы сохранить системное время в аппаратные часы CMOS.</para>
<para> Если Вы не можете вспомнить, установлено на аппаратных часах UTC или локальное время,
запустите команду <userinput>hwclock --localtime --show</userinput>. Она отобразит текущее
время в соответствии с аппаратными часами. Если оно совпадает с тем, что показывают ваши
настенные/наручные часы, значит на часах CMOS установлено локальное время. Если вывод
<command>hwclock</command> не совпадает с локальным временем, скорее всего, это UTC. Проверьте
это, добавив или вычитая нужное количество часов для вашего часового пояса ко времени,
отображаемому <command>hwclock</command>. Например, если ваш часовой пояс это MSK, также
известный как GMT +0300, то нужно вычесть три часа из локального времени.</para>
<para>Измените значение переменной <envar>UTC</envar> ниже на <parameter>0</parameter> (ноль),
если на аппаратных часах установлено <emphasis>НЕ</emphasis> UTC.</para>
<para>Создайте новый файл <filename>/etc/sysconfig/clock</filename> выполнив:</para>
<screen><userinput>cat &gt; /etc/sysconfig/clock &lt;&lt; "EOF"
<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</literal>
EOF</userinput></screen>
<para>Хороший совет, объясняющий, как обращаться с временем в LFS, доступен по адресу
<ulink url="&hints-root;time.txt"/>. Там объясняются такие вопросы, как часовые пояса,
UTC и переменная окружения <envar>TZ</envar>.</para>
<note><para>Параметры CLOCKPARAMS и UTC также могут быть указаны в файле
<filename>/etc/sysconfig/rc.site</filename>.</para></note>
</sect2>
<sect2 id="ch-config-console">
<?dbhtml filename="console.html"?>
<title>Настройка консоли Linux</title>
<indexterm zone="ch-config-console">
<primary sortas="d-console">console</primary>
<secondary>configuring</secondary>
</indexterm>
<para>Эта секция описывает настройку скрипта <command>console</command>, который устанавливает
раскладку клавиатуры, шрифт консоли и уровень подробности информации, выводимой ядром на
консоль. Если Вы не планируете использовать символы, не соответствующие стандарту ASCII
(например, знак копирайта, символы фунта и евро), и собираетесь печатать только в английской
раскладке, то можете пропустить большую часть секции. Без файла конфигурации (или эквивалентных
настроек в <filename>rc.site</filename>), скрипт <command>console</command> не будет ничего делать.</para>
<para>Скрипт <command>console</command> считывает конфигурацию из файла
<filename>/etc/sysconfig/console</filename>. Решите для себя, какую раскладку клавиатуры и
какой шрифт намерены использовать. В этом также могут помочь различные HOWTO для конкретных языков;
смотрите <ulink url="https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. Если вы все еще
сомневаетесь, посмотрите в каталогах <filename class="directory">/usr/share/keymaps</filename>
и <filename class="directory">/usr/share/consolefonts</filename> допустимые раскладки и экранные
шрифты. Прочтите справочные страницы <ulink role='man' url='&man;loadkeys.1'>loadkeys(1)</ulink> и
<ulink role='man' url='&man;setfont.8'>setfont(8)</ulink>, чтобы определить правильные аргументы
для этих программ.</para>
<para>Файл <filename>/etc/sysconfig/console</filename> должен содержать строки вида:
<envar>ПЕРЕМЕННАЯ=значение</envar>. Допустимы следующие переменные:</para>
<variablelist>
<varlistentry>
<term>LOGLEVEL</term>
<listitem>
<para>Эта переменная задает уровень подробности сообщений, посылаемых ядром на системную
консоль. Значение этой переменной передается в качестве аргумента утилите
<command>dmesg -n</command>. Допустимы уровни от <literal>1</literal>(нет сообщений) до
<literal>8</literal>. По умолчанию <literal>7</literal>, что является довольно подробным.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>KEYMAP</term>
<listitem>
<para>Эта переменная указывает аргументы для программы <command>loadkeys</command>, обычно
это имя загружаемой раскладки, например, <literal>it</literal>. Если эта переменная не
установлена, загрузочный скрипт не будет запускать программу loadkeys, и будет использоваться
раскладка по умолчанию. Обратите внимание, что некоторые раскладки имеют несколько версий с
одним и тем же именем (cz и его варианты в qwerty/ и qwertz/, es в olpc/ и qwerty/ и trf в
fgGIod/ и qwerty/). В этих случаях также следует указать родительский каталог (например,
qwerty/es), чтобы обеспечить загрузку правильной раскладки.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>KEYMAP_CORRECTIONS</term>
<listitem>
<para>Эта (крайне редко используемая) переменная задает аргументы для второго вызова
программы <command>loadkeys</command>. Она полезна, если стандартная раскладка вас не
совсем устраивает и необходимо внести небольшую корректировку. Например, чтобы добавить
символ евро в раскладку, которая его не содержит, присвойте этой переменной значение
<literal>euro2</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>FONT</term>
<listitem>
<para>Эта переменная определяет аргументы для программы <command>setfont</command>. Обычно
она включает в себя имя шрифта <literal>-m</literal> и имя загружаемой таблицы символов. Например,
чтобы загрузить шрифт <quote>lat1-16</quote> вместе с таблицей символов <quote>8859-1</quote>
(подходит для США), установите эту переменную в <literal>lat1-16 -m 8859-1</literal>. В режиме
UTF-8 ядро использует таблицу символов для преобразования 8-битных кодов клавиш в UTF-8,
поэтому аргумент параметра "-m" должен быть установлен на кодировку соответствующих кодов
клавиш в раскладке.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>UNICODE</term>
<listitem>
<para>Присвойте этой переменной значение <literal>1</literal>, <literal>yes</literal> или
<literal>true</literal>, чтобы переключить консоль в режим UTF-8. Это полезно при использовании
локали, основанной на UTF-8, и не рекомендуется в иных случаях.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>LEGACY_CHARSET</term>
<listitem>
<para>Для многих раскладок клавиатуры в пакете Kbd не существует готового Unicode-варианта.
Скрипт <command>console</command> будет на лету конвертировать имеющуюся раскладку в UTF-8,
если присвоить этой переменной имя доступной не-UTF-8 раскладки.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Несколько примеров:</para>
<itemizedlist>
<listitem>
<para>
Мы будем использовать <literal>C.UTF-8</literal> в качестве локали для интерактивных
сеансов в консоли Linux в <xref role=',' linkend='ch-config-locale'/>, поэтому нам
следует установить значение переменной <literal>UNICODE</literal> в <literal>1</literal>.
Консольные шрифты, поставляемые пакетом <application>Kbd</application>, содержащие глифы
для всех символов сообщений программы в <literal>C.UTF-8</literal> являются
<filename>LatArCyrHeb*.psfu.gz</filename>, <filename>LatGrkCyr*.psfu.gz</filename>,
<filename>Lat2-Terminus16.psfu.gz</filename> и
<filename>pancyrillic.f16.psfu.gz</filename> из каталога
<filename class='directory'>/usr/share/consolefonts</filename> (в других поставляемых
консольных шрифтах отсутствуют глифы некоторых символов Unicode, таких как левые/правые
кавычки и английское тире). Поэтому установите один из них, например
<filename>Lat2-Terminus16.psfu.gz</filename>, в качестве шрифта консоли по умолчанию:
</para>
<!-- We are using 'nodump' for the generic setting, but not for an
example (see below). This is deliberate to keep the
compatibility with jhalfs. -->
<screen role='nodump'><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
<literal># Begin /etc/sysconfig/console
UNICODE="1"
FONT="Lat2-Terminus16"
# End /etc/sysconfig/console</literal>
EOF</userinput></screen>
</listitem>
<listitem>
<para>Для русскоязычных пользователей может подойти такой вариант:</para>
<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
<literal># Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="ruwin_alt_sh-UTF-8"
FONT="cyr-sun16"
# End /etc/sysconfig/console</literal>
EOF</userinput></screen>
<note>
<para>Для поиска нужной раскладки, выполните команду:
<command>find /usr/share/keymaps -type f</command></para>
<para><literal>ruwin_alt-UTF-8</literal> - переключение раскладки по Alt.</para>
<para><literal>ruwin_alt_sh-UTF-8</literal> - переключение раскладки по Alt+Shift.</para>
<para><literal>ruwin_cplk-UTF-8</literal> - переключение раскладки по Caps Lock.</para>
<para><literal>ruwin_ct_sh-UTF-8</literal> - переключение раскладки по Ctrl+Shift.</para>
<para><literal>ruwin_ctrl-UTF-8</literal> - переключение раскладки по Ctrl.</para>
<para>Посмотреть список доступных шрифтов можно с помощью следующей команды:
<command>ls /usr/share/consolefonts</command></para>
</note>
</listitem>
<listitem>
<para>Для не-Unicode настройки необходимы только переменные KEYMAP и FONT. Например,
для польских пользователей может подойти такой вариант:</para>
<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
<literal># Begin /etc/sysconfig/console
KEYMAP="pl2"
FONT="lat2a-16 -m 8859-2"
# End /etc/sysconfig/console</literal>
EOF</userinput></screen>
</listitem>
<listitem>
<para>Как упоминалось выше, иногда бывает необходимо подкорректировать раскладку. Следующий
пример добавляет символ евро к немецкой раскладке:</para>
<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
<literal># Begin /etc/sysconfig/console
KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
FONT="lat0-16 -m 8859-15"
UNICODE="1"
# End /etc/sysconfig/console</literal>
EOF</userinput></screen>
</listitem>
<listitem>
<para>Ниже приведен пример с поддержкой Unicode для болгарского языка, где существует
стандартная раскладка UTF-8:</para>
<!-- This is what is used by jhalfs for creating the console file: whenever
you change the following, please inform the jhalfs maintainer(s). -->
<screen><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
<literal># Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="LatArCyrHeb-16"
# End /etc/sysconfig/console</literal>
EOF</userinput></screen>
</listitem>
<listitem>
<para>Из-за использования 512-символьного шрифта LatArCyrHeb-16 в предыдущем примере,
яркие цвета больше не доступны в консоли Linux, если используется фреймбуфер. Если Вы
хотите использовать яркие цвета без фреймбуфера и можете обходиться без символов, не
относящихся к вашему языку, тогда можно использовать специфичный для вашего языка
256-символьный шрифт, как показано ниже:</para>
<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
<literal># Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="cyr-sun16"
# End /etc/sysconfig/console</literal>
EOF</userinput></screen>
</listitem>
<listitem>
<para>Следующий пример демонстрирует автоматическое преобразование раскладки из ISO-8859-15 в
UTF-8 и включает "мертвые" клавиши в режиме Unicode:</para>
<screen role="nodump"><userinput>cat &gt; /etc/sysconfig/console &lt;&lt; "EOF"
<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</literal>
EOF</userinput></screen>
</listitem>
<listitem>
<para>Некоторые раскладки включают в себя "мертвые" клавиши (то есть клавиши, нажатие
которых само по себе не приводит к появлению на экране символа, но которые влияют на
символ, генерируемый следующей клавишей) или определяют слияние символов (например:
<quote>нажмите Ctrl+. A E чтобы получить &AElig;</quote> в раскладке по умолчанию).
Linux-&linux-version; правильно интерпретирует "мертвые" клавиши и слияния, только
когда исходные символы имеют 8-битные коды. Эта особенность не влияет на раскладки
для европейских языков, поскольку в них "сливаются" два ASCII-символа или добавляются
подчеркивания к неподчеркнутым ASCII-символам. Однако, в режиме UTF-8 могут быть проблемы,
например, для греческого языка, когда необходимо подчеркнуть символ α.
Решением в этой ситуации будет отказ от использования UTF-8 или установка графической
системы X Window, не имеющих подобных ограничений.</para>
</listitem>
<listitem>
<para>Для китайского, японского, корейского и некоторых других языков невозможно настроить
консоль Linux так, чтобы она отображала все необходимые символы. Пользователи, которым
требуются эти языки, должны установить систему X Window, шрифты, покрывающие необходимый
диапазон символов, и правильный метод ввода (например, SCIM поддерживает большое число
разнообразных языков).</para>
</listitem>
</itemizedlist>
<!-- Added because folks keep posting their console file with X questions
to blfs-support list -->
<note>
<para>Файл <filename>/etc/sysconfig/console</filename> управляет только локализацией
текстовой консоли Linux. Он никак не влияет на настройки раскладки клавиатуры и шрифтов
в системе X Window, в сессиях SSH или на последовательном терминале. В этих ситуациях
ограничения, описанные в двух расположенных выше абзацах, не применяются.</para>
</note>
</sect2>
<sect2 id="ch-config-createfiles">
<title>Создание файлов при загрузке</title>
<indexterm zone="ch-config-createfiles">
<primary sortas="d-createfiles">File creation at boot</primary>
<secondary>configuring</secondary>
</indexterm>
<para>Иногда необходимо создавать файлы во время загрузки. Например, часто требуется
каталог <filename class="directory">/tmp/.ICE-unix</filename> . Это можно сделать, создав
запись в скрипте <filename>/etc/sysconfig/createfiles</filename>. Формат этого файла описан
в комментариях файла конфигурации по умолчанию.</para>
</sect2>
<sect2 id="ch-config-sysklogd">
<title>Настройка скрипта Sysklogd</title>
<indexterm zone="ch-config-sysklogd">
<primary sortas="d-sysklogd">sysklogd</primary>
<secondary>configuring</secondary>
</indexterm>
<para>Скрипт <filename>sysklogd</filename> вызывает программу <command>syslogd</command>
как часть инициализации System V. Параметр <parameter>-m 0</parameter> отключает периодическую
(по умолчанию - каждые 20 минут) запись временных меток в файлы журналов, производимую
<command>syslogd</command>. Если Вам необходимо включить периодическую запись временных меток,
отредактируйте файл <filename>/etc/sysconfig/rc.site</filename> и присвойте переменной
SYSKLOGD_PARMS требуемое значение. Например, чтобы сбросить все параметры, присвойте переменной
пустое значение:</para>
<screen role="nodump">SYSKLOGD_PARMS=</screen>
<para>Дополнительные параметры смотрите в <userinput>man syslogd</userinput>.</para>
</sect2>
<sect2 id="ch-config-site">
<title>Файл rc.site</title>
<indexterm zone="ch-config-site">
<primary sortas="a-rc.site">rc.site</primary>
</indexterm>
<para>Необязательный файл <filename>/etc/sysconfig/rc.site</filename> содержит настройки,
автоматически применяемые всеми загрузочными скриптами. Этот файл может содержать парамеры,
обычно указываемые в файлах <filename>hostname</filename>, <filename>console</filename> и
<filename>clock</filename> из каталога <filename class='directory'>/etc/sysconfig/</filename>.
Если значение одной и той же переменной присваивается, как в одном из этих файлов, так и в
<filename>rc.site</filename>, приоритет имеет значение из специализированного файла.</para>
<para><filename>rc.site</filename> также содержит параметры, которые могут настраивать
другие аспекты процесса загрузки. Установка переменной IPROMPT позволит выборочно запускать
загрузочные скрипты. Другие параметры описаны в комментариях к файлу. Версия файла по
умолчанию выглядит следующим образом:</para>
<!-- Use role to fix a pdf generation problem -->
<screen role="auto">&site;</screen>
<sect3>
<title>Настройка скриптов загрузки и завершения работы</title>
<para>Загрузочные скрипты LFS загружают и завершают работу системы довольно эффективно,
но есть несколько настроек, которые вы можете внести в файл rc.site, чтобы еще больше
повысить скорость и настроить сообщения в соответствии с вашими предпочтениями. Чтобы
сделать это, измените настройки в приведенном выше файле
<filename>/etc/sysconfig/rc.site</filename>.</para>
<itemizedlist>
<listitem><para>Во время работы загрузочного скрипта <filename>udev</filename> происходит
вызов <command>udev settle</command>, для завершения которого требуется некоторое время.
Это время может и не потребоваться в зависимости от конфигурации устройств в системе. Если
у вас имеются только простые разделы и одна сетевая карта, процессу загрузки, вероятно,
не нужно будет ждать завершения работы этой команды. Чтобы пропустить её, установите переменную
OMIT_UDEV_SETTLE=y.</para></listitem>
<listitem><para>Скрипт загрузки <filename>udev_retry</filename> также по умолчанию
запускает <command>udev settle</command>. Команда необходима только тогда, когда
каталог <filename class='directory'>/var</filename> смонтирован в отдельный раздел.
Это связано с тем, что часам нужен доступ к файлу <filename>/var/lib/hwclock/adjtime</filename>.
Для других настроек также может потребоваться дождаться завершения udev, но в большинстве
случаев в этом нет необходимости. Пропустите команду, установив переменную OMIT_UDEV_RETRY_SETTLE=y.
</para></listitem>
<listitem><para>По умолчанию проверка файловой системы выполняется в "тихом" режиме.
Это может показаться задержкой во время процесса загрузки. Чтобы включить вывод
<command>fsck</command>, установите переменную VERBOSE_FSCK=y.
</para></listitem>
<listitem><para>При перезагрузке вы, возможно, захотите полностью пропустить проверку
файловой системы, <command>fsck</command>. Чтобы сделать это, либо создайте файл
<filename>/fastboot</filename>, либо перезагрузите систему командой
<command>/sbin/shutdown -f -r now</command>. С другой стороны, вы можете принудительно
проверить все файловые системы, создав <filename>/forcefsck</filename> или запустив
<command>shutdown</command> с параметром <parameter>-F</parameter> вместо <parameter>-f</parameter>.</para>
<para>Установка переменной FASTBOOT=y отключит <command>fsck</command> во время процесса
загрузки до тех пор, пока она не будет удалена. Это не рекомендуется делать на постоянной
основе.</para></listitem>
<listitem><para>Обычно все файлы в каталоге <filename class='directory'>/tmp</filename>
удаляются во время загрузки. В зависимости от количества имеющихся файлов или каталогов
это может привести к заметной задержке в процессе загрузки. Чтобы пропустить удаление
этих файлов, установите переменную SKIPTMPCLEAN=y.</para></listitem>
<listitem><para>Во время завершения работы, <command>init</command> отправляет сигнал TERM
каждой запущенной программе (например, agetty), ожидает установленное время (по умолчанию 3
секунды), затем посылает каждому процессу сигнал завершения(KILL) и снова ждёт. Этот процесс
повторяется в сценарии <command>sendsignals</command> для любых процессов, которые не завершаются
их собственными скриптами. Задержка для <command>init</command> может быть установлена путем
передачи параметра. Например, чтобы устранить задержку в <command>init</command>, передайте
параметр -t0 при выключении или перезагрузке (например, <command>/sbin/shutdown -t0 -r now</command>).
Задержку для скрипта <command>sendsignals</command> можно пропустить, установив параметр
KILLDELAY=0.</para></listitem>
</itemizedlist>
</sect3>
</sect2>
</sect1>