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