跳至主要內容

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

xlc520LinuxLinux大约 6 分钟约 1698 字

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)

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

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

谨以此记录