From 5a6834585c43296c2207f5f251d3d5c237c7c8d2 Mon Sep 17 00:00:00 2001 From: Sn4il Date: Wed, 6 Mar 2024 10:25:41 +0300 Subject: Update LFS mirror --- lfs-12.1-sysv/chapter09/bootscripts.html | 513 ++++++++++++++ lfs-12.1-sysv/chapter09/chapter09.html | 115 +++ lfs-12.1-sysv/chapter09/etcshells.html | 111 +++ lfs-12.1-sysv/chapter09/inputrc.html | 156 +++++ lfs-12.1-sysv/chapter09/introduction.html | 182 +++++ lfs-12.1-sysv/chapter09/locale.html | 256 +++++++ lfs-12.1-sysv/chapter09/network.html | 342 +++++++++ lfs-12.1-sysv/chapter09/symlinks.html | 430 ++++++++++++ lfs-12.1-sysv/chapter09/udev.html | 490 +++++++++++++ lfs-12.1-sysv/chapter09/usage.html | 1081 +++++++++++++++++++++++++++++ 10 files changed, 3676 insertions(+) create mode 100644 lfs-12.1-sysv/chapter09/bootscripts.html create mode 100644 lfs-12.1-sysv/chapter09/chapter09.html create mode 100644 lfs-12.1-sysv/chapter09/etcshells.html create mode 100644 lfs-12.1-sysv/chapter09/inputrc.html create mode 100644 lfs-12.1-sysv/chapter09/introduction.html create mode 100644 lfs-12.1-sysv/chapter09/locale.html create mode 100644 lfs-12.1-sysv/chapter09/network.html create mode 100644 lfs-12.1-sysv/chapter09/symlinks.html create mode 100644 lfs-12.1-sysv/chapter09/udev.html create mode 100644 lfs-12.1-sysv/chapter09/usage.html (limited to 'lfs-12.1-sysv/chapter09') diff --git a/lfs-12.1-sysv/chapter09/bootscripts.html b/lfs-12.1-sysv/chapter09/bootscripts.html new file mode 100644 index 0000000..ebcc945 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/bootscripts.html @@ -0,0 +1,513 @@ + + + + + + 9.2. LFS-Bootscripts-20230728 + + + + + + + + +

+ 9.2. + LFS-Bootscripts-20230728 +

+
+
+

+ Пакет LFS-Bootscripts содержит набор скриптов для запуска/остановки + системы LFS при загрузке/завершении работы. Файлы конфигурации и + процедуры, необходимые для настройки /процесса загрузки, описаны в + следующих разделах. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 244 KB +
+
+
+
+
+

+ 9.2.1. Установка пакета LFS-Bootscripts +

+

+ Установите пакет: +

+
make install
+
+
+

+ 9.2.2. + Содержимое пакета LFS-Bootscripts +

+
+
+
+ Установленные скрипты: + checkfs, cleanfs, console, functions, + halt, ifdown, ifup, localnet, modules, mountfs, mountvirtfs, + network, rc, reboot, sendsignals, setclock, ipv4-static, swap, + sysctl, sysklogd, template, udev и udev_retry +
+
+ Созданные каталоги: + /etc/rc.d, /etc/init.d (символическая + ссылка), /etc/sysconfig, /lib/services, /lib/lsb (символическая + ссылка) +
+
+
+
+

+ Краткое описание +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ checkfs +

+
+

+ Проверяет целостность файловых систем перед их + монтированием (за исключением журналируемых и сетевых + файловых систем) +

+
+

+ cleanfs +

+
+

+ Удаляет файлы, которые не должны сохраняться между + перезагрузками, например, те, которые находятся в + директориях /run/ и + /var/lock/; скрипт + пересоздает /run/utmp и + удаляет файлы, которые, возможно, существуют /etc/nologin, /fastboot, и /forcefsck +

+
+

+ console +

+
+

+ Загружает правильную таблицу раскладок для требуемой + раскладки клавиатуры; он также устанавливает экранный + шрифт +

+
+

+ functions +

+
+

+ Содержит общие функции, такие как проверка ошибок и + состояния, которые используются несколькими загрузочными + скриптами +

+
+

+ halt +

+
+

+ Останавливает работу системы +

+
+

+ ifdown +

+
+

+ Останавливает сетевое устройство +

+
+

+ ifup +

+
+

+ Инициализирует сетевое устройство +

+
+

+ localnet +

+
+

+ Настраивает имя хоста системы и локальное устройство + loopback +

+
+

+ modules +

+
+

+ Загружает модули ядра из списка, который находится в + файле /etc/sysconfig/modules, используя + указанные там же аргументы +

+
+

+ mountfs +

+
+

+ Монтирует все файловые системы, кроме тех, которые + помечены как noauto или сетевых файловых + систем +

+
+

+ mountvirtfs +

+
+

+ Монтирует виртуальные файловые системы, такие как + proc +

+
+

+ network +

+
+

+ Выполняет настройку сетевых интерфейсов, например, + сетевых карт, и настаивает шлюз по-умолчанию (где это + применимо) +

+
+

+ rc +

+
+

+ Основной сценарий управления; он отвечает за запуск всех + остальных загрузочных скриптов один за другим, в + последовательности, определяемой именами символических + ссылок на другие скрипты. +

+
+

+ reboot +

+
+

+ Перезагружает систему +

+
+

+ sendsignals +

+
+

+ Обеспечивает завершение каждого процесса перед + перезагрузкой или остановкой системы. +

+
+

+ setclock +

+
+

+ Сбрасывает системные часы на местное время, если + аппаратные часы не установлены на всемирное + координированное время (UTC). +

+
+

+ ipv4-static +

+
+

+ Предоставляет функциональные возможности, необходимые для + назначения статического адреса сетевому интерфейсу. +

+
+

+ swap +

+
+

+ Включает и отключает файлы и разделы, используемые для + подкачки. +

+
+

+ sysctl +

+
+

+ Загружает в работающее ядро значения системных настроек + из файла /etc/sysctl.conf, + если этот файл существует +

+
+

+ sysklogd +

+
+

+ Запускает и останавливает демоны журналирования + сообщений, выдаваемых системой и ядром. +

+
+

+ template +

+
+

+ Шаблон для создания пользовательских загрузочных скриптов + для других демонов +

+
+

+ udev +

+
+

+ Подготавливает каталог /dev + и запускает демон udev +

+
+

+ udev_retry +

+
+

+ Повторяет неудачные попытки запуска udev uevents и + копирует сгенерированные файлы правил из /run/udev в /etc/udev/rules.d если требуется. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/chapter09.html b/lfs-12.1-sysv/chapter09/chapter09.html new file mode 100644 index 0000000..0d7f3eb --- /dev/null +++ b/lfs-12.1-sysv/chapter09/chapter09.html @@ -0,0 +1,115 @@ + + + + + + Глава 9. Системные настройки + + + + + + + + +

+ 9. Системные настройки +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter09/etcshells.html b/lfs-12.1-sysv/chapter09/etcshells.html new file mode 100644 index 0000000..0b95e4a --- /dev/null +++ b/lfs-12.1-sysv/chapter09/etcshells.html @@ -0,0 +1,111 @@ + + + + + + 9.9. Создание файла /etc/shells + + + + + + + + +

+ 9.9. Создание + файла /etc/shells +

+
+

+ Файл shells содержит список оболочек + входа в систему. Приложения используют этот файл для определения + корректности оболочки. Для каждой оболочки должна присутствовать одна + строка, состоящая из пути к файлу оболочки относительно корня + структуры каталогов (/). +

+

+ Например, chsh + обращается к этому файлу, чтобы определить, может ли + непривилегированный пользователь изменить оболочку входа для своей + учетной записи. Если имя команды не указано в списке, пользователю + будет отказано в возможности изменять оболочки. +

+

+ Это обязательное условие для таких приложений, как GDM, которые не заполняют список пользователей, + если ему не удаётся найти /etc/shells, + или демонов FTP, которые традиционно запрещают доступ пользователям с + оболочками, не включенными в этот файл. +

+
cat > /etc/shells << "EOF"
+# Begin /etc/shells
+
+/bin/sh
+/bin/bash
+
+# End /etc/shells
+EOF
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/inputrc.html b/lfs-12.1-sysv/chapter09/inputrc.html new file mode 100644 index 0000000..f1d2811 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/inputrc.html @@ -0,0 +1,156 @@ + + + + + + 9.8. Создание файла /etc/inputrc + + + + + + + + +

+ 9.8. Создание + файла /etc/inputrc +

+
+

+ Файл inputrc это конфигурационный файл + библиотеки readline, который предоставляет возможности + редактирования, когда пользователь вводит строку с терминала. Он + работает путем преобразования ввода с клавиатуры в определенные + действия. Readline используется bash и большинством других оболочек, + а также многими другими приложениями. +

+

+ Большинство людей не нуждаются в специальных настройках, поэтому + приведенная ниже команда создает глобальный /etc/inputrc, используемый всеми, кто входит в + систему. Если позже вы решите, что вам нужно переопределить значения + по умолчанию для одного из пользователей, вы можете создать файл + .inputrc в домашнем каталоге + пользователя и указать в нём измененные настройки. +

+

+ Дополнительные сведения о редактировании файла inputrc см. в разделе info bash в секции Readline Init File. Также хорошим + источником информации является info + readline. +

+

