|
|
最近我在玩fvwm,所以想弄明白一下Xwindow的启动过程,请各位大侠指点。我用的是Debian,我从inittab开始,按着脚本一步一步看下去,xwindow的启动过程大致分下面几步(Desktop Environment勉强算是一步):
Display Manager->Xwindow Server->Window Manger->Desktop Environment
1、Display Manager
有一个文件是/etc/X11/default-display-manager,我的系统里,其内容就是一行:/usr/bin/X11/xdm,说明这个系统的默认Display Manager是xdm。这是一个二进制可执行文件,会在/etc/init.d/xdm脚本里调用。调用时,xdm会默认读取/usr/X11R6/lib/X11/xdm/xdm-config这个配置文件。
这个文件关键内容如下:
DisplayManager.servers: /usr/X11R6/lib/X11/xdm/Xservers
!里边的主要内容:":0 local /usr/X11R6/bin/X vt7 -dpi 100 -nolisten tcp"
!即指向默认X服务器二进制文件
DisplayManager*startup: /usr/X11R6/lib/X11/xdm/Xstartup
!用于启动Xserver
DisplayManager*reset: /usr/X11R6/lib/X11/xdm/Xreset
!用于reset Xserver
DisplayManager*resources: /usr/X11R6/lib/X11/xdm/Xresources
!用于描述xdm登陆框的格式
DisplayManager*session: /usr/X11R6/lib/X11/xdm/Xsession
!调用/etc/X11/Xsession
!这是一个全局的Xsession文件,被xdm和xinit(startx)使用,s它会按依次调用/etc/Xsession.d/目录下的脚本,类似于/etc/rcX.d/下的脚本执行顺序。上述工作完成后,控制权应该进入xfree86了
2、Xwindow Server
仔细看了看/etc/Xsession.d/下的文件,在50xfree86-common_determine-startup文件中找到关键内容,依次尝试执行/usr/bin/x-session-manager、/usr/bin/x-window-manager、/usr/bin/x-terminal-emulator。这三个文件都是符号链接,指向/etc/alternatives/下的同名文件,/etc/alternatives/下的文件其实也都是符号链接,分别指向具体的文件。我在debian中死活找不到switchdesk,看来手工修改一下这三个符号链接文件的指向就可以了。
在我的系统中,/usr/bin/x-session-manager不存在,/usr/bin/x-window-manager最终指向/usr/bin/fvwm2,哈哈,这就是我现在在用的Window Manager。
通过调用/usr/X11R6/bin/X(省略n个复杂步骤),执行/etc/Xsession.d/目录下的脚本,Xwindow Server也启动完毕了。
3、Window Manager
在我的系统上,即fvwm2,它会默认读取配置文件:~/.fvwm/fvwm2rc,启动完毕。
4、Desktop Environment
我的系统上没有它,一般为KDE或者GNOME,以后再研究。
请各位大侠批评指正!! |
|