以前整理过有关Xwindow启动过程的资料,但是因为后来工作一直是配置服务器,所以很久没有用了。今天安装ubuntu6.06,一时心血来潮,查了有关x的启动过程,发现有些变化。顺便把几种不同系统下,加载X的过程整理下来。
首先是老版本的linux:
系统:redhat 7.0,7.2
Xserver:XFree86
1. 运行级别5下的启动过程。
首先运行/etc/X11/prefdm文件,这个文件会检查/etc/sysconfig/desktop文件内容。
如果文件内容为gnome,就运行gdm;如果是kde,就运行kdm;如果是其他显示管理器,就运行xdm。
2.startx的加载过程。
运行startx后,系统会转去/etc/X11/xinit/xinitrc或者~HOME/.xinitrc,这个文件是一个资源配置文件,包含了启动X所需要的资源文件路径。
再下来,转到/etc/xinit/xinitrc.d目录下,运行这下面的脚本文件。最常见的是xinput,这个文件也是检查/etc/sysconfig/desktop文件,加载特定的桌面,如果没有这个文件,或者文件为空,默认启动gnome。
系统还会检查/etc/X11/xinit/Xclients文件或者~HOME/.Xclients文件,如果这两个文件存在,就按这2个文件的配置走。
还需要注意的一点,/etc/X11下的文件是全局配置文件,~HOME/下的以.开头的是针对某个用户的特定配置文件,如果两个有冲突,以用户配置文件为准。
再来看看新版本的linux:
系统:ubuntu 6.06
Xserver:Xorg
1. 随系统启动的x过程。
和以前不同,以前的linux是在/etc/inittab里按启动级别加载x的,ubuntu在/etc/init.d里安装了一个脚本gdm,各个启动级别中,有对这个文件的S链接。
gdm脚本文件加载一些主题选项,启动/usr/olib/gdm/gdmgreeter,进行登陆验证。
认证完成后,启动默认的窗口管理器。
2. startx过程。
startx脚本启动了另外2个文件。/etc/X11/xinit/xserverrc和/etc/X11/xinit/xinitrc
etc/X11/xinit/xserverrc启动了X server,按着/etc/X11/Xorg.conf文件的配置。
etc/X11/xinit/xinitrc直接转到了/etc/X11/Xsession文件或者~HOME/.Xsession文件,然后顺序执行/etc/X11/Xsession.d文件中的每个脚本。
startx的过程中,没有密码验证。