从 init 开始

系统启动时,内核会先配置设备并挂载根文件系统。在此之后,系统会执行 /sbin/init [28]init 是系统所有进程的父进程,并且负责将系统带入适当的 运行级别。我们将会稍后讨论运行级别(参见“运行级别”一节)。

init 配置文件称为 /etc/inittab。此文件有其自己的手册页(inittab(5)),所以我们在这里只是简单介绍几个可配置的选项。

第一行您应该引起注意:

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

这一行通知 init 只要系统初始化完成(si 代表系统初始化(System Init)),就立即运行 /etc/rc.d/rc.sysinit。为了确定默认的运行级别,init 接下来会询问包含 initdefault 关键字的一行:

id:5:initdefault:

在这种情况下,init 就知道了默认的运行级别是 5。它还知道为了进入级别 5,还必须运行下列命令:

l5:5:wait:/etc/rc.d/rc 5

正如您所看到的那样,每个运行级别的语法都是十分相似的。

init 还承担着重新启动(respawn)某些无法由其它进程启动的程序的责任。例如,在六个虚拟控制台上运行的每个登陆程序就都是由 init 启动的。[29]。第二个虚拟控制台通过如下方式标识:

2:2345:respawn:/sbin/mingetty tty2


[28] 这正是为什么您将 /sbin 与根分区分开存放是一个非常糟糕的想法。此时内核尚未挂载任何分区,所以也找不到 /sbin/init

[29] 如果您觉得六个虚拟控制台不符合您的要求,您可以修改此文件来添加或删除。如果您想要增加控制台的数目,您可以最多拥有 64 个控制台。但是别忘了 X 本身也运行于虚拟控制台,所以至少要为 X 剩下一个控制台。