6.56. Sysvinit-2.86

Sysvinit 软件包包含一些控制系统启动、运行、关闭的程序。

预计编译时间: 0.1 SBU
所需磁盘空间: 1012 KB
安装依赖于: Binutils, Coreutils, GCC, Glibc, Make

6.56.1. 安装 Sysvinit

当运行级别被改变(比如,正在关闭系统),init 向那些由 init 自身开启的,并且将不会在新的运行级别里运行的线程发送终端信号。当 init 做上面这些事情时,会输出像"Sending processes the TERM signal"这样的信息,这看起来就像它正在向那些系统正在运行的程序发送上面这些信息一样。要避免错误地理解这个信息,可以修改源码以便可以代替为读起来像"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.56.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 在做任何动作前,先将该转义序列发送到终端。这个转义序列会将控制台字符集设置为用户使用 setfont 程序指定的字符集。LFS-Bootscripts 中的 console 初始化脚本会在系统启动时调用 setfont 程序。对于那些使用非 ISO 8859-1 屏幕字体的用户来说,发送这个转义序列是必须的,但不会影响到母语是英语的用户。

6.56.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

当内核已经初始化硬件,接管引导程序,开启指令线程时,init 会被第一个启动。

killall5

发送一个信号到所有进程,但那些在它自己设定级别的进程将不会被这个运行的脚本所中断。

last

给出哪一个用户最后一次登录(或退出登录),它搜索 /var/log/wtmp 文件,出给出系统引导、关闭、运行级别改变等信息。

lastb

给出登失败的尝试,并写入日志 /var/log/btmp

mesg

控制是否允许其他用户也有向系统所有用户发送信息的权限

mountpoint

检查给定的目录是否是一个挂载点

pidof

报告给定程序的PID号

poweroff

告诉内核中止系统并且关闭系统(参见 halt)

reboot

告诉内核重启系统(参见 halt)

runlevel

告前一个和当前的系统运行级别,并且将最后一些运行级别写入 /var/run/utmp

shutdown

使系统安全关闭,向所有线程发送关闭信号并且通知所有已经登录的系统用户系统即将关闭。

sulogin

允许 root 登录,它通常情况下是在系统在单用户模式下运行时,由 init 所派生。

telinit

告诉 init 将切换到那一个运行级

utmpdump

以一个多用户友好的方式列出已经给出的登录文件的目录

wall

向所有已经登录的用户写入一个信息