在系统从 ubuntu 9.04 升至 9.10 后,本人系统的控制台就一直不能使,而且 vbox 在每次系统重启后都要执行 `sudo /etc/init.d/vboxdrv setup `重新编译一次内核。由于其它方面没感不便,对这两小问题也就忍了。
最近想装 NV 的官方驱动,安装要求关闭 X ,就不得不面对这个问题了。
首先想到的是问题出在启动过程中出现的问题,ubuntu 使用 upstart 来引导系统,upstart 启动过程可参考 Upstart: Ubuntu 的基于事件的启动进程 有比较详细的描述。在系统终端中输入命令 "runlevel" 返回结果 unknown ,正确的应该返回 “N 2” ,ubuntu 默认的runlevel 是 2。在对 /etc/event.d/ 中文件和 /etc/rc2.d 以及 /etc/rcS.d 目录下的文件进行检查后发现,runlevel 在 /etc/event.d/rc-default 的文件中 进行了设置,也就是 telint 2 这句。
此时在系统终端中输入命令 `telint 2` 会发现 终端1 中出现了 "login:" 提示符。从 /etc/event.d/rc2 中得知,在系统终端中输入命令 `sudo /etc/init.d/rc 2` 后出现了一堆说初始化信息,其中包括 vbox 的,对了还 cups 的,每次要用打印机都要手动启动 cups 服务。做到这里开始怀疑是 upstart 没有正常执行这些脚本。在上面两个脚本中加入了 log 输出,发现根本没执行。
于是开始怀疑 upstart 出了问题,于是升级 upstart 从 9.10 默认的 upstart_0.6.3-11 升级到 upstart_0.6.5-3 (可从 http://archive.ubuntu.com/ubuntu/pool/main/u/upstart/ 下载ÿ