ubuntu 使用了一种新的启动方式, 叫startup, 但是为了与以前的system v兼容,
ubuntu里的启动弄得很乱~~并且还在不断的更改之中~~
从网上找了一篇文章, 转载如下: 转载自:http://forum.ubuntu.org.cn/viewtopic.php?f=120&t=263975&start=0
在linux的世界里,所有的linux操作系统都有一个启动级别的概念,启动级别控制着系统启动后所加载的各种功能的不同,实质是在启动后运行各种服务 (servcie||daemon)。这里的服务是和windows里的服务的概念相似的,是一种在系统后台独立运行的程序,也就是说他一般不予用户进行 交互。
一般的linux分8个级别:0-6和一个’S’级别。0代表关机(halt),6代表重启(restart);1-5分别是不同功能的级别,其中1级别 是单用户模式(single),2-5各有不同。但是在userlinux(包括ubuntu)中2-5级别是毫无差别的。最后’S’级别是一个比较特殊 的级别,他应该是先于其他级别运行的级别。(这一点有待考证)。这里说明一下,0-6级别的运行是互斥的,而不是叠加运行,也就是说如果进入(move into)4级别,不是指0-3都要运行,而只是完成4级别里所规定的服务。
稍微观的观察ubuntu运行级别的完成会发现,所有的运行服务的脚本存储在/etc/init.d/里面。而在/etc/中有rc’X’.d的文件 夹,’X’代表0-6和X,也就对应了这8个启动级别,里面就都是指向/etc/init.d/里面运行服务的脚本的软连接(symbol link),会发现,软连接的数目少于运行脚本数,这就是说不是所有服务都要在一个级别中运行的。软连接的命名是有规则的:[K|S][0-90-9] [name],K代表kill,S代表start,后面是个二位数,最后是对应的运行服务的脚本文件名。这个名字是在运行相应的脚本的时候传递的参数,K 是传递stop(就是关闭服务),S是传递start(就是启动服务)。
运行顺序:K小数->K大数->S小数->S大数。这里注意文件夹里的所有软连接都会被执行,不论K或者S。
这里补充一下,多数的linux都是用一种叫System V的机制来启动运行级别(好像是串行的,慢?),而ubuntu是用的另一种机制叫startup(好像是并行的,快?),所以没有那个inittab文 件改默认运行级别。ubuntu9.10前好像还能兼容inittab,但是9.10开始就不行了,而且9.10里面设置默认运行级别的文件都和 ubuntu之前的版本不同。ubuntu 9.10 的默认运行级别文件是这个/etc/init/rc-sysinit.conf的14行。
如果想要删除某个运行级别所要运行的服务,可以把相应rcX.d文件夹里的软连接名字的第一个字母小写(这个是debian的文章推荐的做法,也是bum 的做法),也可以删除这个软连接(这个是sysv-rc-conf的做法)。当然自己也可以写好脚本然后创建软连接,就可以添加服务了。
但是这篇文章中说的修改运行级别的方法估计也用不了几个版本了, 因为
ubuntu的rcX.d文件中的README 是这样写的:
The scripts in this directory are executed each time the system enters
this runlevel.
The scripts are all symbolic links whose targets are located in
/etc/init.d/ .
To disable a service in this runlevel, rename its script in this
directory so that the new name begins with a ‘K’ and a two-digit
number, and run ‘update-rc.d script defaults’ to reorder the scripts
according to dependencies. A warning about the current runlevels
being enabled not matching the LSB header in the init.d script will be
printed. To re-enable the service, rename the script back to its
original name beginning with ‘S’ and run update-rc.d again.
For a more information see /etc/init.d/README.
而运行update-rc.d 时提示是这样的
The disable|enable API is not stable and might change in the future.