6.55. Sysvinit-2.85

6.55. Sysvinit-2.85

Пакет Sysvinit содержит пограммы для контроля загрузки, запуска и выключения всех других программ.

Расчетное время сборки 0.1 SBU

Требуемое место на диске 0.9 MB

Sysvinit - зависимости установки: Binutils, Coreutils, GCC, Glibc и Make

6.55.1. Инсталируем Sysvinit

Sysvinit-2.85 содержит ошибку “переполнения буфера”. В некоторых случаях это может привести к изменению значений переменных окружения. Исправим это:

patch -Np1 -i ../sysvinit-2.85-proclen-1.patch

Когда изменяется уровень запуска (например, при выключении системы), init посылает сигналы TERM и KILL тем процессам которые запустил сам init и которые не должны быть запущены на новом уровне запуска. Пока проходит этот процесс, init выводит сообщение, похожее на “Sending processes the TERM signal”, при этом кажется, что init отсылает эти сигналы всем работающим процессам. Чтобы не входить в заблуждение, исправим это сообщение на “Sending processes started by init the TERM signal”.

sed -i 's@Sending processes@& started by init@g' \
    src/init.c

Компилируем пакет

make -C src

Устанавливаем пакет

make -C src install

6.55.2. Настройка Sysvinit

Создадим новый файл /etc/inittab запуском следующих команд:

cat > /etc/inittab << "EOF"
# Begin /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc sysinit

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:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty -I '\033(K' tty1 9600
2:2345:respawn:/sbin/agetty -I '\033(K' tty2 9600
3:2345:respawn:/sbin/agetty -I '\033(K' tty3 9600
4:2345:respawn:/sbin/agetty -I '\033(K' tty4 9600
5:2345:respawn:/sbin/agetty -I '\033(K' tty5 9600
6:2345:respawn:/sbin/agetty -I '\033(K' tty6 9600

# End /etc/inittab
EOF

Опция -I '\033(K' говорит agetty послать эту еscape-последовательность на терминал перед остальными действиями. Эта еscape-последовательность переключает консольный набор символов на пользовательский, который может быть изменен запуском программы setfont. Стартовый скрипт console из пакета LFS-Bootscripts вызывает программу setfont во время загрузки системы. Посылка этой еscape-последовательности необходима для людей, которые используют не-ISO 8859-1 экранный шрифт, но это не имеет эффекта для использующих английский.

6.55.3. Описание Sysvinit

Проинсталированные программы: halt, init, killall5, last, lastb (ссылка на last), mesg, pidof (ссылка на killall5), poweroff (ссылка на halt), reboot (ссылка на halt), runlevel, shutdown, sulogin, telinit (ссылка на init), utmpdump и wall

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

halt

Обычно вызывает shutdown с параметром -h, если текущй уровень запуска не 0, затем он отдает команду ядру на отключение системы, но сначала записывает в файл /var/log/wtmp что система отключается.

init

Первый процесс, который стартует после инициализации аппаратуры ядром и запускает все процессы для текущего уровня запуска

killall5

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

last

Показывает, какие пользователи подключены (и отключены) в системе, просматривая файл /var/log/wtmp; он также отображает процесс загрузки и отключения системы и изменения уровней запуска.

lastb

Показывает ошибки входа в систему, отмеченные в /var/log/btmp

mesg

Контролирует возможность отправки другими пользователями сообщений на текущий терминал пользователя.

pidof

Возвращает PID указанных программ.

poweroff

Передает ядру команду на отключение системы и выключение компьютера (смотри halt).

reboot

Передает ядру команду на перезагрузку системы (смотри halt).

runlevel

Возвращает предыдущий и текущий уровни запуска, последний уровень запуска записан в /var/run/utmp

shutdown

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

sulogin

Позволяет зарегистрироваться root; Обычно используется в скрипте init, когда система загружается в однопользовательском режиме.

telinit

Говорит init о необходимости смены уровня запуска.

utmpdump

Отображает содержимое указанного login-файла в удобочитаемом формате.

wall

Пишет сообщение всем подключеным пользователям.