+ Ниже приведен общий глобальный inputrc + с комментариями, объясняющими, что делают различные параметры. + Обратите внимание, что комментарии не могут находиться в той же + строке, что и команды. Создайте файл с помощью следующей команды: +

+
cat > /etc/inputrc << "EOF"
+# Begin /etc/inputrc
+# Modified by Chris Lynn <roryo@roryo.dynup.net>
+
+# Разрешить перенос приглашения оболочки на следующую строку
+set horizontal-scroll-mode Off
+
+# Разрешить 8-битный ввод
+set meta-flag On
+set input-meta On
+
+# Отключить обрезание восьмого бита в вводимых символах
+set convert-meta Off
+
+# Выводить на экран все восемь бит
+set output-meta On
+
+# Звуковой сигнал - none, visible или audible, соответственно никакого, видимый или слышимый
+set bell-style none
+
+# Нижеследующие команды привязывают escape-последовательности (первый аргумент)
+# к специфичным для Readline функциям (второй аргумент)
+"\eOd": backward-word
+"\eOc": forward-word
+
+# для консоли linux
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+"\e[5~": beginning-of-history
+"\e[6~": end-of-history
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+
+# для xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# для Konsole
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+
+# End /etc/inputrc
+EOF
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/introduction.html b/lfs-12.1-sysv/chapter09/introduction.html new file mode 100644 index 0000000..69b8cfc --- /dev/null +++ b/lfs-12.1-sysv/chapter09/introduction.html @@ -0,0 +1,182 @@ + + + + + + 9.1. Введение + + + + + + + + +

+ 9.1. + Введение +

+
+

+ Загрузка системы Linux включает в себя несколько задач. Процесс + должен монтировать как виртуальные, так и реальные файловые системы, + инициализировать устройства, активировать файл подкачки, проверять + целостность файловых систем, монтировать любые разделы или файл + подкачки, устанавливать системные часы, запускать сеть, запускать + требуемые системой службы и выполнять любые другие необходимые + пользователю задачи. Этот процесс должен быть организован таким + образом, чтобы задачи выполнялись в правильном порядке, но в то же + время как можно быстрее. +

+
+

+ 9.1.1. System V +

+

+ System V это классический процесс загрузки, который использовался в + Unix и Unix-подобных системах, таких как Linux с 1983 года. Он + состоит из небольшой программы init, которая настраивает базовые + программы, такие как login (через getty) и запускает + скрипт. Этот скрипт, обычно именуемый rc управляет выполнением + дополнительных сценариев, необходимых для инициализации системы. +

+

+ Программа init + управляется файлом /etc/inittab и + разделена по уровням выполнения, которые могут быть выбраны + пользователем. В LFS используются следующие уровни: +

+
+

+ 0 — выключение
+ 1 — Однопользовательский режим
+ 2 — Определяемый пользователем
+ 3 — Полный многопользовательский режим
+ 4 — Определяемый пользователем
+ 5 — Полный многопользовательский режим с дисплей-менеджером
+ + 6 — перезагрузка +

+
+

+ Уровень выполнения по умолчанию равен 3 или 5. +

+

+ Преимущества +

+
+
    +
  • +

    + Устоявшаяся, хорошо отлаженная система. +

    +
  • +
  • +

    + Легко настраивается. +

    +
  • +
+
+

+ Недостатки +

+
+
    +
  • +

    + Может загружаться медленнее. Загрузка базовой системы LFS в + среднем занимает 8-12 секунд, при этом время загрузки + измеряется от первого сообщения ядра до запроса на вход в + систему. Подключение к сети обычно устанавливается примерно + через 2 секунды после запроса на вход в систему. +

    +
  • +
  • +

    + Последовательная обработка задач загрузки. Это связано с + предыдущим пунктом. Задержка в работе любого процесса, + например, проверка файловой системы, приведет к задержке + всего процесса загрузки. +

    +
  • +
  • +

    + Напрямую не поддерживает дополнительные функции, такие как + контрольные группы (cgroups) и диспетчер системных ресурсов + для каждого пользователя. +

    +
  • +
  • +

    + Добавление init-скриптов требует ручных однотипных действий. +

    +
  • +
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/locale.html b/lfs-12.1-sysv/chapter09/locale.html new file mode 100644 index 0000000..15d4163 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/locale.html @@ -0,0 +1,256 @@ + + + + + + 9.7. Настройка системной локали + + + + + + + + +

+ 9.7. Настройка + системной локали +

+
+

+ Некоторые переменные окружения, необходимые для поддержки вашего + языка. Правильная их установка влияет на: +

+
+
    +
  • +

    + Выходные данные программ, переводятся на ваш родной язык +

    +
  • +
  • +

    + Правильную интерпретацию символов в буквы, цифры и другие + классы. Это необходимо для того, чтобы bash правильно принимал + не-ASCII символы, в командной строке в неанглоязычных языковых + системах +

    +
  • +
  • +

    + Правильную для страны сортировку по алфавиту +

    +
  • +
  • +

    + Подходящий формат бумаги по умолчанию +

    +
  • +
  • +

    + Правильное форматирование денежных значений, значений времени и + дат +

    +
  • +
+
+

+ Ниже замените <ll> + двухбуквенным кодом нужного вам языка (например en), а <CC> двухбуквенным кодом + соответствующей страны (например GB). + <charmap> нужно + заменить на каноническую кодировку для выбраной вами локали. Также + могут присутствовать необязательные модификаторы, такие как + @euro. +

+

+ Список всех локалей, поддерживаемых Glibc, можно получить, выполнив + следующую команду: +

+
locale -a
+

+ Таблицы символов могут иметь несколько синонимов. Например + ISO-8859-1 так же называют iso8859-1 и iso88591. + Некоторые приложения не могут корректно обрабатывать различные + синонимы (например UTF-8 должно быть + указано как UTF-8, а не utf8), поэтому в большинстве случаев безопаснее + всего выбрать каноническое имя для конкретной локали. Для определения + канонического имени локали выполните команду ниже, заменив <locale name> на вывод + locale -a для желаемой + локали (например en_GB.iso88591 в нашем + примере). +

+
LC_ALL=<locale name> locale charmap
+

+ Для локали en_GB.iso88591 приведенная + выше команда напечатает: +

+
ISO-8859-1
+

+ Окончательная настройка локали будет выглядеть так: en_GB.ISO-8859-1. Важно, чтобы локаль, найденная с + помощью приведенной выше методики, была проверена перед её + добавлением в файлы запуска Bash: +

+
LC_ALL=<locale name> locale language
+LC_ALL=<locale name> locale charmap
+LC_ALL=<locale name> locale int_curr_symbol
+LC_ALL=<locale name> locale int_prefix
+

+ Приведенные выше команды должны вывести название языка, кодировку + символов, используемую в локали, местную валюту и телефонный код + страны. Если какая-либо из команд завершается с сообщением об ошибке, + похожим на указанное ниже, это означает, что ваша локаль либо не была + установлена в Главе 8, либо не поддерживается стандартной установкой + Glibc. +

+
locale: Cannot set LC_* to default locale: No such file or directory
+

+ Если это произойдет, вам следует либо установить желаемую локаль с + помощью команды localedef, либо рассмотреть + возможность выбора другой локали. Дальнейшие инструкции не + предполагают таких сообщений об ошибках от Glibc. +

+

+ Другие пакеты также могут работать некорректно (но не всегда будут + отображать какие-либо сообщения об ошибках), если название локали не + соответствует их ожиданиям. В таких случаях изучите, какие ещё + дистрибутивы Linux поддерживают ваш язык, возможно, это даст + некоторую полезную информацию +

+

+ Программа оболочки /bin/bash (далее именуемая как + «оболочка») + использует начальный набор файлов, чтобы помочь создать среду для + запуска. Каждый файл имеет определенное назначение и может по-разному + влиять на вход в систему и интерактивное окружение. Файлы в каталоге + /etc содержат глобальные настройки. + Если в домашнем каталоге существуют эквивалентные файлы, они могут + переопределить глобальные настройки. +

+

+ Интерактивная оболочка входа запускается после успешного входа с + использованием /bin/login, прочитав файл + /etc/passwd. Интерактивная оболочка без + входа в систему запускается из командной строки (например, + [prompt]$/bin/bash). Неинтерактивная + оболочка обычно присутствует когда выполняется скрипт оболочки. Он + неинтерактивен, поскольку обрабатывает скрипт и не ожидает ввода + пользователем между командами. +

+

+ Создайте файл /etc/profile после того, как будут определены правильные настройки + локали, чтобы установить желаемый язык, но вместо этого + установите локаль C.UTF-8 при запуске + консоли Linux (чтобы программы не выводили символы, которые консоль + Linux не может отобразить): +

+
cat > /etc/profile << "EOF"
+# Begin /etc/profile
+
+for i in $(locale); do
+  unset ${i%=*}
+done
+
+if [[ "$TERM" = linux ]]; then
+  export LANG=C.UTF-8
+else
+  export LANG=<ll>_<CC>.<charmap><@modifiers>
+fi
+
+# End /etc/profile
+EOF
+

