2008年7月21日星期一

启动X Window系统

X服务器通过xdm启动后出现用户登录界面。如图7-3所示。用户从这个界面成功登录以后,xdm实际上就成功地启动了一个“用户会话”。这个会话是一个Shell脚本(Shell Script)。这个脚本终止时就会终止用户会话,同时xdm会结束X服务器,并使系统回到用户登录状态。


  在开始一个X会话之前,xdm会用超级用户(root)的许可权运行一个启动脚本以执行一些必需的初始化操作。随后,为了保证以当前用户的环境设置运行X Window,脚本文档/etc/X11/xdm/GiveConsole将把/dev/console的所有者从root改回到当前用户。

  同样,当会话结束时,xdm会首先以超级用户的许可权执行一个小脚本来清除由启动脚本创建的东西。然后由脚本/etc/X11/xdm/TakeConsole将/dev/console的拥有权改回超级用户。


图7-3 用户登录界面

  用户会话启动过程中,xdm启动一个子进程运行脚本/etc/X11/xdm/Xsessio并等待其退出。当这个子进程退出时,xdm就会运行退出脚本并回到登录屏幕。这个会话脚本是运行在当前用户许可权下的。

  /etc/X11/xdm/Xsession文档在运行时,脚本将stderr重定向到一个错误日志文档并继续执行。这个文档就是用户home目录下的.xession-errors文件。如果系统不能在用户的home目录下创建该文档或者该文档由于某种原因而导致系统无法对它进行写入操作,脚本就会试着使用/tmp/xses-$USER文档。$USER是用户的登录名。

  这个错误文档对于判断用户会话中的问题非常有用。所有应用程序(包括视窗管理器和视窗管理器启动的应用程序)产生的错误信息都会写入该档中。如果用户在登录进入系统后不能启动一个用户会话,他就可以使用“failsafe”的办法(参见上文)登录,然后检查这个文档中的出错信息。这些出错信息对于我们寻找问题所在很有帮助。

  启动用户会话成功后,标准的Xsession文档会将控制权传给一组Shell脚本中的某一个。具体使用哪个文档要根据用户具体情况决定。由于它是使用exec来调用这些文档的,因此一旦被调用程序运行,它就成为一个新的用户会话并替代Xsession进程。这些Shell脚本包括:

  $HOME/.xsession

  $HOME/.Xclients

  /etc/X11/xinit/Xclients

  从上面对系统Xsession文件的解释中你可能已经猜到用户可以创建自己的Shell脚本。这是一个非常强大的功能,允许每个用户决定每次从X登录进入系统后系统可以先自动进行哪些操作。在这个脚本中,用户可以启动多个应用程序、设置X Window主视窗(root window)的资源环境、设置系统环境变量、修改默认的键盘定义以及选择一个视窗管理器等。

  设置你个人的Xsession文档的最简单的方法是把系统的/etc/X11/xinit/Xclients文件复制到你的home目录下,并命名为.xsession或.Xclients(在下文中用用户的Xsession档表示)并根据需要进行修改。在这里,我们不打算解释/etc/X11/xinit/Xclients文件中的所有内容含义。我们只想解释那些可能用到的东西。

  一个很重要的要点就是装载X Window主视窗需要的资源。这通常由以下的命令实现:

  resources=$HOME/.Xresources

  if 〔 -f "$resources" 〕; then

  /usr/bin/X11/xrdb -load "$resources"

  fi

  另外一件用户常做的事是修改用户主视窗的背景图案。这可以用/usr/bin/X11/xsetroot命令实现:

  /usr/bin/X11/xsetroot -solid DarkSeaGreen4

  这个命令也可以用于设置主视窗的默认图标和图标的颜色。背景图案既可以用一个双色的格子图案也可以使用一个X点阵图。

  同样,/usr/bin/X11/xset命令可以用来设置喇叭的音量、击键、DPMS(节能)特性和鼠标的参数,还能设置自动重复和屏幕保护的参数。

  

没有评论: