快速业务通道

xinit启动X Window System过程初探

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-02

启动X主要有两种方法:一是Display Manager,如XDM、GDM、KDM,此种方法通过图形界面登录;另一种是通过xinit,此种方法适用于字符界面登录.我们常用于登录X的startx命令也是通过传递参数给xinit来启动X的,也就是说,最终启动X的是xinit.startx只是一个bash脚本.下面主要分析xinit一下初始化X的过程:

  来看一看xinit命令的用法:

  xinit [[client] options ] [-- [server] [display] options]

  可以看出,xinit初始化X是通过两个层面来进行的,即X client程序和X server程序.上面[client]和[server]分别称为X client程序和X server程序.它们代表的是程序的具体路径,其以/或者./开头.

  默认情况下,当我们CLI下执行不带任何参数的xinit命令时,xinit会在目录下搜索.xinitrc文件当作X client来执行,也就是说,你可以在其中设置进入X时便运行的X client程序,具体的设置见后.根据$HOME/.xinitrc的有无,xinit会有不同的运行情况.

  1.若存在$HOME/.xinitrc,相当于执行:

  xinit $HOME/.xinitrc -- /usr/bin/X

  2.若不存在$HOME/.xinitrc,相当于执行:

  xinit xterm -- /usr/bin/X

  如果不存在$HOME/.xinitrc或是未正确设置$HOME/.xinitrc都不会进入Desktop Environment(桌面环境,如GNOME、KDE等),呈现在我们面前的只有一个xterm和"X"状的鼠标.那么怎样才能进入Desktop Environment呢?让我们来分析一下startx命令的运行情况吧. 通过分析startx命令文件的内容,得知startx主要是置X client和X server所在的位置,并处理相关参数,交给xinit处理.可以看出startx 设置X client的位置是先搜寻$HOME/.xinitrc,然后是/etc/X11/xinit/xinitrc;设置X server的位置是先搜寻$HOME/.xserverrc,然后是/etc/X11/xinit/xserverrc.

  即相当于运行了以下命令:

  xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc

  进一步分析:

  xinit /etc/X11/Xsession -- /usr/bin/X11/X -dpi 100

  Xsessin是一个重要的文件,为什么要怎么说呢?不管是通过Display Manager登录X,还是通过xinit(startx)登录X,它都会被执行.Xsession是一个全局文件.

  Xsession文件中以下内容:

  /usr/bin/x-session-manager/*启动Desktop Environment*/ 拥有帝国一切,皆有可能。欢迎访问phome.net

  /usr/bin/x-window-manager/*启动Window Manager*/

  /usr/bin/x-terminal-emulator/*启动Terminal*/

  这就是为什么我们可以用一个startx命令直接进入X的原因所在了.如果我们要进入GNOME我们只需要将/usr/bin/x-session-manager所链接的目标文件改为/usr/bin/gnome-session,然后把/usr/bin/x-window-manager所链接的目标文件改为/usr/bin/metacity,把/usr/bin/x-terminal-emulator所链接的目标文件改为/usr/bin/gnome-terminal就可以了.


弄清楚了以上的内容,我们就可以修改$HOME/.xinitrc,通过xinit来启动Desktop Environment了,下面以启动GNOME为例:

  在$HOME下创建.xinitrc文件,然后添加以下内容:

  gnome-session&

  metacity/*除了一个命令在前台运行以外,其他的都应运行在后台*/

  保存后,你就可以在终端通过执行xinit来启动GNOME了,是不是很酷呢?

  利用xinit启动X的时候应注意,如果第一个运行的X client结束,xinit将自动结束X,返回到CLI.下面以具体的例子来说明:

  当不存在$HOME/.xinitrc时,执行xinit metacity,将会出现一个可移动的xterm(无$HOME/.xinitrc,xinit默认启动xterm),当然也有一个X

  server.关闭xterm将退出X,xterm是第一个运行的X client.当存在$HOME/.xinitrc且包含如下内容:

  xeyes&

  metacity&

  xterm

  执行xinit将

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号