跳至主要內容

Linux无论怎么设置开机启动级别没有进入图形化界面

xlc520LinuxLinux大约 6 分钟约 1699 字

Linux 无论怎么设置开机启动级别为图形化启动(级别 5),启动后却没有进入图形化界面,一直进入命令行模式,如何解决?

环境:CentOS 7.3

现象简单描述

偶然遇到一个系统每次开机启动都默认进入了命令行模式,每次开机都需要输入 startx 或者 init 5 进入图形化界面。启动期间没有报错项,唯一就是启动级别明明是 runlevel5,但是进入的却是 runlevel3。

img
img
img
img

startx 与 init 5 区别

  • startx 是单纯的以执行命令者的身份启动 X 图形界面,环境变量是当前身份的。任意用户可以执行。
  • init 5 切换到运行级别 5,则是启动 runlevel 5 所对应的服务,并运行图形登录管理器,由用户选择以何种身份登录。该操作是有重新启动系统服务的,需要重新输入用户名和密码登陆。只有 root 有权执行。

排查过程:

1、查看启动级别

systemctl get-default

img
img

再查看软链接目录下是否有误:

ls -al /etc/systemd/system/

img
img

2、排查开机启动项

cat /etc/rc.d/rc.local

img
img

并无有关设置启动级别的条目,这里大家也不要试了,这里我试过将 startx 加入到这里开机运行,结果开机直接卡在了桌面,进不去。和这里应该是没有关系的。

3、排查开机引导配置文件 grub.cfg(7 版本这个,6 版本为 grub.conf)

根据系统的启动顺序,后面想到了是不是这里设置了启动级别,那无论我们怎么设置启动级别,那肯定是没用的。所以在这里设置了启动级别

cat /boot/grub2/grub.cfg

img
img

成功实现了不管如何设置启动级别,系统都 默认启动的级别都是这里设置的内容。这样的话,我们可以联想一下,即使遇到了这样的情况,我们可以直 接在这里指定启动级别,就可以简单解决眼下的问题

Linux 无论怎么设置开机启动级别为命令行模式(级别 3),启动后却没有进入命令行模式,一直进入图形化启动这个问题也是和此类似。

4、可以排查其他开机自启项目,可能有某个服务包含了设置启动级别的配置文件,这个大家可以继续往下研究是否有这样的服务可做到。

这里我在虚拟机里有做过测试,已确定是由哪一个服务也可以导致该现象的发生:该服务名为gdmdisplay-manager 。下面简单介绍下:

关于 gdm 引用一段从别的地方摘抄的话:

GDM (The GNOME Display Manager)是 GNOME 显示环境的管理器,并被用来替代原来的 X Display Manager。与其竞争者(X3DM,KDM,WDM) 不同,GDM 是完全重写的,并不包含任何 XDM 的代码。GDM 可以运行并管理本地和远程登录的 X 服务器(通过 XDMCP) 。gdm 仅仅是一个脚本,实际上是通过他来运行 GDM 二进制可执行文件。gdm-stop 是用来迅速终止当前正在运行的 gdm 守护进程的一个脚本。gdm-restart 脚本将迅速重启当前守护进程。然而 gdm-safe-restart 会当所有人都注销后再重启。gdmsetup 是一种可以很简单的修改多数常用选项的图形化界面工具。GNOME 的帮助里有更完整的文档,在“应用程序”/“系统工具”这一章节。

简单的说,就是 gdm 是关于桌面显示的关键部分,可用于管理用户登录这些方面的内容

下面我们直接测试该服务如果设置开机不自启动,会产生什么样的现象:

img
img
img
img

**重启后进入了命令行模式,也实现了无论如何设置开机启动级别,但是开机依然进入了命令行。这个时候你就要注意看看是不是这个服务被设置成开机不自启动了 **。

另外,我们如果不小心把 display-manager 设置开机不自启动的话,其实也就是取消了 gdm 的自启。只是现象可能有点差异:下面我只是简单描述下:

1)重启后会有一个卡住在检测那里,显示 1min30s 的读条,之后进去卡住,然后如果此时按一下 Enter 键,可以直接进入命令行模式;

2)重启后直接进入了命令行,这两个现象是我在虚拟机里测试的结果,第一条暂时无法重现了,我就这么简单描述了。

5、此外,当安装 iBus 输入法后,在卸载 iBus 后也会无法进入图形用户界面。这个原因就是 ibus 和 gnome 很多都是绑定在一起的,卸载 ibus 后会导致 gdm 服务的状态被改变,从而导致了故障的发生。解决办法就是把 gdm 设置开机自启重启即可。

systemctl enable gdm

系统启动级别具体说明:

0: 系统停机**(关机)**模式,系统默认运行级别不能设置为 0,否则不能正常启动,一开机就自动关机。 **1:**单用户模式,root 权限,用于系统维护,禁止远程登陆,就像 Windows 下的安全模式登录。 **2:**多用户模式,没有 NFS 网络支持。 **3:**完整的多用户文本模式,有 NFS,登陆后进入控制台命令行模式。 **4:**系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。 **5:**图形化模式,登陆后进入图形 GUI 模式或 GNOME、KDE 图形化界面,如 X Window 系统。 **6:**重启模式,默认运行级别不能设为 6,否则不能正常启动,就会一直开机重启开机重启。

设置默认运行级别的方式

设置成多用户命令模式【命令行模式】

systemctl set-default multi-user.target

也可以用下面这个命令:

systemctl set-default runlevel3.target

设置成图形化模式

systemctl set-default graphical.target

也可以用下面这个命令:

systemctl set-default runlevel5.target

获取当前启动级别:

systemctl get-default

谨以此记录