Ubuntu 默认启动命令行模式,以及开启图形界面

linux 运行等级 init

/etc/inittab
  • 0 – 停机(千万不能把initdefault 设置为0)
  • 1 – 单用户模式
  • 2 – 多用户,没有 NFS(和级别3相似,会停止部分服务)
  • 3 – 完全多用户模式
  • 4 – 没有用到
  • 5 – x11(Xwindow)
  • 6 – 重新启动(千万不要把initdefault 设置为6)

一般来说默认启动到命令行只需要将上面文件的 initdefault 改为相应的等级即可。但Ubuntu找不到/etc/inittab文件,而且运行级别也有差别。

  • 0 – 关闭系统
  • 1 – 单用户模式
  • 2~5 – 完整的多用户模式
  • 6 – 重新启动

也就是说,默认情况下级别2、3、4、5都是一样的,同时系统的默认级别设定也不是在inittab文件中,而是写在/etc/init/rc-sysinit.conf文件中。打开此文件,可以找到下面一句:

env DEFAULT_RUNLEVEL=2

这表明系统当前默认是进入级别2。
另外,在此文见中还有一段以if [ -r /etc/inittab ]开始的代码,这里保留了使用inittab指定系统默认运行级别的功能,也就是说,如果用户手动创建了/etc/inittab,那么init将以/etc/inittab中指定的默认运行级别进行系统的启动。比如说用户希望系统以级别3为默认运行级别,则只需在inittab文件中加入如下一行:

id:3:initdefault:

在经过/etc/init/rc-sysinit.conf确定运行级别后,init将进一步运行/etc/init.d/rc,然后根据级别进入/etc/rc[?].d启动或关闭相应的服务。(参考 http://my.oschina.net/jackguo/blog/96656 )

下面是让 Ubuntu 默认启动到命令行的几种方法。

第一种方法

  1. 查看文件/etc/init/rc-sysinit.conf,在第14行附近:确认env DEFAULT_RUNLEVEL=2。2是新装系统默认的,确保不被修改。
  2. 编辑文件/etc/init/lightdm.conf,在第12行附近,原句and runlevel [!06]改为and runlevel [!026]

系统启动过程中会有一个init进程来拉起许多其他进程(各种系统服务,窗口界面)。在ubuntu上(11.10,12.04是这样,其他版本或其他linux发行版不确定)init会执行两个目录下的脚本,一个是 /etc/init/下的,另一个是/etc/rc?.d/下的,问号可能是0~6的其中一个数字,代表运行级别。

在ubuntu上,init进程首先执行/etc/init/目录下的rc-sysinit.conf,这个文件指明了本次启动的默认运行级别。上面第一步便是确保默认运行级别是2。接下来目录/etc/init下的其他脚本的执行都会根据不同的运行级别做出不同的动作,比如lightdm会判断运行级别是否处于1,2,3,4,5中的一个,是则启动lightdm,不是则不启动lightdm。这便是上面第二步的意义,修改lightdm.conf,把2加入到判断语句,使得lightdm在运行级别2的时候不要启动。明白了这些,你就可以灵活一点,例如把默认级别设置为3,而把3加入那个判断语句,也可以达到阻止lightdm启动的效果。完成了/etc/init/目录下的启动动作,init进程会继续执行/etc/rc2.d目录下的脚本。

重启,即可发现开机后进入到命令行界面,并没有启动图形界面。
如果要进入图形界面,可以是使用命令
sudo init 3
注意,如果使用命令sudo init 2不行,因为上面我们把它设置为无法启动图形界面了。
也不能使用命令startx,因为如果使用这个命令会进入到一个界面,但是无法输入用户名和密码,据说这命令有问题,参考 http://forum.ubuntu.org.cn/viewtopic.php?t=401953

使用命令

sudo /etc/init.d/lightdm start

或者

sudo lightdm restart

也是可以的,只是会有几次跳转到命令行界面,需要手动回到图形界面(ctrl+alt+F7)。
(下面我其实没有碰到,比较第三种方法)
如果输入了登录密码后不能进入图形桌面,仍然回到登录界面,可以按 ctrl+alt+f1 返回命令行,会发现一个.Xauthority的文件被拒绝写入,改变这个文件的权限

sudo chmod 646 .Xauthority

完成后,再sudo lightdm restart,进入登录界面,输入密码后正常进入桌面

二者的区别,后者有点类似启动了某个程序,可以在刚开始的命令行界面 ctrl+c 关闭,而 init 3 则不知道怎么关闭。

重新回到默认启动图形界面,只需要将/etc/init/lightdm.conf的改动恢复即可。

第二种方法

sudo vi /etc/default/grub 

将其中一行

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

改为

GRUB_CMDLINE_LINUX_DEFAULT="text"

保存后

sudo update-grub

重启后发现进入到命令行界面。此时不能用sudo init 3启动图形界面,只能使用

sudo /etc/init.d/lightdm start

或者

sudo lightdm restart

第三种方法

sudo vi /etc/X11/default-display-manager

里面就一行内容/usr/sbin/gdm注释掉,加上一行false重启即可。重启后屏幕上出现

* Stopping Light DM Display Manager              [ OK ]
* Starting CUPS printing spooler/server          [ OK ]

这个时候其实是位于 ctrl+alt+F7 的,切换到其他模式下即可,例如
ctrl+alt+F1
此时也不能用sudo init 3启动图形界面,而需要用
sudo /etc/init.d/lightdm start或者sudo lightdm restart

(下面实际当中碰到)
如果输入了登录密码后不能进入图形桌面,仍然回到登录界面,可以按 ctrl+alt+f1 返回命令行,会发现一个.Xauthority的文件被拒绝写入,改变这个文件的权限

sudo chmod 646 .Xauthority

完成后,再sudo lightdm restart,进入登录界面,输入密码后正常进入桌面

参考链接

http://blog.sina.com.cn/s/blog_698f90230100xt05.html
http://www.xuebuyuan.com/662992.html
http://forum.ubuntu.org.cn/viewtopic.php?t=401953
http://my.oschina.net/jackguo/blog/96656

CentOS 7.0

CentOS7 不再使用init托管服务了,改成了systemd,也不需要/etc/inittab这个文件。

命令模式

sudo systemctl set-default multi-user.target

图形模式

sudo systemctl set-default graphical.target

更改默认启动后输出示例

rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'

打开图形界面

sudo init 5

这里使用

startx

也可以,但二者不同的是init 5会进入登录界面,需要重新输入用户名和密码,此时在terminal输入sudo init 3又可回到命令行模式;使用命令startx直接进入到桌面,但与前者不同的是此时系统的语言变为英文的, 而且在terminal输入sudo init 3没有反应,此时可以通过sudo init 1回到命令行模式,屏幕上会出现一些提示信息,没看懂,按下ctrl+d等待一会就回到了命令行模式下。

参考链接

http://www.php230.com/weixin1410783943.html
https://blog.linuxeye.com/400.html

你可能感兴趣的:(ubuntu)