lfs-ru/chapter09/usage.xml

633 lines
42 KiB
XML
Raw Normal View History

2023-05-23 09:22:34 +03:00
<?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"?>
2023-06-13 15:01:26 +03:00
<title>Настройка и использование загрузочных скриптов System V</title>
2023-05-23 09:22:34 +03:00
<indexterm zone="ch-config-usage">
<primary sortas="a-Bootscripts">Bootscripts</primary>
<secondary>usage</secondary>
</indexterm>
<sect2>
2023-06-13 15:01:26 +03:00
<title>Как работают загрузочные скрипты System V?</title>
2023-07-23 21:49:49 +03:00
<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. (На самом деле уровней
2023-06-13 15:01:26 +03:00
больше, но они предназначены для особых случаев и обычно не используются. Подробности смотрите в
2023-07-23 21:49:49 +03:00
руководстве <filename>init(8)</filename>). Каждый из них соответствует действиям, которые компьютер
должен выполнить при запуске и выключении. Уровень выполнения по умолчанию — 3. Ниже приведено
описание различных уровней в том виде, в каком они реализованы в LFS:</para>
2023-06-13 15:01:26 +03:00
<literallayout>0: выключение компьютера
1: однопользовательский режим
2: зарезервировано для настройки, в остальном аналогично 3
3: многопользовательский режим с поддержкой сети
4: зарезервировано для настройки, в остальном аналогично 3
5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например,
<command>gdm</command> от GNOME или <command>lxdm</command> от LXDE)
6: перезагрузка компьютера</literallayout>
2023-05-23 09:22:34 +03:00
<note>
<para>
2023-06-13 15:01:26 +03:00
Раньше, много лет назад, уровень выполнения 2 обозначался как "многопользовательский
2023-07-23 21:49:49 +03:00
режим без поддержки сети", тогда, несколько пользователей могли подключаться к системе
через последовательные порты. В сегодняшних условиях это не имеет смысла, и мы обозначаем
этот уровень как "зарезервировано".
2023-05-23 09:22:34 +03:00
</para>
</note>
</sect2>
<sect2 id="conf-sysvinit" role="configuration">
2023-06-13 15:01:26 +03:00
<title>Настройка Sysvinit</title>
2023-05-23 09:22:34 +03:00
<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>
2023-07-23 21:49:49 +03:00
<para>Во время инициализации ядра первой запускаемой программой (если она не переопределена
в командной строке) является <command>init</command>. Эта программа считывает файл инициализации
<filename>/etc/inittab</filename>. Создайте этот файл:</para>
2023-05-23 09:22:34 +03:00
<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>
2023-06-13 15:01:26 +03:00
<para>Пояснения по содержимому этого файла инициализации находится на справочной
2023-07-23 21:49:49 +03:00
странице <emphasis>inittab</emphasis>. Для LFS основной командой является <command>rc</command>.
2023-06-13 15:01:26 +03:00
В приведенном выше файле инициализации, <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>
2023-07-23 21:49:49 +03:00
<para>Для удобства, скрипт <command>rc</command> считывает библиотеку функций из
2023-06-13 15:01:26 +03:00
<filename class="directory">/lib/lsb/init-functions</filename>. Эта библиотека также читает
2023-07-23 21:49:49 +03:00
необязательный файл конфигурации <filename>/etc/sysconfig/rc.site</filename>. В этот файл
можно поместить любой из параметров конфигурации системы, описанных в последующих разделах,
что позволяет объединить все параметры системы в одном файле.</para>
2023-06-13 15:01:26 +03:00
<para>Для удобства отладки скрипт functions также записывает весь вывод в
<filename>/run/var/bootlog</filename>. Поскольку каталог <filename class="directory">/run</filename>
2023-07-23 21:49:49 +03:00
является tmpfs, этот файл не сохраняется при загрузке; однако его содержимое добавляется в
файл <filename>/var/log/boot.log</filename> по окончании процесса загрузки.</para>
2023-05-23 09:22:34 +03:00
<sect3 id="init-levels" >
2023-06-13 15:01:26 +03:00
<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> (где ? - номер уровня выполнения),
2023-07-23 21:49:49 +03:00
все они содержат ряд символических ссылок. Некоторые ссылки начинаются с <emphasis>K</emphasis>,
2023-06-13 15:01:26 +03:00
другие начинаются с <emphasis>S</emphasis>, и все они содержат две цифры после начальной буквы.
K означает остановить (убить) службу, а S означает запустить службу. Числа определяют порядок
2023-07-23 21:49:49 +03:00
выполнения сценариев от 00 до 99&mdash;чем меньше число, тем раньше запускается скрипт.
2023-06-13 15:01:26 +03:00
Когда <command>init</command> переключается на другой уровень выполнения,
2023-07-23 21:49:49 +03:00
соответствующие службы либо запускаются, либо останавливаются, в зависимости от выбранного
уровня выполнения.</para>
2023-06-13 15:01:26 +03:00
<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>
2023-05-23 09:22:34 +03:00
<!-- 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>
-->
2023-06-13 15:01:26 +03:00
<para>Ниже приведено описание к аргументам скриптов:</para>
2023-05-23 09:22:34 +03:00
<variablelist>
<varlistentry>
<term><parameter>start</parameter></term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Служба запущена.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>stop</parameter></term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Служба остановлена.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>restart</parameter></term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Служба остановлена и снова запущена.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>reload</parameter></term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Конфигурация сервиса обновлена. Используется после изменения файла
конфигурации службы, когда перезапуск не требуется.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>status</parameter></term>
<listitem>
2023-06-13 15:01:26 +03:00
<para> Сообщает, запущена ли служба и с какими ИД процессов.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
</variablelist>
2023-06-13 15:01:26 +03:00
<para>Не стесняйтесь изменять работу процесса загрузки (в конце концов,
это ваша собственная система LFS). Приведенные здесь файлы являются примером того, как
это можно сделать.</para>
2023-05-23 09:22:34 +03:00
</sect3>
</sect2>
<sect2>
2023-06-13 15:01:26 +03:00
<title>Загрузочные скрипты Udev</title>
<para>Инит-скрипт <filename>/etc/rc.d/init.d/udev</filename> запускает <command>udevd</command>,
который инициализирует все устройства "холодного подключения", которые уже были созданы ядром, и
ожидает выполнения всех правил. Скрипт также отключает обработчик uevent по умолчанию
<filename>/sbin/hotplug</filename>. Это сделано потому, что ядру больше не нужно обращаться к
внешнему бинарному файлу. Вместо этого <command>udevd</command> будет прослушивать сокет netlink
2023-07-23 21:49:49 +03:00
на предмет событий, которые вызывает ядро.</para>
2023-06-13 15:01:26 +03:00
<para>Инит-скрипт <command>/etc/rc.d/init.d/udev_retry</command> решает задачу повторного запуска
событий для подсистем, правила которых могут зависеть от файловых систем, которые не монтируются до
запуска скрипта <command>mountfs</command> (в частности, его вызывают <filename class="directory">/usr</filename>
и <filename class="directory">/var</filename>). Этот скрипт запускается после скрипта
2023-07-23 21:49:49 +03:00
<command>mountfs</command>, поэтому эти правила (при повторном запуске) должны сработать во второй раз.
Он настраивается в файле <filename>/etc/sysconfig/udev_retry</filename>; любые слова в этом файле,
кроме комментариев, являются именами подсистем, которые запускаются при повторной попытке. Чтобы найти
2023-06-13 15:01:26 +03:00
подсистему устройства, используйте <command>udevadm info --attribute-walk &lt;device&gt;</command>,
где &lt;device&gt; - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или /sys/class/rtc.</para>
<para>Для получения информации о загрузке модуля ядра и udev смотрите
2023-05-23 09:22:34 +03:00
<xref linkend="module-loading"/>.</para>
</sect2>
<sect2 id="ch-config-clock">
2023-06-13 15:01:26 +03:00
<title>Настройка системного времени</title>
2023-05-23 09:22:34 +03:00
<indexterm zone="ch-config-clock">
<primary sortas="d-setclock">setclock</primary>
<secondary>configuring</secondary></indexterm>
2023-06-13 15:01:26 +03:00
<para>Скрипт <command>setclock</command> считывает время с аппаратных часов, также известных как
часы BIOS или CMOS (Complementary Metal Oxide Semiconductor). Если на аппаратных часах установлено
время UTC (всемирное скоординированное время), этот скрипт преобразует полученное значение в
локальное время, используя файл <filename>/etc/localtime</filename> (который сообщает программе
<command>hwclock</command>, в какой временной зоне находится пользователь). Невозможно определить,
2023-08-02 23:14:31 +03:00
установленное на аппаратных часах время UTC или же локальное, поэтому необходимо указать его вручную.</para>
2023-06-13 15:01:26 +03:00
<para>Скрипт <command>setclock</command> запускается системой <application>udev</application> при
загрузке, когда ядро определяет возможности аппаратного обеспечения. Также его можно запустить
вручную с параметром stop, чтобы сохранить системное время в аппаратные часы CMOS.</para>
<para> Если Вы не можете вспомнить, установлено на аппаратных часах UTC или локальное время,
запустите команду <userinput>hwclock --localtime --show</userinput>. Она отобразит текущее
время в соответствии с аппаратными часами. Если оно совпадает с тем, что показывают ваши
настенные/наручные часы, значит на часах CMOS установлено локальное время. Если вывод
<command>hwclock</command> не совпадает с локальным временем, скорее всего, это UTC. Проверьте
2023-07-23 21:49:49 +03:00
это, добавив или вычитая нужное количество часов для вашего часового пояса ко времени,
2023-08-02 23:14:31 +03:00
отображаемому <command>hwclock</command>. Например, если ваш часовой пояс это MSK, также
2023-07-23 21:49:49 +03:00
известный как GMT +0300, то нужно вычесть три часа из локального времени.</para>
2023-06-13 15:01:26 +03:00
<para>Измените значение переменной <envar>UTC</envar> ниже на <parameter>0</parameter> (ноль),
если на аппаратных часах установлено <emphasis>НЕ</emphasis> UTC.</para>
<para>Создайте новый файл <filename>/etc/sysconfig/clock</filename> выполнив:</para>
2023-05-23 09:22:34 +03:00
<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>
2023-06-13 15:01:26 +03:00
<para>Хороший совет, объясняющий, как обращаться с временем в LFS, доступен по адресу
<ulink url="&hints-root;time.txt"/>. Там объясняются такие вопросы, как часовые пояса,
UTC и переменная окружения <envar>TZ</envar>.</para>
2023-05-23 09:22:34 +03:00
2023-06-13 15:01:26 +03:00
<note><para>Параметры CLOCKPARAMS и UTC также могут быть указаны в файле
<filename>/etc/sysconfig/rc.site</filename>.</para></note>
2023-05-23 09:22:34 +03:00
</sect2>
<sect2 id="ch-config-console">
<?dbhtml filename="console.html"?>
2023-06-13 15:01:26 +03:00
<title>Настройка консоли Linux</title>
2023-05-23 09:22:34 +03:00
<indexterm zone="ch-config-console">
<primary sortas="d-console">console</primary>
<secondary>configuring</secondary>
</indexterm>
2023-06-13 15:01:26 +03:00
<para>Эта секция описывает настройку скрипта <command>console</command>, который устанавливает
раскладку клавиатуры, шрифт консоли и уровень подробности информации, выводимой ядром на
консоль. Если Вы не планируете использовать символы, не соответствующие стандарту ASCII
(например, знак копирайта, символы фунта и евро), и собираетесь печатать только в английской
раскладке, то можете пропустить большую часть секции. Без файла конфигурации (или эквивалентных
настроек в <filename>rc.site</filename>), скрипт <command>console</command> не будет ничего делать.</para>
<para>Скрипт <command>console</command> считывает конфигурацию из файла
<filename>/etc/sysconfig/console</filename>. Решите для себя, какую раскладку клавиатуры и
2023-07-23 21:49:49 +03:00
какой шрифт намерены использовать. В этом также могут помочь различные HOWTO для конкретных языков;
2023-06-13 15:01:26 +03:00
смотрите <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> допустимые раскладки и экранные
шрифты. Прочтите справочные страницы <filename>loadkeys(1)</filename> и
<filename>setfont(8)</filename>, чтобы определить правильные аргументы для этих программ.</para>
<para>Файл <filename>/etc/sysconfig/console</filename> должен содержать строки вида:
ПЕРЕМЕННАЯ="значение". Допустимы следующие переменные:</para>
2023-05-23 09:22:34 +03:00
<variablelist>
<varlistentry>
<term>LOGLEVEL</term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Эта переменная задает уровень подробности сообщений, посылаемых ядром на системную
консоль. Значение этой переменной передается в качестве аргумента утилите
<command>dmesg -n</command>. Допустимы уровни от "1" (нет сообщений) до "8". По умолчанию
"7".</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term>KEYMAP</term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Эта переменная указывает аргументы для программы <command>loadkeys</command>, обычно
это имя загружаемой раскладки, например, <quote>it</quote>. Если эта переменная не
установлена, загрузочный скрипт не будет запускать программу loadkeys, и будет использоваться
раскладка по умолчанию. Обратите внимание, что некоторые раскладки имеют несколько версий с
одним и тем же именем (cz и его варианты в qwerty/ и qwertz/, es в olpc/ и qwerty/ и trf в
fgGIod/ и qwerty/). В этих случаях также следует указать родительский каталог (например,
qwerty/es), чтобы обеспечить загрузку правильной раскладки.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term>KEYMAP_CORRECTIONS</term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Эта (крайне редко используемая) переменная задает аргументы для второго вызова
программы <command>loadkeys</command>. Она полезна, если стандартная раскладка вас не
совсем устраивает и необходимо внести небольшую корректировку. Например, чтобы добавить
символ евро в раскладку, которая его не содержит, присвойте этой переменной значение
<quote>euro2</quote>.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term>FONT</term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Эта переменная определяет аргументы для программы <command>setfont</command>. Обычно
она включает в себя имя шрифта <quote>-m</quote> и имя загружаемой таблицы символов. Например,
чтобы загрузить шрифт <quote>lat1-16</quote> вместе с таблицей символов <quote>8859-1</quote>
2023-07-23 21:49:49 +03:00
(подходит для США), установите эту переменную в <quote>lat1-16 -m 8859-1</quote>. В режиме
UTF-8 ядро использует таблицу символов для преобразования 8-битных кодов клавиш в UTF-8,
поэтому аргумент параметра "-m" должен быть установлен на кодировку соответствующих кодов
клавиш в раскладке.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term>UNICODE</term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Присвойте этой переменной значение <quote>1</quote>, <quote>yes</quote> или
<quote>true</quote>, чтобы переключить консоль в режим UTF-8. Это полезно при использовании
локали, основанной на UTF-8, и не рекомендуется в иных случаях.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
<varlistentry>
<term>LEGACY_CHARSET</term>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Для многих раскладок клавиатуры в пакете Kbd не существует готового Unicode-варианта.
Скрипт <command>console</command> будет на лету конвертировать имеющуюся раскладку в UTF-8,
если присвоить этой переменной имя доступной не-UTF-8 раскладки.</para>
2023-05-23 09:22:34 +03:00
</listitem>
</varlistentry>
</variablelist>
2023-06-13 15:01:26 +03:00
<para>Несколько примеров:</para>
2023-05-23 09:22:34 +03:00
<itemizedlist>
<listitem>
2023-06-13 15:01:26 +03:00
<para>Для не-Unicode настройки необходимы только переменные KEYMAP и FONT. Например,
для польских пользователей может подойти такой вариант:</para>
2023-05-23 09:22:34 +03:00
<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>
2023-06-13 15:01:26 +03:00
<para>Как упоминалось выше, иногда бывает необходимо подкорректировать раскладку. Следующий
пример добавляет символ евро к немецкой раскладке:</para>
2023-05-23 09:22:34 +03:00
<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>
2023-06-13 15:01:26 +03:00
<para>Ниже приведен пример с поддержкой Unicode для болгарского языка, где существует
стандартная раскладка UTF-8:</para>
2023-05-23 09:22:34 +03:00
<!-- 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>
2023-06-13 15:01:26 +03:00
<para>Из-за использования 512-символьного шрифта LatArCyrHeb-16 в предыдущем примере,
яркие цвета больше не доступны в консоли Linux, если используется фреймбуфер. Если Вы
хотите использовать яркие цвета без фреймбуфера и можете обходиться без символов, не
относящихся к вашему языку, тогда можно использовать специфичный для вашего языка
256-символьный шрифт, как показано ниже:</para>
2023-05-23 09:22:34 +03:00
<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>
2023-06-13 15:01:26 +03:00
<para>Следующий пример демонстрирует автоматическое преобразование раскладки из ISO-8859-15 в
UTF-8 и включает "мертвые" клавиши в режиме Unicode:</para>
2023-05-23 09:22:34 +03:00
<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>
2023-06-13 15:01:26 +03:00
<para>Некоторые раскладки включают в себя "мертвые" клавиши (то есть клавиши, нажатие
которых само по себе не приводит к появлению на экране символа, но которые влияют на
символ, генерируемый следующей клавишей) или определяют слияние символов (например:
<quote>нажмите Ctrl+. A E чтобы получить &AElig;</quote> в раскладке по умолчанию).
Linux-&linux-version; правильно интерпретирует "мертвые" клавиши и слияния, только
когда исходные символы имеют 8-битные коды. Эта особенность не влияет на раскладки
для европейских языков, поскольку в них "сливаются" два ASCII-символа или добавляются
подчеркивания к неподчеркнутым ASCII-символам. Однако, в режиме UTF-8 могут быть проблемы,
например, для греческого языка, когда необходимо подчеркнуть символ <quote>alpha</quote>.
Решением в этой ситуации будет отказ от использования UTF-8 или установка графической
системы X Window, не имеющих подобных ограничений.</para>
2023-05-23 09:22:34 +03:00
</listitem>
<listitem>
2023-08-02 23:14:31 +03:00
<para>Для китайского, японского, корейского и некоторых других языков невозможно настроить
2023-06-13 15:01:26 +03:00
консоль Linux так, чтобы она отображала все необходимые символы. Пользователи, которым
требуются эти языки, должны установить систему X Window, шрифты, покрывающие необходимый
2023-07-23 21:49:49 +03:00
диапазон символов, и правильный метод ввода (например, SCIM поддерживает большое число
2023-06-13 15:01:26 +03:00
разнообразных языков).</para>
2023-05-23 09:22:34 +03:00
</listitem>
</itemizedlist>
<!-- Added because folks keep posting their console file with X questions
to blfs-support list -->
<note>
2023-06-13 15:01:26 +03:00
<para>Файл <filename>/etc/sysconfig/console</filename> управляет только локализацией
текстовой консоли Linux. Он никак не влияет на настройки раскладки клавиатуры и шрифтов
в системе X Window, в сессиях SSH или на последовательном терминале. В этих ситуациях
ограничения, описанные в двух расположенных выше абзацах, не применяются.</para>
2023-05-23 09:22:34 +03:00
</note>
</sect2>
<sect2 id="ch-config-createfiles">
2023-06-13 15:01:26 +03:00
<title>Создание файлов при загрузке</title>
2023-05-23 09:22:34 +03:00
<indexterm zone="ch-config-createfiles">
<primary sortas="d-createfiles">File creation at boot</primary>
<secondary>configuring</secondary>
</indexterm>
2023-06-13 15:01:26 +03:00
<para>Иногда необходимо создавать файлы во время загрузки. Например, часто требуется
каталог <filename class="directory">/tmp/.ICE-unix</filename> . Это можно сделать, создав
запись в скрипте <filename>/etc/sysconfig/createfiles</filename>. Формат этого файла описан
в комментариях файла конфигурации по умолчанию.</para>
2023-05-23 09:22:34 +03:00
</sect2>
<sect2 id="ch-config-sysklogd">
2023-07-23 21:49:49 +03:00
<title>Настройка скрипта Sysklogd</title>
2023-05-23 09:22:34 +03:00
<indexterm zone="ch-config-sysklogd">
<primary sortas="d-sysklogd">sysklogd</primary>
<secondary>configuring</secondary>
</indexterm>
2023-06-13 15:01:26 +03:00
<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>
2023-05-23 09:22:34 +03:00
<screen role="nodump">SYSKLOGD_PARMS=</screen>
2023-06-13 15:01:26 +03:00
<para>Дополнительные параметры смотрите в <userinput>man syslogd</userinput>.</para>
2023-05-23 09:22:34 +03:00
</sect2>
<sect2 id="ch-config-site">
2023-06-13 15:01:26 +03:00
<title>Файл rc.site</title>
2023-05-23 09:22:34 +03:00
<indexterm zone="ch-config-site">
<primary sortas="a-rc.site">rc.site</primary>
</indexterm>
2023-06-13 15:01:26 +03:00
<para>Необязательный файл <filename>/etc/sysconfig/rc.site</filename> содержит настройки,
автоматически применяемые всеми загрузочными скриптами. Этот файл может содержать парамеры,
обычно указываемые в файлах <filename>hostname</filename>, <filename>console</filename> и
<filename>clock</filename> из каталога <filename class='directory'>/etc/sysconfig/</filename>.
2023-07-23 21:49:49 +03:00
Если значение одной и той же переменной присваивается, как в одном из этих файлов, так и в
2023-06-13 15:01:26 +03:00
<filename>rc.site</filename>, приоритет имеет значение из специализированного файла.</para>
2023-05-23 09:22:34 +03:00
2023-06-13 15:01:26 +03:00
<para><filename>rc.site</filename> также содержит параметры, которые могут настраивать
другие аспекты процесса загрузки. Установка переменной IPROMPT позволит выборочно запускать
загрузочные скрипты. Другие параметры описаны в комментариях к файлу. Версия файла по
умолчанию выглядит следующим образом:</para>
2023-05-23 09:22:34 +03:00
<!-- Use role to fix a pdf generation problem -->
<screen role="auto">&site;</screen>
<sect3>
2023-06-13 15:01:26 +03:00
<title>Настройка скриптов загрузки и завершения работы</title>
2023-05-23 09:22:34 +03:00
2023-06-13 15:01:26 +03:00
<para>Загрузочные скрипты LFS загружают и завершают работу системы довольно эффективно,
но есть несколько настроек, которые вы можете внести в файл rc.site, чтобы еще больше
повысить скорость и настроить сообщения в соответствии с вашими предпочтениями. Чтобы
сделать это, измените настройки в приведенном выше файле
<filename>/etc/sysconfig/rc.site</filename>.</para>
2023-05-23 09:22:34 +03:00
<itemizedlist>
2023-06-13 15:01:26 +03:00
<listitem><para>Во время работы загрузочного скрипта <filename>udev</filename> происходит
вызов <command>udev settle</command>, для завершения которого требуется некоторое время.
Это время может и не потребоваться в зависимости от конфигурации устройств в системе. Если
у вас имеются только простые разделы и одна сетевая карта, процессу загрузки, вероятно,
не нужно будет ждать завершения работы этой команды. Чтобы пропустить её, установите переменную
OMIT_UDEV_SETTLE=y.</para></listitem>
<listitem><para>Скрипт загрузки <filename>udev_retry</filename> также по умолчанию
2023-07-23 21:49:49 +03:00
запускает <command>udev settle</command>. Команда необходима только тогда, когда
2023-06-13 15:01:26 +03:00
каталог <filename class='directory'>/var</filename> смонтирован в отдельный раздел.
Это связано с тем, что часам нужен доступ к файлу <filename>/var/lib/hwclock/adjtime</filename>.
2023-07-23 21:49:49 +03:00
Для других настроек также может потребоваться дождаться завершения udev, но в большинстве
случаев в этом нет необходимости. Пропустите команду, установив переменную OMIT_UDEV_RETRY_SETTLE=y.
2023-05-23 09:22:34 +03:00
</para></listitem>
2023-06-13 15:01:26 +03:00
<listitem><para>По умолчанию проверка файловой системы выполняется в "тихом" режиме.
Это может показаться задержкой во время процесса загрузки. Чтобы включить вывод
<command>fsck</command>, установите переменную VERBOSE_FSCK=y.
2023-05-23 09:22:34 +03:00
</para></listitem>
2023-06-13 15:01:26 +03:00
<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
2023-07-23 21:49:49 +03:00
секунды), затем посылает каждому процессу сигнал завершения(KILL) и снова ждёт. Этот процесс
2023-06-13 15:01:26 +03:00
повторяется в сценарии <command>sendsignals</command> для любых процессов, которые не завершаются
их собственными скриптами. Задержка для <command>init</command> может быть установлена путем
передачи параметра. Например, чтобы устранить задержку в <command>init</command>, передайте
параметр -t0 при выключении или перезагрузке (например, <command>/sbin/shutdown -t0 -r now</command>).
Задержку для скрипта <command>sendsignals</command> можно пропустить, установив параметр
KILLDELAY=0.</para></listitem>
2023-05-23 09:22:34 +03:00
</itemizedlist>
</sect3>
</sect2>
</sect1>