Slackware的启动(init)过程
导言
在一次IBM于阿姆斯特丹举办的Linux研讨会上,一位老师提出以下说法:“启动是Linux最难的部分。但是,一旦内核已经载入,并由init接管之后,你就畅行无阻了。从那个时刻起,所有发生的事情你都可以在脚本和文档(man page)里面读到。”
他当然是对的。在启动Linux机器的过程中没有什么秘密。你能在ASCII文件中读到所有东西。但是,在跟踪这些脚本的过程中也很容易迷路。Slackware与别的发行版不同之处在于它坚持用BSD风格的启动过程,而不是像它们那样用Sys V的启动过程。
在Sys V的启动系统中,所有起动/停止的脚本都放在 /etc/rc.d目录中。在每一个运行级(runlevel)都有一个目录(即 /etc/rc.1, /etc/rc.2 等等),其中全是该运行级所需运行脚本的链接。当进入一个运行级时,有一个大的脚本来处理这些链接以起动(或停止)该运行级的服务。
Sys V启动过程用在Redhat、Suse中,我将把解释它的事留给用这类系统的人。没有实际使用它的机器,我恐怕很快会在细节上晕头转向。
Slackware的用户(Slackers)多数认为Sys V启动过程既复杂又难于维护。老实说,Redhat和Suse用户的想易做图好相反。不过,先跟着我,然后你自己作出判断。
在本文档中,我将试着证明IBM的老师是正确的。我将循着Slackware(8.1)的启动过程,用脚本和man page作为指导。会引用很多,而较少(我自己的)文字。
又及:你可能注意到,英语不是我的母语。我会尽量经常地用拼写检查程序,但它在语法方面的用处不大。无论在内容或语法方面的错误,请不吝赐教。此外,我非常喜欢大家对我写的东西提出看法。
运行级(runlevel)
我们会很多次谈到运行级,所以现在是个好机会来解释一下运行级。运行级是决定某机器的服务等级的*nix方式。在每个运行级中,人们可以定义哪些服务要激活、哪些不用。原则上,可以有很多运行级。实际上,只有5个:
- 单用户运行级,只有最少的服务在运行。这个运行级经常用于系统维护。
- 多用户运行级,所有提供的服务都在运行。这些服务可能是诸如HTTP服务器、电子邮件服务器、SQL服务器之类。正是系统管理员(你)所需要的。
- 多用户运行级,和前面一样,但这次有个图形界面的登陆管理器。
多用户运行级之一就是机器正常的运行状态。你可以决定另外的运行级。例如,用于远程维护的有网络支持的单用户运行级。
上述运行级之外,还有两个特殊的运行级: