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 程序来修改 console 初始化脚本在系统引导时,在 LFS-Bootscripts 中调入 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

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