+ Локаль C (используемая по умолчанию) и + en_US (одна из рекомендуемых для + англоязычных пользователей в Соединенных Штатах) это разные локали. + C использует 7-битный набор символов + US-ASCII и обрабатывает байты с установленным старшим битом как + недопустимые символы. Вот почему, например, команда ls заменяет их вопросительными + знаками в этой локали. Кроме того, попытка отправить почту с такими + символами из Mutt или Pine приводит к тому что, отправляемые + сообщения не соответствуют RFC (кодировка в исходящей почте указана + как unknown 8-bit). Рекомендуется + использовать локаль C, если вы уверены, + что вам никогда не понадобятся 8-битные символы. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter09/network.html b/lfs-12.1-sysv/chapter09/network.html new file mode 100644 index 0000000..c3cc258 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/network.html @@ -0,0 +1,342 @@ + + + + + + 9.5. Настройка сети + + + + + + + + +

+ 9.5. Настройка + сети +

+
+
+

+ 9.5.1. Создание файлов конфигурации сетевого интерфейса +

+

+ Файлы в каталоге /etc/sysconfig/ + обычно определяют, какие интерфейсы запускаются и выключаются + сетевым скриптом. Этот каталог должен содержать файл для каждого + настраиваемого интерфейса, например ifconfig.xyz, где «xyz» описывает сетевую + карту. Имя интерфейса (например, eth0) обычно является подходящим. + Каждый файл содержит атрибуты одного интерфейса, такие как его + IP-адреса, маски подсетей и так далее. Имя файла должно быть + ifconfig. +

+
+ [Примечание] +

+ Примечание +

+

+ Если процедура именования из предыдущего раздела не + использовалась, udev будет назначать имена интерфейсов сетевых + карт на основе физических характеристик системы, например, + enp2s1. Если вы не знаете имя вашего интерфейса, вы всегда можете + запустить ip link + или ls + /sys/class/net после загрузки системы. +

+

+ Имена интерфейсов зависят от реализации и конфигурации демона + udev, работающего в системе. Демон udev для LFS (установленный в + Раздел 8.75, «Udev из + Systemd-255») не запустится, пока система LFS не будет + загружена. Таким образом, имена интерфейсов в системе LFS не + всегда можно определить, запустив эти команды в + хост-дистрибутиве, даже в среде + chroot. +

+
+

+ Следующая команда создает пример конфигурационного файла для + устройства eth0 со + статическим IP-адресом: +

+
cd /etc/sysconfig/
+cat > ifconfig.eth0 << "EOF"
+ONBOOT=yes
+IFACE=eth0
+SERVICE=ipv4-static
+IP=192.168.1.2
+GATEWAY=192.168.1.1
+PREFIX=24
+BROADCAST=192.168.1.255
+EOF
+

+ Значения, выделенные курсивом, должны быть изменены в каждом файле, + чтобы правильно настроить интерфейсы. +

+

+ Если переменной ONBOOT присвоено + значение yes, сценарий загрузки сети + System V вызовет сетевую карту (NIC) в процессе загрузки системы. + Если задано значение, отличное от yes + сетевой адаптер будет проигнорирован сетевым скриптом и не будет + запущен автоматически. Интерфейсы можно запускать или останавливать + вручную с помощью команд ifup и ifdown. +

+

+ Переменная IFACE определяет имя сетевого + интерфейса, например, eth0. Она необходима для всех файлов + конфигураций сетевых устройств. Расширение файла должно + соответствовать этому значению. +

+

+ Переменная SERVICE определяет метод + получения IP-адреса. Пакет LFS-Bootscripts имеет модульный формат + назначения IP, а создание дополнительных файлов в каталоге + /lib/services/ позволит использовать + другие методы назначения IP. Переменная обычно используется для + протокола DHCP (Dynamic Host Configuration Protocol), который + рассматривается в книге BLFS +

+

+ Переменная GATEWAY должна содержать + IP-адрес шлюза по умолчанию, если таковой имеется. Если нет, то + закомментируйте эту строку. +

+

+ Переменная PREFIX указывает количество + бит, используемых в подсети. Каждый сегмент IP-адреса состоит из 8 + бит. Если маска подсети равна 255.255.255.0, то для указания номера + сети используются первые три сегмента (24 бита). Если сетевая маска + 255.255.255.240, подсеть использует первые 28 бит. Префиксы длиннее + 24 бит обычно используются DSL и кабельными интернет-провайдерами + (ISP). В этом примере (PREFIX=24) маска сети — 255.255.255.0. + Измените переменную PREFIX в + соответствии c конфигурацией вашей сети. Если этот параметр не + указан, то ПРЕФИКС по умолчанию равен 24. +

+

+ Для получения дополнительной информации смотрите справочную + страницу ifup. +

+
+
+

+ 9.5.2. Создание файла + /etc/resolv.conf +

+

+ Системе потребуются дополнительные настройки службы доменных имен + (DNS) для преобразования имен сети Интернет в IP-адреса и наоборот. + Это достигается путем указания IP-адреса DNS-сервера, доступного от + провайдера или администратора сети, в /etc/resolv.conf. Создайте файл, выполнив + следующие действия: +

+
cat > /etc/resolv.conf << "EOF"
+# Begin /etc/resolv.conf
+
+domain <Ваше доменное имя>
+nameserver <IP-адрес вашего основного DNS-сервера>
+nameserver <IP-адрес вашего дополнительного DNS-сервера>
+
+# End /etc/resolv.conf
+EOF
+

+ Оператор domain может быть опущен или + заменён оператором search. Смотрите + справочную страницу resolv.conf для получения подробной информации. +

+

+ Замените <IP-адрес вашего + основного DNS-сервера> адресом наиболее подходящего + DNS сервера. DNS серверов, может быть указано более одной записи + (дополнительные серверы необходимы для возможности резервного + переключения). Если вам нужен только один DNS-сервер, удалите + вторую строку nameserver из + файла. DNS-сервер также может выступать шлюзом в локальной сети. +

+
+ [Примечание] +

+ Примечание +

+

+ Адреса общедоступных DNS серверов Google - 8.8.8.8 и 8.8.4.4. +

+
+
+
+

+ 9.5.3. + Настройка имени хоста +

+

+ В процессе загрузки файл /etc/hostname используется для настройки имени + хоста системы. +

+

+ Создайте файл /etc/hostname и внесите + имя хоста, выполнив команду: +

+
echo "<lfs>" > /etc/hostname
+

+ <lfs> замените на + имя вашего компьютера. Не вносите сюда полное доменное имя(FQDN). + Эта информация помещается в файл /etc/hosts. +

+
+
+

+ 9.5.4. Настройка + файла /etc/hosts +

+

+ Выберите полное доменное имя (FQDN) и возможные псевдонимы для + использования в файле /etc/hosts. + Если вы используете статические IP-адреса, вам также необходимо + определиться с IP-адресом. Синтаксис для записи в файле hosts + следующий: +

+
IP_address myhost.example.org aliases
+

+ Если компьютер не должен быть виден в Интернете (т. е. нет + зарегистрированного домена и действительного блока назначенных + IP-адресов—у большинства пользователей этого нет), убедитесь, что + IP-адрес находится в диапазоне внутренних сетевых IP-адресов. + Допустимые диапазоны: +

+
Диапазон адресов локальной сети      Стандартный префикс
+10.0.0.1 - 10.255.255.254           8
+172.x.0.1 - 172.x.255.254           16
+192.168.y.1 - 192.168.y.254         24
+

+ x может быть любым числом в диапазоне 16-31. y может быть любым + числом в диапазоне 0-255. +

+

+ Правильным IP адресом в локальной сети может быть 192.168.1.1. +

+

+ Если компьютер должен быть виден в Интернете, действительным полным + доменным именем может быть само имя домена или строка, полученная + путем объединения префикса (часто имени хоста) и домена с помощью + символа «.». + Кроме того, вам необходимо обратиться к администратору домена, + чтобы связать полное доменное имя и ваш общедоступный IP-адрес. +

+

+ Даже если компьютер не виден из Интернета, полное доменное имя все + равно необходимо для правильной работы некоторых программ, таких + как MTA. Для этих целей можно использовать специальное полное + доменное имя localhost.localdomain. +

+

+ Создайте файл /etc/hosts, выполнив + команду: +

+
cat > /etc/hosts << "EOF"
+# Begin /etc/hosts
+
+127.0.0.1 localhost.localdomain localhost
+127.0.1.1 <FQDN> <HOSTNAME>
+<192.168.1.1> <FQDN> <HOSTNAME> [alias1] [alias2 ...]
+::1       localhost ip6-localhost ip6-loopback
+ff02::1   ip6-allnodes
+ff02::2   ip6-allrouters
+
+# End /etc/hosts
+EOF
+

+ Значения <192.168.1.1>, <FQDN>, и <HOSTNAME> должны быть + изменены в соответствии с предпочтениями пользователя или + требованиями сети (если имеется IP-адрес выданный сетевым/системным + администратором и машина подключена к существующей сети). + Необязательные параметры могут быть опущены. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/symlinks.html b/lfs-12.1-sysv/chapter09/symlinks.html new file mode 100644 index 0000000..25c0faf --- /dev/null +++ b/lfs-12.1-sysv/chapter09/symlinks.html @@ -0,0 +1,430 @@ + + + + + + 9.4. Управление устройствами + + + + + + + + +

+ 9.4. + Управление устройствами +

+
+
+

+ 9.4.1. Сетевые устройства +

+

