Linux 运行级init详解

Linux;启动时需要哪些步骤呢?本文将详细描述不同的运行级在启动中的作用 。
对于那些在DOS/Win9x/NT;平台下的高级用户而言 , Linux;似乎是一个怪物 。没有config.sys; , 没有;
autoexec.bat , 具有个人特色的机器配置不知道从何开始 。

需要说明的是 , 很多人认为Linux;是Unix;的一个克隆 , 但是 , 这种说法对于Linux;是不公平的 。Linux;
比Unix更加开放 , 功能更强大 。我们应该称之为GNU/Linux; 。

Linux;启动时 , 运行一个叫做init;的程序 , 然后由它来启动后面的任务 , 包括多用户环境 , 网络等 。

那么 , 到底什么是运行级呢?简单的说 , 运行级就是操作系统当前正在运行的功能级别 。这个级别从1;到6; ,
具有不同的功能 。这些级别在/etc/inittab;文件里指定 。这个文件是init;程序寻找的主要文件 , 最先运行
的服务是那些放在/etc/rc.d;目录下的文件 。

大多数的Linux;发行版本中 , 启动脚本位于;/etc/rc.d/init.d 。这些脚本
被ln;命令来连接到;/etc/rc.d/rcn.d;目录 。(这里的n;就是运行级0-6)

例如/etc/rc.d/rc2.d;下面的S10network;就是连接到/etc/rc.d/init.d下的network;脚本的 。

因此 , 我们可以知道 , rc2.d;下面的文件就是和运行级2;有关的 。

文件开头的S;代表start;就是启动服务的意思 , 后面的数字10;就是启动的顺序 。例如 , 在同一个目录下 ,
你还可以看到;S80postfix;这个文件 , 80;就是顺序在;10;以后 , 因为没有启动网络的情况下 , 启动postfix;
是没有任何作用的 。

再看一下;/etc/rc.d/rc3.d , 可以看到文件S60nfslock , 但是这个文件不存在于;/etc/rc.d/rc2.d;目录下 。
NFS;要用到这个文件 , 一般用在多用户环境下 , 所以放在rc3.d;目录下 。

另外 , 在/etc/rc.d/rc2.d;还可以看到那些K;开头的文件 , 例如

/etc/rc.d/rc2.d/K45named; , K;代表;kill; 。

标准的Linux运行级为3;或者5; , 如果是3;的话 , 系统就在多用户状态 。如果是5的话 , 则是运行着X;Window;
系统 。如果目前正在3或5 , 而你把运行级降低到2的话 , init;就会执行;K45named;脚本 。

不同的运行级定义如下:(可以参考Red;Hat;Linux;里面的/etc/inittab)

#;缺省的运行级 , RHS;用到的级别如下:
#;0;-;停机(千万不要把initdefault;设置为0;)
#;1;-;单用户模式
#;2;-;多用户 , 但是没有;NFS;
#;3;-;完全多用户模式
#;4;-;没有用到
#;5;-;X11;
#;6;-;重新启动;(千万不要把initdefault;设置为6;)
#;

对各个运行级的详细解释:
0;为停机 , 机器关闭 。
1;为单用户模式 , 就像Win9x;下的安全模式类似 。
2;为多用户模式 , 但是没有NFS;支持 。
3;为完整的多用户模式 , 是标准的运行级 。
4;一般不用 , 在一些特殊情况下可以用它来做一些事情 。
例如在笔记本电脑的电池用尽时 , 可以切换到这个模式来做一些设置 。
5;就是;X11; , 进到;X;Window;系统了 。
6;为重启 , 运行;init;6;机器就会重启 。

不同的运行级有不同的用处 , 也应该根据自己的不同情形来设置 。例如 , 如果丢失了root;口令 , 那么可以
让机器启动进入单用户状态来设置 。在启动后的;lilo;提示符下输入:

init=/bin/sh;rw;

就可以使机器进入运行级1; , 并把;root;文件系统挂为读写 。他会跳过所有系统认证 , 让你使用passwd;程序
来改变root口令 , 然后启动到一个新的运行级 。

Linux;启动程序的调整 , 对于新手来说也是一个大问题 , 以后的教程中 , 我们将介绍这方面的知识 。

    推荐阅读