diff --git a/chapter09/usage.xml b/chapter09/usage.xml index 582fc47..5914dac 100644 --- a/chapter09/usage.xml +++ b/chapter09/usage.xml @@ -19,17 +19,23 @@ Как работают загрузочные скрипты System V? - В Linux используется специальное средство загрузки под названием SysVinit, основанное на - концепции уровней выполнения (run-levels). Его настройка может сильно отличаться - от одной системы к другой, и корректная работа в одном дистрибутиве Linux, не гарантирует - работоспособность в LFS. LFS работает по-своему, но соблюдает общепринятые стандарты. + В этой версии LFS используется специальное средство загрузки под названием SysVinit, + основанное на наборе уровней выполнения (run-levels). Процедура + загрузки может сильно отличаться от одной системы к другой; и тот факт, что в конкретном + дистрибутиве Linux все работало должным образом, не гарантирует, что оно будут работать + так же в LFS. LFS работает по-своему, но соблюдает общепринятые стандарты. + + Существует альтернативная система загрузки, которая называется + systemd. Мы не будем обсуждать этот вариант загрузки здесь. Для получения + подробного описания, посетите + . - SysVinit (в дальнейшем именуемый init) работает по схеме уровней выполнения. - Существует семь (пронумерованных от 0 до 6) уровней выполнения (на самом деле уровней + SysVinit (в дальнейшем именуемый init) использует схему уровней выполнения. + Существует семь уровней выполнения, пронумерованных от 0 до 6. (На самом деле уровней больше, но они предназначены для особых случаев и обычно не используются. Подробности смотрите в - руководстве init(8)), и каждый из них соответствует действиям, которые компьютер - должен выполнить при запуске. Уровень выполнения по умолчанию — 3. Ниже приведены описания различных - уровней в том виде, в каком они реализованы в LFS: + руководстве init(8)). Каждый из них соответствует действиям, которые компьютер + должен выполнить при запуске и выключении. Уровень выполнения по умолчанию — 3. Ниже приведено + описание различных уровней в том виде, в каком они реализованы в LFS: 0: выключение компьютера 1: однопользовательский режим @@ -43,9 +49,9 @@ Раньше, много лет назад, уровень выполнения 2 обозначался как "многопользовательский - режим без поддержки сети", тогда несколько пользователей могли войти в систему, подключившись - через последовательные порты. В сегодняшних условиях это не имеет смысла, и мы обозначаем этот - уровень как "зарезервировано". + режим без поддержки сети", тогда, несколько пользователей могли подключаться к системе + через последовательные порты. В сегодняшних условиях это не имеет смысла, и мы обозначаем + этот уровень как "зарезервировано". @@ -63,9 +69,9 @@ /etc/inittab - Во время инициализации ядра первая запущенная программа указывается либо в - командной строке, либо по умолчанию в init. Эта программа читает файл - инициализации /etc/inittab. Создайте этот файл: + Во время инициализации ядра первой запускаемой программой (если она не переопределена + в командной строке) является init. Эта программа считывает файл инициализации + /etc/inittab. Создайте этот файл: cat > /etc/inittab << "EOF" # Begin /etc/inittab @@ -98,22 +104,22 @@ s1:1:respawn:/sbin/sulogin EOF Пояснения по содержимому этого файла инициализации находится на справочной - странице inittab. Для LFS ключевой командой является rc. + странице inittab. Для LFS основной командой является rc. В приведенном выше файле инициализации, rc будет выполнять все сценарии, начинающиеся с символа S в каталоге /etc/rc.d/rcS.d, за которыми следуют все скрипты, начинающиеся с S в каталоге /etc/rc.d/rc?.d, где знак вопроса задается значением initdefault. - Для удобства, скрипт rc читает функции из библиотеки + Для удобства, скрипт rc считывает библиотеку функций из /lib/lsb/init-functions. Эта библиотека также читает - необязательный файл конфигурации /etc/sysconfig/rc.site. Любой из - параметров файла конфигурации системы, описанный в последующих разделах, можно поместить - в этот файл, что позволит объединить все системные параметры в одном файле. + необязательный файл конфигурации /etc/sysconfig/rc.site. В этот файл + можно поместить любой из параметров конфигурации системы, описанных в последующих разделах, + что позволяет объединить все параметры системы в одном файле. Для удобства отладки скрипт functions также записывает весь вывод в /run/var/bootlog. Поскольку каталог /run - является tmpfs, этого файла может не быть при загрузке, однако его содержимое добавляется к - файлу /var/log/boot.log по окончании процесса загрузки. + является tmpfs, этот файл не сохраняется при загрузке; однако его содержимое добавляется в + файл /var/log/boot.log по окончании процесса загрузки. Изменение уровней выполнения @@ -129,13 +135,13 @@ EOF В каталоге /etc/rc.d есть ещё несколько каталогов, которые выглядят как rc?.d (где ? - номер уровня выполнения), - все они содержат ряд символических ссылок. Некоторые начинаются с K, + все они содержат ряд символических ссылок. Некоторые ссылки начинаются с K, другие начинаются с S, и все они содержат две цифры после начальной буквы. K означает остановить (убить) службу, а S означает запустить службу. Числа определяют порядок - выполнения сценариев от 00 до 99—чем меньше число, тем раньше он запустится. + выполнения сценариев от 00 до 99—чем меньше число, тем раньше запускается скрипт. Когда init переключается на другой уровень выполнения, - соответствующие службы запускаются или останавливаются в зависимости от выбранного - уровня. + соответствующие службы либо запускаются, либо останавливаются, в зависимости от выбранного + уровня выполнения. Реальные скрипты находятся в каталоге /etc/rc.d/init.d. Они выполняют фактическую работу, @@ -218,15 +224,15 @@ EOF ожидает выполнения всех правил. Скрипт также отключает обработчик uevent по умолчанию /sbin/hotplug. Это сделано потому, что ядру больше не нужно обращаться к внешнему бинарному файлу. Вместо этого udevd будет прослушивать сокет netlink - для событий uevents, которые вызывает ядро. + на предмет событий, которые вызывает ядро. Инит-скрипт /etc/rc.d/init.d/udev_retry решает задачу повторного запуска событий для подсистем, правила которых могут зависеть от файловых систем, которые не монтируются до запуска скрипта mountfs (в частности, его вызывают /usr и /var). Этот скрипт запускается после скрипта - mountfs, поэтому правила (при повторном запуске) должны выполняться успешно. Он - настраивается из файла /etc/sysconfig/udev_retry; любые слова в этом файле, - кроме комментариев, являются именами подсистем, которые могут выполняться повторно. Чтобы найти + mountfs, поэтому эти правила (при повторном запуске) должны сработать во второй раз. + Он настраивается в файле /etc/sysconfig/udev_retry; любые слова в этом файле, + кроме комментариев, являются именами подсистем, которые запускаются при повторной попытке. Чтобы найти подсистему устройства, используйте udevadm info --attribute-walk <device>, где <device> - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или /sys/class/rtc. @@ -246,7 +252,7 @@ EOF время UTC (всемирное скоординированное время), этот скрипт преобразует полученное значение в локальное время, используя файл /etc/localtime (который сообщает программе hwclock, в какой временной зоне находится пользователь). Невозможно определить, - установлено на аппаратных часах UTC или же локальное время, поэтому необходимо указать его вручную. + установленое на аппаратных часах время UTC или же локальное, поэтому необходимо указать его вручную. Скрипт setclock запускается системой udev при загрузке, когда ядро определяет возможности аппаратного обеспечения. Также его можно запустить @@ -257,9 +263,9 @@ EOF время в соответствии с аппаратными часами. Если оно совпадает с тем, что показывают ваши настенные/наручные часы, значит на часах CMOS установлено локальное время. Если вывод hwclock не совпадает с локальным временем, скорее всего, это UTC. Проверьте - это, добавляя или вычитая правильное смещение к времени, выводимому hwclock. - Например, если ваш часовй пояс это MSK, так же известный как GMT +0300, то нужно вычесть - три часа из локального времени. + это, добавив или вычитая нужное количество часов для вашего часового пояса ко времени, + отображаемому hwclock. Например, если ваш часовй пояс это MSK, так же + известный как GMT +0300, то нужно вычесть три часа из локального времени. Измените значение переменной UTC ниже на 0 (ноль), если на аппаратных часах установлено НЕ UTC. @@ -306,7 +312,7 @@ EOF Скрипт console считывает конфигурацию из файла /etc/sysconfig/console. Решите для себя, какую раскладку клавиатуры и - какой шрифт намерены использовать. В этом также могут помочь различные HOWTO для конкретных языков, + какой шрифт намерены использовать. В этом также могут помочь различные HOWTO для конкретных языков; смотрите . Если вы все еще сомневаетесь, посмотрите в каталогах /usr/share/keymaps и /usr/share/consolefonts допустимые раскладки и экранные @@ -357,9 +363,10 @@ EOF Эта переменная определяет аргументы для программы setfont. Обычно она включает в себя имя шрифта -m и имя загружаемой таблицы символов. Например, чтобы загрузить шрифт lat1-16 вместе с таблицей символов 8859-1 - (подходящий для США), установите эту переменную в lat1-16 -m 8859-1. В режиме - UTF-8 ядро использует таблицу символов для преобразования 8-битных кодов клавиш в раскладку UTF-8, - поэтому аргумент параметра "-m" должен быть указывать кодировку таблицы символов в раскладке. + (подходит для США), установите эту переменную в lat1-16 -m 8859-1. В режиме + UTF-8 ядро использует таблицу символов для преобразования 8-битных кодов клавиш в UTF-8, + поэтому аргумент параметра "-m" должен быть установлен на кодировку соответствующих кодов + клавиш в раскладке. @@ -486,7 +493,7 @@ EOF Для китайского, японского, корейского и некоторых других языков невозможно насторить консоль Linux так, чтобы она отображала все необходимые символы. Пользователи, которым требуются эти языки, должны установить систему X Window, шрифты, покрывающие необходимый - диапазон символов, и правильный метод ввода (например, SCIM, он поддерживает большое число + диапазон символов, и правильный метод ввода (например, SCIM поддерживает большое число разнообразных языков). @@ -518,7 +525,7 @@ EOF - Настройка скрипта sysklogd + Настройка скрипта Sysklogd sysklogd @@ -550,7 +557,7 @@ EOF автоматически применяемые всеми загрузочными скриптами. Этот файл может содержать парамеры, обычно указываемые в файлах hostname, console и clock из каталога /etc/sysconfig/. - Если значение одной и той же переменной присваивается и в одном из этих файлов, и в + Если значение одной и той же переменной присваивается, как в одном из этих файлов, так и в rc.site, приоритет имеет значение из специализированного файла. rc.site также содержит параметры, которые могут настраивать @@ -580,10 +587,11 @@ EOF OMIT_UDEV_SETTLE=y. Скрипт загрузки udev_retry также по умолчанию - запускает udev settle. Команда требуется только тогда, когда + запускает udev settle. Команда необходима только тогда, когда каталог /var смонтирован в отдельный раздел. Это связано с тем, что часам нужен доступ к файлу /var/lib/hwclock/adjtime. - Пропустите команду, установив переменную OMIT_UDEV_RETRY_SETTLE=y. + Для других настроек также может потребоваться дождаться завершения udev, но в большинстве + случаев в этом нет необходимости. Пропустите команду, установив переменную OMIT_UDEV_RETRY_SETTLE=y. По умолчанию проверка файловой системы выполняется в "тихом" режиме. @@ -609,7 +617,7 @@ EOF Во время завершения работы, init отправляет сигнал TERM каждой запущенной программе (например, agetty), ожидает установленное время (по умолчанию 3 - секунды), посылает каждому процессу сигнал завершения(KILL) и снова ждёт. Этот процесс + секунды), затем посылает каждому процессу сигнал завершения(KILL) и снова ждёт. Этот процесс повторяется в сценарии sendsignals для любых процессов, которые не завершаются их собственными скриптами. Задержка для init может быть установлена путем передачи параметра. Например, чтобы устранить задержку в init, передайте