+ Udev по умолчанию присваивает имена сетевым устройствам в + соответствии с данными прошивки, BIOS'а или физическими + характеристиками, такими как шина, слот или MAC-адрес. Целью такого + соглашения об именовании является обеспечение того, чтобы сетевые + устройства именовались последовательно, а не основывались на + времени обнаружения сетевой карты. Например, в более старых версиях + Linux—на компьютере с двумя сетевыми картами производства Intel и + Realtek, сетевая карта производства Intel могла стать eth0, а карта + Realtek — eth1. Иногда после перезагрузки карты именовались + наоборот. +

+

+ В новой схеме именования, типичными именами сетевых устройств + являются enp5s0 или wlp3s0. Если такие имена для вас нежелательны, + то может быть реализована традиционная схема именования или своя + собственная. +

+
+

+ 9.4.1.1. Отключение постоянного присвоения имен в параметрах + загрузки ядра +

+

+ Традиционная схема именования - eth0, eth1, и так далее, может + быть включена путем добавления параметра net.ifnames=0 в командную + строку ядра. Это решение подходит для систем, которые имеют + только одно сетевое устройство каждого типа. Часто в ноутбуках + несколько сетевых устройств с именами eth0 и wlan0; в таких + ноутбуках также может использоваться этот метод. Командная строка + указывается в файле конфигурации GRUB. Подробности смотрите на + странице Раздел 10.4.4, + «Создание файла конфигурации GRUB». +

+
+
+

+ 9.4.1.2. Создание пользовательских правил Udev +

+

+ Схему именования можно настроить, создав пользовательские правила + udev. В состав книги включен скрипт, который генерирует начальные + правила. Чтобы их сгенерировать, выполните команду: +

+
bash /usr/lib/udev/init-net-rules.sh
+

+ Теперь, проверьте файл /etc/udev/rules.d/70-persistent-net.rules, + чтобы узнать какое имя с каким сетевым устройством сопоставлено: +

+
cat /etc/udev/rules.d/70-persistent-net.rules
+
+ [Примечание] +

+ Примечание +

+

+ В некоторых случаях, например, когда MAC-адреса были назначены + сетевой карте вручную или в виртуальной среде, такой как Qemu + или Xen, возможно, файл сетевых правил не будет сгенерирован, + поскольку адреса назначаются не последовательно. В таких + случаях, этот способ не применим. +

+
+

+ Файл начинается с блока комментариев, далее следуют две строки + для каждой сетевой карты (NIC). Первая строка представляет собой + описание с комментариями и содержит аппаратные идентификаторы + (например, поставщика PCI и идентификаторы устройств, если это + PCI-карта), а также информацию о драйвере (если его удалось + обнаружить). Ни идентификатор оборудования, ни драйвер не + используются для определения того, какое имя присвоить + интерфейсу; эта информация предназначена только для справки. + Вторая строка - это правило udev, которое соответствует этому + сетевому адаптеру и фактически присваивает ему имя. +

+

+ Все правила udev состоят из нескольких ключевых слов, разделенных + запятыми и необязательными пробелами. Ниже приведены ключевые + слова и пояснения по каждому из них: +

+
+
    +
  • +

    + SUBSYSTEM=="net" - указывает + Udev игнорировать устройства, которые не являются сетевыми + картами. +

    +
  • +
  • +

    + ACTION=="add" - указывает Udev + игнорировать правила для событий, отличных от добавления + (события "удалить" и "изменить" также происходят, но не + требуют переименования сетевых интерфейсов). +

    +
  • +
  • +

    + DRIVERS=="?*" - существует для + того, чтобы Udev проигнорировал подинтерфейсы VLAN или + моста (потому что эти подинтерфейсы не имеют драйверов). + Эти подинтерфейсы пропускаются, потому что назначенные им + имена будут конфликтовать с именами их родительских + устройств. +

    +
  • +
  • +

    + ATTR{address} - значением + этого ключевого слова является MAC-адрес сетевой карты. +

    +
  • +
  • +

    + ATTR{type}=="1" - этот ключ + гарантирует выполнение правила соответствующего только + основному интерфейсу, при использовании определенных + беспроводных драйверов, которые создают несколько + виртуальных интерфейсов. Дополнительные интерфейсы + пропускаются по той же причине, что и подинтерфейсы VLAN и + мост, в ином случае произошел бы конфликт имен. +

    +
  • +
  • +

    + NAME - значением этого + ключевого слова является имя, которое udev присвоит этому + интерфейсу. +

    +
  • +
+
+

+ Значение NAME является очень важным. + Прежде чем продолжить, убедитесь, что вы знаете, какое имя + назначено каждой из сетевых карт и обязательно используйте это + значение NAME при создании файлов + конфигурации сети. +

+

+ Даже если создан пользовательский файл правил udev, udev все + равно может назначить одно или несколько альтернативных имен для + сетевой карты на основе физических характеристик. Если + пользовательское правило udev переименовывает какой-либо сетевой + адаптер, используя имя, уже назначенное в качестве + альтернативного имени другого сетевого адаптера, это правило udev + не будет выполнено. Если возникает эта проблема, вы можете + создать файл конфигурации /etc/udev/network/99-default.link с пустой + альтернативной политикой назначения, переопределяющей файл + конфигурации по умолчанию /usr/lib/udev/network/99-default.link: +

+
sed -e '/^AlternativeNamesPolicy/s/=.*$/=/'  \
+    -i /usr/lib/udev/network/99-default.link \
+     > /etc/udev/network/99-default.link
+
+
+
+

+ 9.4.2. Символические ссылки CD-ROM +

+

+ Некоторое программное обеспечение, которое вы, возможно, захотите + установить позже (например, различные медиаплееры) ожидают, что + устройства /dev/cdrom или + /dev/dvd и символические ссылки на + CD-ROM или DVD-ROM устройства должны существовать. Кроме того, + может быть удобно использовать эти символические ссылки в + /etc/fstab. Udev поставляется с + файлом сценария, который будет генерировать правила для создания + этих символических ссылок, в зависимости от возможностей каждого + устройства, но вам нужно решить, какой из двух режимов работы вы + хотите использовать. +

+

+ Во-первых, скрипт может работать в режиме «by-path» (используется + по умолчанию для USB и FireWire устройств), где создаваемые им + правила зависят от физического пути к CD или DVD устройству. + Во-вторых, он может работать в режиме «by-id» (по умолчанию для + устройств IDE и SCSI), где создаваемые им правила зависят от строк + идентификации, хранящихся в самом устройстве CD или DVD. Путь + определяется сценарием Udev path_id, а идентификационные + строки считываются с оборудования командами ata_id или scsi_id, в зависимости от того, + какой тип устройства у вас есть. +

+

+ У каждого подхода есть свои преимущества; правильный подход к + использованию будет зависеть от того, какие изменения устройств + могут произойти. Если вы ожидаете, что физический путь к устройству + (порты и/или слоты, в который оно подключено), изменится, например, + потому, что вы планируете переместить диск в другой порт IDE или + другой разъем USB, то вы должны использовать режим «by-id». С другой + стороны, если вы ожидаете, что идентификация устройства изменится, + например, потому, что оно может выйти из строя, и вы замените его + другим устройством с теми же характеристиками и подключите к тем же + разъемам, тогда вы должны использовать режим «by-path». +

+

+ Если с вашим устройством возможен любой из вариантов, выберите тот, + который по вашему мнению случается чаще. +

+
+ [Важно] +

+ Важно +

+

+ Внешние устройства (например, привод компакт-дисков, подключенный + через USB) не следует подключать методом «by-path», потому что + каждый раз, когда устройство подключено в новый внешний порт, + изменится его физический путь. Все внешние устройства подвержены + этой проблеме, если при написании правил Udev применять режим + распознавания по их физическому пути. К тому же, эта проблема не + ограничивается CD и DVD-приводами. +

+
+

+ Если вы хотите увидеть значения, которые будут использовать скрипты + udev, то для требуемого устройства CD-ROM найдите соответствующий + каталог в /sys (например, это может + быть /sys/block/hdd) и выполните + команду, аналогичную следующей: +

+
udevadm test /sys/block/hdd
+

+ Обратите внимание на строки, содержащие вывод различных + идентификаторов *_id. Режим «by-id» будет использовать значение ID_SERIAL + если оно существует и не пустое, иначе будет использована + комбинация ID_MODEL и ID_REVISION. Режим «by-path» будет + использовать значение ID_PATH. +

+

+ Если режим по умолчанию не подходит для вашей ситуации, то в файл + /etc/udev/rules.d/83-cdrom-symlinks.rules можно + внести следующие изменения (где mode является одним из значений + «by-id» или + «by-path»): +

+
sed -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
+    -i /etc/udev/rules.d/83-cdrom-symlinks.rules
+

+ Обратите внимание, что на данный момент, нет необходимости + создавать файлы правил или символические ссылки, так как вы + смонтировали каталог /dev хоста в + систему LFS, и мы предполагаем, что символические ссылки уже + существуют. Правила и символические ссылки будут создаваться при + первой загрузке LFS системы. +

+

+ Однако, если у вас есть несколько устройств CD-ROM, то + символические ссылки, сгенерированные в это время, могут указывать + на другие устройства, и иметь различия от хост системы, потому что + устройства не будут обнаружены в предсказуемом порядке. Назначения, + созданные при первой загрузке системы LFS, будут правильными, + проблема возникнет только в том случае, если символические ссылки в + обеих системах указывают на одно и то же устройство. Если + потребуется, проверьте (и, возможно, отредактируйте) + сгенерированные правила в файле /etc/udev/rules.d/70-persistent-cd.rules после + загрузки, чтобы убедиться, что назначенные символические ссылки + соответствуют тому, что вам нужно. +

