mirror of
https://github.com/Poltern/lfs-ru.git
synced 2024-10-19 12:10:32 +03:00
693 lines
46 KiB
XML
693 lines
46 KiB
XML
<?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 > /etc/inittab << "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><runlevel></replaceable></command>, где
|
||
<replaceable><runlevel></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—чем меньше число, тем раньше запускается скрипт.
|
||
Когда <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 <device></command>,
|
||
где <device> - это абсолютный путь в /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 > /etc/sysconfig/clock << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 > /etc/sysconfig/console << "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 чтобы получить Æ</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>
|