GDM图形界面登录整体流程分析

在我们的 /etc/inittab 的最后一行是

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon


这个 prefdm 是什么呢?从文件名我们可以看出是 “Preferred Display Manager” 的缩写。

前面的 Preferred 是什么意思呢?就是“被选择/喜欢的”的意思。那如何体现这个选择的功能呢?

下面就让我们来分析这个 shell script (没错,它是一个脚本)

[code]
#!/bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin # 注释 :设置 PATH 变量

# shut down any graphical boot that might exist # 注释 :关闭任何图形界面引导程序

if [ -x /usr/bin/rhgb-client ]; then # 注释 :如果存在该文件且可执行,
/usr/bin/rhgb-client -quit # 则执行该命令,并带 -quit 选项
fi

# 补充 :在 RHEL4 中,第一次安装后会出现一个蓝色的进度条,点击它就可以看到

# 平时的那些启动服务的信息,这个就是由上面的 rhgb-client 命令提供的,

# 而这个命令是由 /etc/rc.d/rc.sysinit 启动的


# We need to source this so that the login screens get translated

[ -f /etc/profile.d/lang.sh ] && . /etc/profile.d/lang.sh

# 注释 : 上面的命令判断是否存在该脚本,是则执行它。

# 该脚本的功能是用于设置登录界面的语言,同样不太长,74 行而已,可以自行分析


# Run preferred X display manager


# 注释 :下面就是重头戏了,启动之前设定的 Display Manager ,

# 显示登录对话框


preferred= # 注释 :该变量的值首先置空
if [ -f /etc/sysconfig/desktop ]; then # 注释 :如果存在 desktop 文件,则执行它
. /etc/sysconfig/desktop # 该文件只有1行,就是 DESKTOP=XXX
if [ "$DISPLAYMANAGER" = GNOME ]; then # 很明显,下面这些语句都不会被
preferred=gdm # 执行,因为 DISPLAYMANAGER
elif [ "$DISPLAYMANAGER" = KDE ]; then # 变量并没有定义,所以为空
preferred=kdm
elif [ "$DISPLAYMANAGER" = XDM ]; then
preferred=xdm
fi
fi

shopt -s execfail

# 注释 :shopt 是 shell 的一个内置命令,-s execfail

# 表示启用 ExecFail 功能,它表示如果下面的 exec 命令失败,不会退出非交互式 shell

# 在这里给出它的简单解释 :

# execfail
If set, a non-interactive shell will not exit if it can-
not execute the file specified as an argument to the
exec builtin command. An interactive shell does not
exit if exec fails.


[ -n "$preferred" ] && exec $preferred $* >/dev/null 2>&1

# 注释 :如果 preferred 变量的值不为空,则使用执行的 Display Mananger

# 并用它的代码覆盖当前 non-interactive shell 的代码

# 基于上面的 desktop 文件的内容,这句话是不会被执行的。


# Fallbacks, in order

# 注释 :既然不执行上面的命令,那么总得启动一个 Display Manager 了吧,

# 所以下面依次查功能是 gdm、kdm、xdm

exec gdm $* >/dev/null 2>&1
exec kdm $* >/dev/null 2>&1
exec xdm $* >/dev/null 2>&1

# catch all exit error

# 注释 :要注意,当你退出 GDM 后者 KDM 时,并不会执行下面的 exit 命令,

# 只有在上面的3个exec 命令都执行失败才会执行下面的 exit 1


exit 1
[/code]

前面我们提到了 /etc/sysconfig/desktop 文件,下面我们就修改它来实现默认为 KDE 或者 XDM

1、修改 /etc/sysconfig/desktop 文件

[code]
# cat /etc/sysconfig/desktop
DESKTOP="GNOME"
DISPLAYMANAGER="XDM"

[/code]

2、重启。为什么需要重启呢?因为在 /etc/inittab 中,在 x:5:respawn:/etc/X11/prefdm -nodaemon 这句中,respawn 的作用就是 prefdm 一旦退出,