+
+
+

+ 9.4.3. Работа с дубликатами устройств +

+

+ Как поясняется в Раздел 9.3, + «Взаимодействие с устройствами и модулями», порядок отображения + устройства с одинаковой функциональностью в /dev является, как правило, случайным. Например, + если у вас есть веб камера и TV тюнер, иногда /dev/video0 ссылается на камеру, а /dev/video1 ссылается на TV тюнер, а иногда, + например, после перезагрузки системы, порядок поменяется на + противоположный. Для всех классов оборудования, за исключением + звуковых и сетевых карт, это можно исправить, написав правила udev + для создания постоянных символических ссылок. Случай с сетевыми + картами описан отдельно в Раздел 9.5, «Настройка сети», + инструкции по настройке звуковых карт можно найти в + BLFS. +

+

+ Для каждого из ваших устройств, которые могут иметь такую проблему + (даже если проблема не существует в текущем дистрибутиве Linux ), + найдите соответствующий каталог в /sys/class или /sys/block. Для видеоустройств это может быть + /sys/class/video4linux/videoX. Определите атрибуты, + которые однозначно идентифицируют устройство (обычно это + идентификаторы поставщика и продукта и/или серийные номера): +

+
udevadm info -a -p /sys/class/video4linux/video0
+

+ Затем напишите правила, которые создают символические ссылки, + например: +

+
cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"
+
+# Persistent symlinks for webcam and tuner
+KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", SYMLINK+="webcam"
+KERNEL=="video*", ATTRS{device}=="0x036f",  ATTRS{vendor}=="0x109e", SYMLINK+="tvtuner"
+
+EOF
+

+ В результате устройства /dev/video0 и + /dev/video1 по-прежнему случайным + образом ссылаются на TV тюнер и веб-камеру (и, следовательно, + никогда не должны использоваться напрямую), но есть символические + ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают на + правильное устройство. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/udev.html b/lfs-12.1-sysv/chapter09/udev.html new file mode 100644 index 0000000..fdcde06 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/udev.html @@ -0,0 +1,490 @@ + + + + + + 9.3. Взаимодействие с устройствами и модулями + + + + + + + + +

+ 9.3. Взаимодействие с + устройствами и модулями +

+
+

+ В Глава 8, + мы установили демон udev во время сборки udev . Прежде чем мы углубимся в детали того, как + работает udev, необходимо кратко рассказать о предыдущих методах + взаимодействия с устройствами. +

+

+ Системы Linux традиционно использовали метод статического создания + устройств, при котором огромное количество узлов устройств(иногда + буквально тысячи узлов) создавалось в /dev, независимо от того, существовали ли + соответствующие аппаратные устройства на самом деле. Обычно это + делалось с помощью скрипта MAKEDEV, который содержал ряд + вызовов команды mknod с + соответствующими основными и второстепенными номерами устройств, для + всех возможных вариантов, которые только могут существовать в мире. +

+

+ Используя метод udev, узлы устройств создаются только для тех + устройств, которые обнаружены ядром. Эти узлы устройств создаются + каждый раз при загрузке системы; они хранятся в файловой системе + devtmpfs (виртуальная файловая + система, которая полностью находится в оперативной памяти). Узлы не + занимают много места в памяти и их общий размер незначителен. +

+
+

+ 9.3.1. История +

+

+ В феврале 2000 года, новая файловая система devfs была принята в ветку ядра 2.3.46 и была + доступна на протяжении выпуска стабильных релизов ветки 2.4. Хотя + она и присутствовала в ядре, такой способ динамического создания + устройств никогда не получал поддержки от разработчиков ядра. +

+

+ Основная проблема с подходом, принятым devfs была связана с обработкой обнаружения, + создания и назначения имен устройствам. Проблема связанная с + именованием узлов была самой важной. Общепринято, что если имена + устройств можно настраивать, политика именования устройств должна + выбираться системными администраторами, а не навязываться + разработчиками. Файловая система devfs также страдала от состояния гонки, + присущего её архитектуре; оно не могло быть исправлено без + существенной переработки ядра. devfs долгое время была помечена как устаревшая + и, наконец, была удалена из ядра в июне 2006 года. +

+

+ При разработке нестабильной ветки ядра 2.5, позднее, выпущенной как + стабильный релиз 2.6, появилась новая виртуальная файловая система + sysfs. Задача этой файловой системы + заключалась в предоставление информации о конфигурации оборудования + системы процессам пользовательского пространства. С помощью этого + представления, видимого в пользовательском пространстве, стало + возможным разработать замену пользовательского пространства для + devfs. +

+
+
+

+ 9.3.2. Реализация Udev +

+
+

+ 9.3.2.1. Sysfs +

+

+ Краткое описание файловой системы sysfs было представлено выше. Можно задаться + вопросом, как sysfs получает + информацию об устройствах в системе, и о том, какие номера + устройств должны использоваться для них. Драйверы, + скомпилированные в ядро, регистрируют свои объекты в sysfs (внутри devtmpfs), по мере обнаружения ядром. Для + драйверов, которые скомпилированы в виде модулей, регистрация + происходит при его загрузке. После монтирования файловой системы + sysfs (в каталог /sys), данные, зарегистрированные драйверами, в + sysfs, станут доступны для + пользовательского пространства и udevd для обработки (включая + модификацию узлов устройств). +

+
+
+

+ 9.3.2.2. Создание узла + устройства +

+

+ Файлы устройств создаются ядром в файловой системе devtmpfs. Любой драйвер, которому необходимо + зарегистрировать узел устройства, будет использовать для этого + devtmpfs (через системный драйвер + ядра). Когда экземпляр devtmpfs + монтируется в каталог /dev, узел + устройства будет доступен в пользовательском пространстве с + фиксированным именем, разрешениями и владельцем. +

+

+ Через некоторое время, ядро отправит uevent в udevd. На основе правил, + которые указанны в файлах в каталогах /etc/udev/rules.d, /lib/udev/rules.d, и /run/udev/rules.d, udevd создаст дополнительные + символические ссылки на узлы устройств, или сменит разрешения, + владельца или группу, или изменит запись (имя) во внутренней базе + данных udevd для + этого объекта. +

+

+ Правила в этих трёх каталогах пронумерованы и используются + совместно. Если udevd не может найти правило + для устройства, он оставит права доступа и владельца на + devtmpfs, которые были + установлены изначально. +

+
+
+

+ 9.3.2.3. + Загрузка модуля +

+

+ Драйверы устройств, скомпилированные в виде модулей ядра могут + содержать встроенные псевдонимы. Псевдонимы можно увидеть + просмотрев вывод программы modinfo, обычно они связаны со + специфичными для шины идентификаторами устройств, которые + поддерживается модулем. Например, драйвер snd-fm801 подерживает PCI устройства с + идентификатором поставщика 0x1319 и идентификатором устройства + 0x0801, и имеет псевдоним pci:v00001319d00000801sv*sd*bc04sc01i*. Для + большинства устройств, драйвер шины экспортирует псевдонимы + драйвера, которые будет обрабатывать устройство через + sysfs. Например, файл + /sys/bus/pci/devices/0000:00:0d.0/modalias + может содержать строку pci:v00001319d00000801sv00001319sd00001319bc04sc01i00. + Правила по умолчанию, которые предоставлены Udev, заставят + udevd вызвать + /sbin/modprobe с + содержимым, которое находится в значении переменной окружения + MODALIAS uevent (которое должно + совпадать с содержимым файла modalias в sysfs), тем самым загружая все + модули, чьи псевдонимы совпадают в строке после расширения + подстановочных знаков +

+

+ В указанном примере, это означает, что в дополнение к + snd-fm801 будет загружен + устаревший (и нежелательный) драйвер forte, если он будет доступен. Ниже + приведены способы, как можно предотвратить загрузку нежелательных + драйверов. +

+

+ Само ядро также способно загружать модули для сетевых протоколов, + файловых систем и поддержки NLS по запросу. +

+
+
+

+ 9.3.2.4. Работа с устройствами с горячей заменой или + динамическими устройствами +

+

+ При подключении устройства, например, MP3-плеер, к универсальной + последовательной шине (USB), ядро распознает, что устройство + подключено, и генерирует событие uevent. Затем это событие + обрабатывается udevd, как было описано выше. +

+
+
+
+

+ 9.3.3. Проблемы с загрузкой модулей и созданием устройств +

+

+ Существует несколько возможных проблем, связанных с автоматическим + созданием узлов устройств. +

+
+

+ 9.3.3.1. Модуль ядра не загружается автоматически +

+

+ Udev загрузит модуль только в том случае, если у него есть + псевдоним, специфичный для шины, и драйвер шины правильно + экспортирует необходимые псевдонимы в sysfs. В других случаях следует организовать + загрузку модуля иными способами. Известно, что, начиная с версии + Linux-6.7.4, udev, выполняет загрузку правильно написанных + драйверов для INPUT, IDE, PCI, USB, SCSI, SERIO, и FireWire + устройств. +

+

+ Чтобы определить, имеет ли требуемый драйвер устройства + необходимую поддержку Udev, запустите modinfo с именем модуля в + качестве аргумента. Далее, попробуйте найти каталог устройства в + /sys/bus и проверьте, есть ли там + файл modalias. +

+

