在Fedora时代,开机进入字符模式需要改inittab或者添加single-user内核参数.到我终于转到Ubuntu的时候,原来那一套却不适用了.Ubuntu采用新的upstart替代init,个中机理,早已失去了研究的欲望.前一段时候,新内核上笔记本显卡驱动有问题,进入X就花屏.尝试进入字符模式,数次搜索未果,这居然也未激起我去研究一番的斗志.直到想用KVM做实验,而Qemu的图形支持实在是差,这才又想起,怎么自定义启动服务,不要让其进入X.我要整个Ubuntu环境,随手可用的Python, gcc, apt等等,而不空是一个内核.不然,qemu -kernel便够用.
网上介绍说,Upstart是事件驱动.这种说法太抽象,谁,在什么契机下,产生什么事件,驱动什么东西?今天简单看了一下手册,大致明白了,所有/etc/init/目录下的conf文件在启动的时候会被解析,里面记录着当什么事件发生时,执行什么动作.全部信息收集完了以后,upstart产生一个startup事件.几个重量级选手监听这个事件,有的是真想在启动时做什么事,比如hostname.conf里说,收到startup事件,调用hostname程序设置主机名;有的则产生其它一系列事件,如mountall.conf,于是其它conf文件注册的handler就会执行.
OK,那怎么不进入图形界面呢?隐约记得lightgdm这个东西,在/etc/init目录也看到了lightgdm.conf这个文件,找开一看,里面写到如果内核参数里有text,就不启动服务.试一下,果然如此.如果不想显示图形启动界面,只要在Grub里把splash参数去掉就行了.改/etc/init下的文件似乎没用,注释说开机的splash实际上在initramfs里做的.
以后在KVM里做实验就舒服多了呀.