init 立即再执行一个 /etc/X11/prefdm -nodaemon 。也就是说,一旦退出该程序,init 立马会重新执行 prefdm ,所以你才能在“注销”后又再次看

到“图形登录界面”。所以记得要重启哦

3、重启,现在你看到的就是 XDM 的登录界面了,一个黑黑的屏幕,中间是灰色的窗口,和 Solaris

或者 AIX 的 CDE 界面很象,但和 GDM/KDM 不同的是,它不允许你选择语言

4、同样道理,你可以修改 DISPLAYMANAGER="KDE",则默认启动 KDM

5、经过测试发现,DESKTOP 和 DISPLAYMANAGER 可以不同,因为两者并不是必须对应的。

在上面的例子中,登录窗口是 XDM ,但进入后是 GNOME 的环境。同样你可以定义登录

界面为 GNOME (DISPLAYMANAGER=‘GNOME"),但桌面环境为 KDE(DESKTOP="KDE")。

是不是很有趣呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要关闭Linux的图形界面,可以按照以下步骤操作: 1. 打开终端窗口(快捷键为Ctrl+Alt+T)。 2. 输入命令sudo systemctl set-default multi-user.target并按下回车键。 3. 输入管理员密码并按下回车键。 4. 重启计算机,此时系统将进入文本模式,不再启动图形界面。 如果需要重新启用图形界面,可以输入命令sudo systemctl set-default graphical.target并重启计算机。 ### 回答2: 要关闭Linux系统的图形界面,可以采取以下几种方式: 1. 使用终端命令关闭图形界面:打开终端,并输入命令"sudo systemctl isolate multi-user.target",然后按下回车键,系统将会从图形界面切换到文本界面。 2. 使用快捷键组合关闭图形界面:在键盘上同时按下"Ctrl + Alt + F1",系统将会切换到文本界面。要返回到图形界面,可以按下"Ctrl + Alt + F7"。 3. 修改默认运行级别:打开终端并输入命令"sudo systemctl set-default multi-user.target",然后按下回车键,系统会将默认运行级别设置为无图形界面模式。重启计算机后,系统将直接进入文本界面。 4. 停止图形界面的显示管理器:打开终端,并输入命令"sudo systemctl stop gdm",然后按下回车键,系统将会停止显示管理器,图形界面将会关闭。 总之,关闭Linux系统的图形界面可以通过命令行和快捷键等方式来实现,具体方法可以根据个人需要和使用的Linux发行版来选择。 ### 回答3: 在Linux系统中,关闭图形界面有多种不同的方法可以选择。以下是一些常用的方法: 1. 使用命令行工具:在终端中输入以下命令可以关闭当前图形界面并返回到命令行界面: ``` sudo service gdm stop ``` 2. 使用系统管理工具:某些Linux发行版提供了图形化的系统管理工具,可以帮助用户方便地开关图形界面。可以通过菜单或命令行方式打开系统管理工具,找到并关闭图形界面。 3. 修改运行级别:在Linux系统中,运行级别决定了是否启动图形界面。可以修改运行级别来关闭图形界面。一般来说,运行级别3是命令行模式,运行级别5是图形模式。通过修改配置文件/etc/inittab中的默认运行级别,并重启系统,可以变更默认启动模式。 4. 修改登录管理器设置:登录管理器是启动图形界面的服务,可以通过修改登录管理器配置文件来关闭图形界面。根据不同的发行版和登录管理器,配置文件的位置可能有所不同。常见的登录管理器如GDM、LightDM、KDM等。 需要注意的是,关闭图形界面将使系统变为纯命令行模式,这可能对一些用户造成不便。确保自己已经保存并关闭了所有需要的图形界面应用程序,同时也要确保有足够的命令行技能和知识,以便在命令行下完成所需的任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值