+ Если файл modalias существует в + sysfs, то драйвер, который + поддерживает устройство, может обращаться к нему напрямую, но не + имеет псевдонима, это ошибка в драйвере. Загрузите драйвер без + помощи Udev и ожидайте, что проблема будет исправлена позднее. +

+

+ Если же в каталоге /sys/bus нет + файла modalias, это означает, что + разработчики ядра еще не добавили поддержку modalias к этому типу шины. В Linux-6.7.4 это + относится к шиной ISA. Ожидайте, что эта проблема будет + исправлена в более поздних версиях ядра. +

+

+ Udev не предназначен для загрузки драйверов «обёрток», таких как + snd-pcm-oss и не + аппаратных драйверов, например, loop. +

+
+
+

+ 9.3.3.2. Модуль ядра не загружается автоматически и Udev не + предназначен для его загрузки +

+

+ Если модуль «обёртка» только расширяет функциональность, + предоставляемую каким-либо другим модулем (например модуль + snd-pcm-oss расширяет + функциональность модуля snd-pcm, давая возможность звуковым + картам быть доступными для OSS приложений), настройте + modprobe для + загрузки оболочки после того, как Udev загрузит обернутый модуль. + Для этого добавьте строку «softdep» в файл, который находится в + каталоге /etc/modprobe.d/<filename>.conf. + Например: +

+
softdep snd-pcm post: snd-pcm-oss
+

+ Обратите внимание, что команда «softdep» разрешает добавлять pre: зависимости, или одновременно pre: и post: + зависимости. Обратитесь к документации modprobe.d(5) + для изучения синтаксиса и возможностей «softdep». +

+

+ Если рассматриваемый модуль не является обёрткой, и полезен сам + по себе, настройте загрузочный скрипт modules, чтобы он + инициализировался при загрузке системы. Для этого добавьте имя + модуля в файл /etc/sysconfig/modules в отдельной строке. Этот + способ сработает и для модулей-обёрток, но не является + оптимальным. +

+
+
+

+ 9.3.3.3. Udev загружает какой-то нежелательный модуль +

+

+ Либо не создавайте модуль, либо занесите его в черный список в + файле /etc/modprobe.d/blacklist.conf, как это сделано + с модулем forte в примере + ниже: +

+
blacklist forte
+

+ Модули, занесенные в черный список, можно загрузить вручную с + помощью явной команды modprobe. +

+
+
+

+ 9.3.3.4. Udev неправильно создает устройство или делает + неправильную символическую ссылку +

+

+ Это обычно происходит, если правило неожиданно совпадает с другим + устройством. Например, плохо написанное поставщиком оборудования + правило может соответствовать как диску SCSI(искомое устройство), + так и универсальному устройству SCSI (неправильно). Найдите + ошибочное правило и исправьте его с помощью команды udevadm info. +

+
+
+

+ 9.3.3.5. Правило Udev работает ненадежно +

+

+ Это может быть проявлением предыдущей проблемы. В ином случае, + если правило использует атрибуты файловой системы sysfs, то это может быть проблемой + синхронизации ядра, которая будет исправлена в более поздних + версиях ядра. Но вы можете обойти проблему, создав правило, + которое ожидает используемый атрибут sysfs и добавляет его к файлу правил + /etc/udev/rules.d/10-wait_for_sysfs.rules + (создайте его, если файл не существует). Пожалуйста, сообщите в + списке рассылки разработчиков LFS, если это решение вам поможет. +

+
+
+

+ 9.3.3.6. Udev не создаёт устройство +

+

+ Во-первых, убедитесь, что драйвер встроен в ядро или уже загружен + как модуль, и, что udev не создает устройство с неправильным + именем. +

+

+ Если драйвер ядра не экспортирует свои данные в sysfs, udev не хватает информации, + необходимой для создания узла устройства. Это, вероятнее всего, + произойдет со сторонними драйверами, которых нет в дереве + исходного кода ядра. Создайте статический узел в каталоге + /usr/lib/udev/devices с + соответствующими старшим/младшим номерами (смотрите файл + devices.txt в документации к ядру или документации, + предоставленной сторонним поставщиком драйвера). Статический узел + будет скопирован в /dev с помощью + udev. +

+
+
+

+ 9.3.3.7. Порядок присвоения имен устройствам меняется случайным + образом после перезагрузки +

+

+ Это связано с тем, что udev обрабатывает события uevents и + загружает модули параллельно, а значит в непредсказуемом порядке. + Это никогда не будет «исправлено». Вы не должны полагаться на то + что имена устройств ядра стабильны. Вместо этого создайте свои + собственные правила, которые делают символические ссылки со + стабильными именами на основе некоторых неизменяемых атрибутов + устройства, таких как серийный номер или вывод различных утилит + *_id, установленных Udev. Смотрите Раздел 9.4, «Управление + устройствами» и Раздел 9.5, «Настройка сети» для + примера. +

+
+
+
+

+ 9.3.4. Полезная информация +

+

+ Дополнительную документацию можно получить на следующих сайтах: +

+
+ +
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/usage.html b/lfs-12.1-sysv/chapter09/usage.html new file mode 100644 index 0000000..43c41a4 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/usage.html @@ -0,0 +1,1081 @@ + + + + + + 9.6. Настройка и использование загрузочных скриптов System V + + + + + + + + +

+ 9.6. Настройка и + использование загрузочных скриптов System V +

+
+
+

+ 9.6.1. Как работают загрузочные скрипты System V? +

+

+ В этой версии LFS используется специальное средство загрузки под + названием SysVinit, основанное на наборе уровней выполнения + (run-levels). Процедура + загрузки может сильно отличаться от одной системы к другой; и тот + факт, что в конкретном дистрибутиве Linux все работало должным + образом, не гарантирует, что оно будут работать так же в LFS. LFS + работает по-своему, но соблюдает общепринятые стандарты. +

+

+ Существует альтернативная система загрузки, которая называется + systemd. Мы не будем + обсуждать этот вариант загрузки здесь. Для получения подробного + описания, посетите + https://www.linux.com/training-tutorials/understanding-and-using-systemd/. +

+

+ SysVinit (в дальнейшем именуемый «init») использует схему уровней выполнения. + Существует семь уровней выполнения, пронумерованных от 0 до 6. (На + самом деле уровней больше, но они предназначены для особых случаев + и обычно не используются. Подробности смотрите в руководстве + init(8)). Каждый из них + соответствует действиям, которые компьютер должен выполнить при + запуске и выключении. Уровень выполнения по умолчанию — 3. Ниже + приведено описание различных уровней в том виде, в каком они + реализованы в LFS: +

+
+

+ 0: выключение компьютера
+ 1: однопользовательский режим
+ 2: зарезервировано для настройки, в остальном аналогично 3
+ + 3: многопользовательский режим с поддержкой сети
+ + 4: зарезервировано для настройки, в остальном аналогично 3
+ + 5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например, 
+ + gdm от GNOME или lxdm от LXDE)
+ + 6: перезагрузка компьютера +

+
+
+ [Примечание] +

+ Примечание +

+

+ Раньше, много лет назад, уровень выполнения 2 обозначался как + «многопользовательский + режим без поддержки сети», тогда, несколько + пользователей могли подключаться к системе через последовательные + порты. В сегодняшних условиях это не имеет смысла, и мы + обозначаем этот уровень как «зарезервировано». +

+
+
+
+

+ 9.6.2. Настройка + Sysvinit +

+

+ Во время инициализации ядра первой запускаемой программой (если она + не переопределена в командной строке) является init. Эта программа считывает + файл инициализации /etc/inittab. + Создайте этот файл: +

+
cat > /etc/inittab << "EOF"
+# 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
+EOF
+

+ Пояснения по содержимому этого файла инициализации находится на + справочной странице inittab. + Для LFS основной командой является rc. В приведенном выше файле + инициализации, rc + будет выполнять все сценарии, начинающиеся с символа S в каталоге + /etc/rc.d/rcS.d, за которыми следуют + все скрипты, начинающиеся с S в каталоге /etc/rc.d/rc?.d, где знак вопроса задается + значением initdefault. +

+

+ Для удобства, скрипт rc считывает библиотеку функций + из /lib/lsb/init-functions. Эта + библиотека также читает необязательный файл конфигурации + /etc/sysconfig/rc.site. В этот файл + можно поместить любой из параметров конфигурации системы, описанных + в последующих разделах, что позволяет объединить все параметры + системы в одном файле. +

+

+ Для удобства отладки скрипт functions также записывает весь вывод в + /run/var/bootlog. Поскольку каталог + /run является tmpfs, этот файл не + сохраняется при загрузке; однако его содержимое добавляется в файл + /var/log/boot.log по окончании + процесса загрузки. +

+
+

+ 9.6.2.1. Изменение + уровней выполнения +

+

+ Изменить уровень выполнения можно с помощью команды init <runlevel>, + где <runlevel> - + это целевой уровнем выполнения. Например, чтобы перезагрузить + компьютер, пользователь должен выполнить команду init 6, которая является + псевдонимом для команды reboot. Аналогично, init 0 + является псевдонимом для команды halt. +

+

+ В каталоге /etc/rc.d есть ещё + несколько каталогов, которые выглядят как rc?.d (где ? - номер уровня выполнения), все + они содержат ряд символических ссылок. Некоторые ссылки + начинаются с K, другие + начинаются с S, и все они + содержат две цифры после начальной буквы. K означает остановить + (убить) службу, а S означает запустить службу. Числа определяют + порядок выполнения сценариев от 00 до 99—чем меньше число, тем + раньше запускается скрипт. Когда init переключается на другой + уровень выполнения, соответствующие службы либо запускаются, либо + останавливаются, в зависимости от выбранного уровня выполнения. +

