启动流程

我们知道 init 是 linux 的根进程,是所有进程的父进程。同样, xinit 是所有 Xwindow 进程的根进程

Startx

startx 可以在命令行下启动图形界面。执行startx 命令时,实际执行这一命令:

  1. xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc

根据脚本 /etc/X11/xinit/xserverrc 启动 Xserver,同时根据脚本 /etc/X11/xinit/xinitrc 启动指定 Xclient 进程,例如窗口管理器

/etc/X11/xinit/xserverrc 以预设的参数运行程序 /usr/bin/X11/X

/etc/X11/xinit/xinitrc 脚本则指向 /etc/X11/Xsession ,依次启动 /etc/X11/Xsession.d 目录中的脚本

  • 您可以在用户配置文件 ~/.Xsession 中定义使用的 WM,它的优先级高于全局配置文件(对于 GDM会话 不起作用)
  • startx 启动时,并不会再进行身份认证。因为它启动的是 /etc/X11/Xsession.d/gnome-session ,而不是 GDM会话

GDM会话

许多 Linux 系统启动时自动进入图形界面,不需要运行 startx 命令

在某些启动级别中,包含了 gdm 的启动脚本,例如 : /etc/rc2.d/S13gdm

  1. 指向 /etc/gdm/gdm-cdd.conf 文件,加载预设视觉主题,启动 /usr/lib/gdm/gdmgreeter(登录屏幕)
  2. 用户身份认证完成后,启动 /etc/X11/default-display-manager 这个文件中设定的默认窗口管理器 /usr/sbin/gdm

gdm 在启动时,会要求用户名和密码,也就是我们看到的登录屏幕(gdmgreeter)

  • /usr/share/xsessions 目录下为所有可用登录会话的脚本