6.55. Sysvinit-2.86

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

预计编译时间: 少于 0.1 SBU
所需磁盘空间: 1 MB

6.55.1. 安装 Sysvinit

当运行级别被改变 (比如,正在关闭系统时), init向那些由init自身开启的, 并且将不会在新 的运行级别里运行的线程发送终端信号。当init做上面这些事情时,会输出像"Sending processes the TERM signal" 这样的信息, 这看起来就像它正在向那些系统正在运行的程序发送上面这些信息一样。 要避免错误地理解这个信息,可以修改源码以便可以代替为读起来像"Sending processes configured via /etc/inittab the TERM signal"的信息,可以用下面命令:

sed -i 's@Sending processes@& configured via /etc/inittab@g' \
    src/init.c

以前,通过Util-linux-ng软件包已经安装了wall程序的一个版本。 要阻止安装Sysvinit版的这个程序及其手册页:

sed -i -e 's/utmpdump wall/utmpdump/' \
       -e 's/mountpoint.1 wall.1/mountpoint.1/' src/Makefile

编译这个软件包:

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

6.55.3. Sysvinit 的内容

安装的程序: bootlogd, halt, init, killall5, last, lastb (link to last), mesg, mountpoint, pidof (link to killall5), poweroff (link to halt), reboot (link to halt), runlevel, shutdown, sulogin, telinit (link to init), and utmpdump

简要描述

bootlogd

把启动信息记录到一个日志文件

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

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