+

+ Реальные скрипты находятся в каталоге /etc/rc.d/init.d. Они выполняют фактическую + работу, и символические ссылки указывают на них. Ссылки К и S + указывают на один и тот же скрипт в /etc/rc.d/init.d. Это связано с тем, что + скрипты могут вызываться с разными параметрами, такими как + start, stop, restart, reload, и status. Когда встречается ссылка K, + соответствующий скрипт запускается с аргументом stop. Когда встречается S-ссылка, + соответствующий скрипт запускается с аргументом start. +

+

+ Ниже приведено описание к аргументам скриптов: +

+
+
+
+ start +
+
+

+ Служба запущена. +

+
+
+ stop +
+
+

+ Служба остановлена. +

+
+
+ restart +
+
+

+ Служба остановлена и снова запущена. +

+
+
+ reload +
+
+

+ Конфигурация сервиса обновлена. Используется после + изменения файла конфигурации службы, когда перезапуск не + требуется. +

+
+
+ status +
+
+

+ Сообщает, запущена ли служба и с какими ИД процессов. +

+
+
+
+

+ Не стесняйтесь изменять работу процесса загрузки (в конце концов, + это ваша собственная система LFS). Приведенные здесь файлы + являются примером того, как это можно сделать. +

+
+
+
+

+ 9.6.3. Загрузочные скрипты Udev +

+

+ Инит-скрипт /etc/rc.d/init.d/udev + запускает udevd, + который инициализирует все устройства "холодного подключения", + которые уже были созданы ядром, и ожидает выполнения всех правил. + Скрипт также отключает обработчик uevent по умолчанию /sbin/hotplug. Это сделано потому, что ядру + больше не нужно обращаться к внешнему бинарному файлу. Вместо этого + udevd будет + прослушивать сокет netlink на предмет событий, которые вызывает + ядро. +

+

+ Инит-скрипт /etc/rc.d/init.d/udev_retry + решает задачу повторного запуска событий для подсистем, правила + которых могут зависеть от файловых систем, которые не монтируются + до запуска скрипта mountfs (в частности, его + вызывают /usr и /var). Этот скрипт запускается после скрипта + mountfs, поэтому эти + правила (при повторном запуске) должны сработать во второй раз. Он + настраивается в файле /etc/sysconfig/udev_retry; любые слова в этом + файле, кроме комментариев, являются именами подсистем, которые + запускаются при повторной попытке. Чтобы найти подсистему + устройства, используйте udevadm info + --attribute-walk <device>, где <device> + - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или + /sys/class/rtc. +

+

+ Для получения информации о загрузке модуля ядра и udev смотрите + Раздел 9.3.2.3, «Загрузка + модуля». +

+
+
+

+ 9.6.4. Настройка + системного времени +

+

+ Скрипт setclock + считывает время с аппаратных часов, также известных как часы BIOS + или CMOS (Complementary Metal Oxide Semiconductor). Если на + аппаратных часах установлено время UTC (всемирное скоординированное + время), этот скрипт преобразует полученное значение в локальное + время, используя файл /etc/localtime + (который сообщает программе hwclock, в какой временной зоне + находится пользователь). Невозможно определить, установленное на + аппаратных часах время UTC или же локальное, поэтому необходимо + указать его вручную. +

+

+ Скрипт setclock + запускается системой udev при + загрузке, когда ядро определяет возможности аппаратного + обеспечения. Также его можно запустить вручную с параметром stop, + чтобы сохранить системное время в аппаратные часы CMOS. +

+

+ Если Вы не можете вспомнить, установлено на аппаратных часах UTC + или локальное время, запустите команду hwclock --localtime --show. Она + отобразит текущее время в соответствии с аппаратными часами. Если + оно совпадает с тем, что показывают ваши настенные/наручные часы, + значит на часах CMOS установлено локальное время. Если вывод + hwclock не совпадает + с локальным временем, скорее всего, это UTC. Проверьте это, добавив + или вычитая нужное количество часов для вашего часового пояса ко + времени, отображаемому hwclock. Например, если ваш + часовой пояс это MSK, также известный как GMT +0300, то нужно + вычесть три часа из локального времени. +

+

+ Измените значение переменной UTC ниже на + 0 (ноль), если на + аппаратных часах установлено НЕ UTC. +

+

+ Создайте новый файл /etc/sysconfig/clock выполнив: +

+
cat > /etc/sysconfig/clock << "EOF"
+# 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
+EOF
+

+ Хороший совет, объясняющий, как обращаться с временем в LFS, + доступен по адресу + https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt. + Там объясняются такие вопросы, как часовые пояса, UTC и переменная + окружения TZ. +

+
+ [Примечание] +

+ Примечание +

+

+ Параметры CLOCKPARAMS и UTC также могут быть указаны в файле + /etc/sysconfig/rc.site. +

+
+
+
+

+ 9.6.5. + Настройка консоли Linux +

+

+ Эта секция описывает настройку скрипта console, который устанавливает + раскладку клавиатуры, шрифт консоли и уровень подробности + информации, выводимой ядром на консоль. Если Вы не планируете + использовать символы, не соответствующие стандарту ASCII (например, + знак копирайта, символы фунта и евро), и собираетесь печатать + только в английской раскладке, то можете пропустить большую часть + секции. Без файла конфигурации (или эквивалентных настроек в + rc.site), скрипт console не будет ничего делать. +

+

+ Скрипт console + считывает конфигурацию из файла /etc/sysconfig/console. Решите для себя, какую + раскладку клавиатуры и какой шрифт намерены использовать. В этом + также могут помочь различные HOWTO для конкретных языков; смотрите + https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html. + Если вы все еще сомневаетесь, посмотрите в каталогах /usr/share/keymaps и /usr/share/consolefonts допустимые раскладки и + экранные шрифты. Прочтите справочные страницы loadkeys(1) и + setfont(8), чтобы + определить правильные аргументы для этих программ. +

+

+ Файл /etc/sysconfig/console должен + содержать строки вида: ПЕРЕМЕННАЯ=значение. Допустимы следующие переменные: +

+
+
+
+ LOGLEVEL +
+
+

+ Эта переменная задает уровень подробности сообщений, + посылаемых ядром на системную консоль. Значение этой + переменной передается в качестве аргумента утилите + dmesg -n. + Допустимы уровни от 1(нет + сообщений) до 8. По умолчанию + 7, что является довольно + подробным. +

+
+
+ KEYMAP +
+
+

+ Эта переменная указывает аргументы для программы loadkeys, обычно это имя + загружаемой раскладки, например, it. Если эта переменная не установлена, + загрузочный скрипт не будет запускать программу loadkeys, и + будет использоваться раскладка по умолчанию. Обратите + внимание, что некоторые раскладки имеют несколько версий с + одним и тем же именем (cz и его варианты в qwerty/ и qwertz/, + es в olpc/ и qwerty/ и trf в fgGIod/ и qwerty/). В этих + случаях также следует указать родительский каталог (например, + qwerty/es), чтобы обеспечить загрузку правильной раскладки. +

+
+
+ KEYMAP_CORRECTIONS +
+
+

+ Эта (крайне редко используемая) переменная задает аргументы + для второго вызова программы loadkeys. Она полезна, если + стандартная раскладка вас не совсем устраивает и необходимо + внести небольшую корректировку. Например, чтобы добавить + символ евро в раскладку, которая его не содержит, присвойте + этой переменной значение euro2. +

+
+
+ FONT +
+
+

+ Эта переменная определяет аргументы для программы + setfont. Обычно + она включает в себя имя шрифта -m и имя загружаемой таблицы символов. + Например, чтобы загрузить шрифт «lat1-16» вместе с + таблицей символов «8859-1» (подходит для США), установите + эту переменную в lat1-16 -m + 8859-1. В режиме UTF-8 ядро использует таблицу + символов для преобразования 8-битных кодов клавиш в UTF-8, + поэтому аргумент параметра "-m" должен быть установлен на + кодировку соответствующих кодов клавиш в раскладке. +

+
+
+ UNICODE +
+
+

+ Присвойте этой переменной значение 1, yes или + true, чтобы переключить консоль + в режим UTF-8. Это полезно при использовании локали, + основанной на UTF-8, и не рекомендуется в иных случаях. +

+
+
+ LEGACY_CHARSET +
+
+

+ Для многих раскладок клавиатуры в пакете Kbd не существует + готового Unicode-варианта. Скрипт console будет на лету + конвертировать имеющуюся раскладку в UTF-8, если присвоить + этой переменной имя доступной не-UTF-8 раскладки. +

+
+
+
+

+ Несколько примеров: +

