缺省的runlevel是2,也就是/etc/rc2.d/下面的文件是随系统启动加载的。
ubuntu由/etc/event.d/rc-default
这个文件管理缺省的启动level
似乎现在的启动过程是这样的:
0,内核启动init进程
1,进入/etc/event.d/,找到相应的运行级别X的脚本rcX运行;
2,rcX运行时,进入/etc/init.d/,找到脚本rc;
3,执行rc X
4,rc X执行后即进入/etc/rcX.d/目录,依次执行其中的各个进程。
现在我不明白的是,第0步中,原本inittab里设定默认运行级别的事现在交给谁来做了呢?
-------- rc-default
etc/fstab
/etc/init.d/
/etc/rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rcS.d/
由于ubuntu的运行级别2-5都是多用户的,用sudo sysv-rc-conf命令查看,可以发现2-5的运行级别所有的启动服务都是一样的,在/etc/inittab中系统默认的是运行级别2,在我们将运行级别2的gdm一项去掉选择后,从新启动系统,会进入字符界面,就是我们所熟悉的login,登录就可以了!
如果想要切换到图形界面,直接startx的话会出现前面提到的问题,系统不能加在原先的配置。参考了Debian手册后发现,在字符模式的时候,我们可 以通过telinit这个命令来切换系统的运行级别,我们启动字符界面的时候,用的是运行级别2,而在我们修改运行级别2之前,运行级别2-5的配置是一 样的,所以现在运行级别3-5的配置还是原来的配置,这时候,只要我们将当前的运行级别从2改变至3-5的任何一个级别,都可以让系统加载原先的系统配 置。所以这个方法可以归纳为,系统从字符界面切换到图形界面,进入图形界面的时候只是加载了原来没有加载完的系统配置。
运行级别间的切换命令为:telinit 3
当然telinit后面的运行级别可以为3-5的任何一个运行级别,前提是3-5的任何一个运行级别的配置必须和以前直接图形界面启动是的配置相同,当然执行命令的必须是root用户。
我用的是:
在所有 /etc/init.d/?dm 文件的最前面加上“exit 0”
我用的是gnome,用编辑器打开gdm文件,然后加入exit 0 即可。
一般不建议删除。恢复的话注解一下这句就行了。
“我不想直接启动到 X!”
* 玩 edgy/dapper 很有趣,但在启动进程中执行不稳定的 xdm、gdm、kdm 和 wdm 会让你焦头烂额。 首先,在启动提示符后输入如下指令获得 root shell:
boot: Linux vga=normal s
这里的 Linux 是你要启动的内核的标记,“vga=normal”告诉 lilo 在普通 VGA 屏幕下运行,“s”(或“S”)是传给 init 的参数,告诉它进入单用户模式。在提示符后输入 root 密码。 有多种方法禁用 X 启动 daemons:
* 运行 update-rc.d -f ?dm remove ; update-rc.d ?dm stop 99 1 2 3 4 5 6 .
* 在所有 /etc/init.d/?dm 文件的最前面加上“exit 0”。
* 把所有的 /etc/rc2.d/S99?dm 文件改名为 /etc/rc2.d/K99?dm。
* 删除所有的 /etc/rc2.d/S99?dm 文件。
*
运行 :>/etc/X11/default-display-manager 其中,rc2.d 中的数字必须与 /etc/inittab 中指定的 runlevel 一致。而 ?dm 的意思是你要将同一个命令运行多次,每次将其替换成 xdm、gdm、kdm 和 wdm 中的一个。 在 Ubuntu 下只有第一种方法是“唯一正确的方法”。最后一种方法比较简单但只适用于 Ubuntu,而且还需要使用 dpkg-reconfigure 重新设置一次。其它方法都是通用的中 daemons 的方法。 你仍可在任何控制台 shell 中用 startx 命令启动 X。