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
运行下面命令,创建一个新 /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 屏幕字体的用户来说,发送退出序列是必须的,但不会影响到母语是英语的用户。