+
+
    +
  • +

    + Мы будем использовать C.UTF-8 в + качестве локали для интерактивных сеансов в консоли Linux в + Раздел 9.7, «Настройка + системной локали,», поэтому нам следует установить + значение переменной UNICODE в + 1. Консольные шрифты, + поставляемые пакетом Kbd, + содержащие глифы для всех символов сообщений программы в + C.UTF-8 являются LatArCyrHeb*.psfu.gz, LatGrkCyr*.psfu.gz, Lat2-Terminus16.psfu.gz и pancyrillic.f16.psfu.gz из каталога + /usr/share/consolefonts (в + других поставляемых консольных шрифтах отсутствуют глифы + некоторых символов Unicode, таких как левые/правые кавычки и + английское тире). Поэтому установите один из них, например + Lat2-Terminus16.psfu.gz, в + качестве шрифта консоли по умолчанию: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +FONT="Lat2-Terminus16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Для русскоязычных пользователей может подойти такой вариант: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="ruwin_alt_sh-UTF-8"
    +FONT="cyr-sun16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
    + [Примечание] +

    + Примечание +

    +

    + Для поиска нужной раскладки, выполните команду: + find /usr/share/keymaps -type + f +

    +

    + ruwin_alt-UTF-8 - переключение + раскладки по Alt. +

    +

    + ruwin_alt_sh-UTF-8 - + переключение раскладки по Alt+Shift. +

    +

    + ruwin_cplk-UTF-8 - + переключение раскладки по Caps Lock. +

    +

    + ruwin_ct_sh-UTF-8 - + переключение раскладки по Ctrl+Shift. +

    +

    + ruwin_ctrl-UTF-8 - + переключение раскладки по Ctrl. +

    +

    + Посмотреть список доступных шрифтов можно с помощью + следующей команды: ls + /usr/share/consolefonts +

    +
    +
  • +
  • +

    + Для не-Unicode настройки необходимы только переменные KEYMAP + и FONT. Например, для польских пользователей может подойти + такой вариант: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +KEYMAP="pl2"
    +FONT="lat2a-16 -m 8859-2"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Как упоминалось выше, иногда бывает необходимо + подкорректировать раскладку. Следующий пример добавляет + символ евро к немецкой раскладке: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +KEYMAP="de-latin1"
    +KEYMAP_CORRECTIONS="euro2"
    +FONT="lat0-16 -m 8859-15"
    +UNICODE="1"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Ниже приведен пример с поддержкой Unicode для болгарского + языка, где существует стандартная раскладка UTF-8: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="LatArCyrHeb-16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Из-за использования 512-символьного шрифта LatArCyrHeb-16 в + предыдущем примере, яркие цвета больше не доступны в консоли + Linux, если используется фреймбуфер. Если Вы хотите + использовать яркие цвета без фреймбуфера и можете обходиться + без символов, не относящихся к вашему языку, тогда можно + использовать специфичный для вашего языка 256-символьный + шрифт, как показано ниже: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="cyr-sun16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Следующий пример демонстрирует автоматическое преобразование + раскладки из ISO-8859-15 в UTF-8 и включает "мертвые" клавиши + в режиме Unicode: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# 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
    +EOF
    +
  • +
  • +

    + Некоторые раскладки включают в себя "мертвые" клавиши (то + есть клавиши, нажатие которых само по себе не приводит к + появлению на экране символа, но которые влияют на символ, + генерируемый следующей клавишей) или определяют слияние + символов (например: «нажмите Ctrl+. A E чтобы получить Æ» в + раскладке по умолчанию). Linux-6.7.4 правильно интерпретирует + "мертвые" клавиши и слияния, только когда исходные символы + имеют 8-битные коды. Эта особенность не влияет на раскладки + для европейских языков, поскольку в них "сливаются" два + ASCII-символа или добавляются подчеркивания к неподчеркнутым + ASCII-символам. Однако, в режиме UTF-8 могут быть проблемы, + например, для греческого языка, когда необходимо подчеркнуть + символ α. Решением в этой ситуации будет отказ от + использования UTF-8 или установка графической системы X + Window, не имеющих подобных ограничений. +

    +
  • +
  • +

    + Для китайского, японского, корейского и некоторых других + языков невозможно настроить консоль Linux так, чтобы она + отображала все необходимые символы. Пользователи, которым + требуются эти языки, должны установить систему X Window, + шрифты, покрывающие необходимый диапазон символов, и + правильный метод ввода (например, SCIM поддерживает большое + число разнообразных языков). +

    +
  • +
+
+
+ [Примечание] +

+ Примечание +

+

+ Файл /etc/sysconfig/console + управляет только локализацией текстовой консоли Linux. Он никак + не влияет на настройки раскладки клавиатуры и шрифтов в системе X + Window, в сессиях SSH или на последовательном терминале. В этих + ситуациях ограничения, описанные в двух расположенных выше + абзацах, не применяются. +

+
+
+
+

+ 9.6.6. Создание файлов при загрузке +

+

+ Иногда необходимо создавать файлы во время загрузки. Например, + часто требуется каталог /tmp/.ICE-unix . Это можно сделать, создав запись + в скрипте /etc/sysconfig/createfiles. + Формат этого файла описан в комментариях файла конфигурации по + умолчанию. +

+
+
+

+ 9.6.7. + Настройка скрипта Sysklogd +

+

+ Скрипт sysklogd вызывает программу + syslogd как часть + инициализации System V. Параметр -m + 0 отключает периодическую (по умолчанию - каждые 20 + минут) запись временных меток в файлы журналов, производимую + syslogd. Если Вам + необходимо включить периодическую запись временных меток, + отредактируйте файл /etc/sysconfig/rc.site и присвойте переменной + SYSKLOGD_PARMS требуемое значение. Например, чтобы сбросить все + параметры, присвойте переменной пустое значение: +

+
SYSKLOGD_PARMS=
+

+ Дополнительные параметры смотрите в man syslogd. +

+
+
+

+ 9.6.8. Файл + rc.site +

+

+ Необязательный файл /etc/sysconfig/rc.site содержит настройки, + автоматически применяемые всеми загрузочными скриптами. Этот файл + может содержать парамеры, обычно указываемые в файлах hostname, console и + clock из каталога /etc/sysconfig/. Если значение одной и той же + переменной присваивается, как в одном из этих файлов, так и в + rc.site, приоритет имеет значение из + специализированного файла. +

+

+ rc.site также содержит параметры, + которые могут настраивать другие аспекты процесса загрузки. + Установка переменной IPROMPT позволит выборочно запускать + загрузочные скрипты. Другие параметры описаны в комментариях к + файлу. Версия файла по умолчанию выглядит следующим образом: +

+
# 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=
+
+
+
+

+ 9.6.8.1. Настройка скриптов загрузки и завершения работы +

+

+ Загрузочные скрипты LFS загружают и завершают работу системы + довольно эффективно, но есть несколько настроек, которые вы + можете внести в файл rc.site, чтобы еще больше повысить скорость + и настроить сообщения в соответствии с вашими предпочтениями. + Чтобы сделать это, измените настройки в приведенном выше файле + /etc/sysconfig/rc.site. +

+
+
    +
  • +

    + Во время работы загрузочного скрипта udev происходит вызов udev settle, для + завершения которого требуется некоторое время. Это время + может и не потребоваться в зависимости от конфигурации + устройств в системе. Если у вас имеются только простые + разделы и одна сетевая карта, процессу загрузки, вероятно, + не нужно будет ждать завершения работы этой команды. Чтобы + пропустить её, установите переменную OMIT_UDEV_SETTLE=y. +

    +
  • +
  • +

    + Скрипт загрузки udev_retry + также по умолчанию запускает udev settle. Команда + необходима только тогда, когда каталог /var смонтирован в отдельный раздел. Это + связано с тем, что часам нужен доступ к файлу /var/lib/hwclock/adjtime. Для других + настроек также может потребоваться дождаться завершения + udev, но в большинстве случаев в этом нет необходимости. + Пропустите команду, установив переменную + OMIT_UDEV_RETRY_SETTLE=y. +

    +
  • +
  • +

    + По умолчанию проверка файловой системы выполняется в + "тихом" режиме. Это может показаться задержкой во время + процесса загрузки. Чтобы включить вывод fsck, установите + переменную VERBOSE_FSCK=y. +

    +
  • +
  • +

    + При перезагрузке вы, возможно, захотите полностью + пропустить проверку файловой системы, fsck. Чтобы сделать это, + либо создайте файл /fastboot, + либо перезагрузите систему командой /sbin/shutdown -f -r now. + С другой стороны, вы можете принудительно проверить все + файловые системы, создав /forcefsck или запустив shutdown с параметром + -F вместо + -f. +

    +

    + Установка переменной FASTBOOT=y отключит fsck во время процесса + загрузки до тех пор, пока она не будет удалена. Это не + рекомендуется делать на постоянной основе. +

    +
  • +
  • +

    + Обычно все файлы в каталоге /tmp удаляются во время загрузки. В + зависимости от количества имеющихся файлов или каталогов + это может привести к заметной задержке в процессе загрузки. + Чтобы пропустить удаление этих файлов, установите + переменную SKIPTMPCLEAN=y. +

    +
  • +
  • +

    + Во время завершения работы, init отправляет сигнал + TERM каждой запущенной программе (например, agetty), + ожидает установленное время (по умолчанию 3 секунды), затем + посылает каждому процессу сигнал завершения(KILL) и снова + ждёт. Этот процесс повторяется в сценарии sendsignals для любых + процессов, которые не завершаются их собственными + скриптами. Задержка для init может быть + установлена путем передачи параметра. Например, чтобы + устранить задержку в init, передайте параметр + -t0 при выключении или перезагрузке (например, /sbin/shutdown -t0 -r + now). Задержку для скрипта sendsignals можно + пропустить, установив параметр KILLDELAY=0. +

    +
  • +
+
+
+
+
+ + + -- cgit v1.2.3