不知道是我接受新事务的速度太慢还是长期使用RHEL系的Linux Server,有一天濡染好奇要把笔记本调节成字符模式.结果我是Debian下的三大神器sysv-rc-conf, update-rc.d,rcconf,全部不起作用,明明里面已经显示GDM是不启动了,可是他还是启动。
自己切换到rc3.d下面去看,就发现问题了,根本就没有gdm的启动连接
网上找了一些资料,都是非常陈旧的,比如,已经被10.04里面的upstart废弃的event.d,也是频繁出现在所谓的教程里面。
在Ubuntu下,运行级别的定义被迁移到了 /etc/init/rc-sysinit.conf,当然,他们在这里面加入的对inittab的支持,但是若按照同systemd一样的标准来看,这些shell脚本是“有害的”!
最后,综合一些在国外网站上找到的资料,终于搞定了
实际上有两种方法。
一种是内核级别的:
[bash]nano /etc/default/grub[/bash]
修改
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
为:
GRUB_CMDLINE_LINUX_DEFAULT="text"
然后运行下sudo update-grub2就可了
其实这个方法也可以在开机的时候按下grub2中的e,手动编辑为text,但是那是一次性的
一种是基于upstart的"正统"方法:
ubuntu的upstart的体系下,/etc/init.d里面基本上都是连接到/lib/init/upstart-job的软连接,所以,对 initscripts的请求全部转化为upstart事件,upstart系统对启动项目的管理全部根据/etc/init里面的配置文件来启动,以gdm.conf为例,可以启动gdm的事件就让人咂舌
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))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 这里面的任何一个事件,GDM就会被启动,只在运行级别在016的时候,GDM不启动。
所以,事件也就明了了、要在upstart层面干掉gdm,把上面的启动相关事件注释掉,改写下就行了
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 [245])
stop on runlevel [0136]
所以,
就算你清空整个rc3.d,upstart根本不管你。
如此这般,sysv-rc-conf, update-rc.d,rcconf,这三大神器,似乎就和残废了一样了
残废了就算了,你至少弄个好用的替代品出来啊