一、 运行级别介绍
所有的linux操作系统都有一个启动级别的概念,启动级别不同系统启动后所加载的功能也不同,启动后提供的服务也不同。这些服务是一种在系统后台独立运行的程序,也就是说他们一般不予用户进行交互。
一般的linux分8个级别:
(1). 0代表关机(halt)
(2). 1级别是单用户模式(single)
(3). 2级别是多用户级别,这个是默认级别
(4). 3,4,5未定义,可以提供给用户定义其他多用户级别
(5). 6代表重启(restart)
(6). S级别系统内部定义的单用户恢复模式
所有的运行服务的脚本存储在/etc/init/里面。而在/etc/init.d中有rc’N’.d的文件夹,'X’代表0-6和X,也就对应了这8个启动级别,里面就都是指向/etc/init/里面运行服务的脚本的软连接,其中软连接的数目少于运行脚本数,这就是说不是所有服务都要在一个级别中运行的。
软连接的命名是有规则的:[K|S][0-9,0-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的做法)。当然自己也可以写好脚本然后创建软连接,就可以添加服务了。
http://blog.csdn.net/jimmy2013_1_1/article/details/8811871
二、查看当前运行级别
Ubuntu中,runlevel命令 可以查看当前运行级别;
CentOS中,who -r 命令查看当前运行级别;
三、设置开机运行级别
(一) 方法一:修改grub
sudo vi /etc/default/grub
修改GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
为:GRUB_CMDLINE_LINUX_DEFAULT=” text”
然后运行下sudo update-grub2就可了
(二) 方法二:修改 /etc/init/lightdm.conf
ubuntu的upstart的体系下,/etc/init.d里面基本上都是连接到/lib/init/upstart-job的软连接,所以,对 initscripts的请求全部转化为upstart事件,upstart系统对启动项目的管理全部根据/etc/init里面的配置文件来启动,可以启动lightdm的事件就让人咂舌
编辑文件 /etc/init/lightdm.conf
start on ((filesystem
and started dbus
and (graphics-device-added fb0 PRIMARY_DEVICE_FOR_DISPLAY=1
or drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
or stopped udevtrigger))
or runlevel PREVLEVEL=s)
stop on runlevel [016]
可见,一旦发生文件系统初始化,DBUS总线启动和发生graphics-device-added fb0 PRIMARY_DEVICE_FOR_DISPLAY=1 or drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udevtrigger or runlevel PREVLEVEL=s这里面的任何一个事件,GDM就会被启动,只在运行级别在016的时候,GDM不启动。
所以,事件也就明了了、要在upstart层面干掉gdm,把上面的启动相关事件注释掉,改写下就行了
由于ubuntu 默认模式为2,所以:
start on (filesystem
and started dbus
and (graphics-device-added fb0 PRIMARY_DEVICE_FOR_DISPLAY=1
or drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
or stopped udevtrigger)
and runlevel [345])
stop on runlevel [0126]
最后重启电脑。
(三)、方法三 在/etc/init/rc-sysinit.conf中设置
sudo vi /etc/init/rc-sysinit.conf
设备其中的
env DEFAULT_RUNLEVEL=2
执行命令
sudo updat-grub