zoukankan      html  css  js  c++  java
  • XWindow启动流程

    X Window系统架构

    一、基本概念:

    1、X Client:X客户端,运行在远端主机上

    • X Client最重要的工作就是处理来自 X Server 的动作,将该动作处理成为绘图数据, 再将这些绘图数据传回给 X Server。由亍 X Client 的目的在产生绘图的数据,因此也称呼 X Client为X Application (X 应用程序)。
    • 每个 X Client 并不知道其他 X Client 的存在, 如果有两个以上的 X client 同时存在,两者并不知道对方到底传了什举数据给 X Server , 因此 X Client 的绘图常常会互相重迭,这就需要Window Manager来处理重迭显示,等多个X Client相互协调的问题。

    2、X Server:X服务器,运行在用户端主机上

    X Server 的重点是管理客户端的硬件,包括接受键盘/鼠标等设备的输入信息, 幵将X Client的请求图形绘制到屏幕上 。

    3、Window Manager:窗口管理器

    特殊的X Client,提供许多的控制元素,包括任务栏、背景桌面的设定等等; 管理虚拟桌面 (virtual desktop); 提供窗口控制参数,这包括窗口的大小、窗口的重迭显示、窗口的移劢、窗口的最小化等等。例如,GNOME,KDE,XFCE等。

    4、Display Manager-显示管理器

    提供登录X Window系统的环境,让用户输入用户名/密码,加载用户选择的Window Manager以及语系等数据。例如,gdm

    二、命令行通过startx命令启动X Window

    启动X Window System 时,必须要先启动管理硬件和绘图的X Server ,然后才启动X Client 。
    通过在命令行界面输入 startx 来启动X窗口,也能够通过display manager (如果有runlevel 5) 提供的登录界面输入你的账号密码来登入来启动X。

    #startx //命令行界面启动X Window系统

    Linux是个多用户系统,每个用户启动X 时, X server 的分辨率、启动X client的相关软件及 Window Manager 的选择可能都不一样,
    startx 最重要的任务就是找出用户或者是系统默认的X server与X client的配置文件,而使用者也能够使用 startx 外接参数来取代配置文件的内容。

    # startx [X client 参数] -- [X server 参数]
    例子:以16位颜色深度启动X server
    # startx -- -depth 16

    startx 找出 X server / X client 的设定值而已!事实上启动X的是xinit这支程序, startx 仅是在帮忙找出设定值而已!
    startx 找到设定值的顺序基本上是这样的:

    X server 的参数方面:

    1. 使用startx后面接的参数
    2. 若无参数,则找寻用户主目录的文件~/.xserverrc
    3. 若无上述两者,则以 /etc/X11/xinit/xserverrc
    4. 若无上述三者,则单纯执行 /usr/bin/X (此即 X server 执行文件,X有时链接到Xorg)

    X client 的参数方面:

    1. 使用 startx 后面接的参数
    2. 若无参数,则找寻用户主目录的文件~/.xinitrc
    3. 若无上述两者,则以 /etc/X11/xinit/xinitrc
    4. 若无上述三者,则单纯执行 xterm (此为X客户端软件)

    当 startx 找到需要的设定值后,就调用xinit实际启动X。

    三、实际启动X Window系统的命令-xinit

    xinit的语法:
    # xinit [client option] -- [server or display option]

    若X server配置文件不存在,则直接执行/usr/bin/X,通过startx调用xinit的参数可能如下:
    #xinit /etc/X11/xinit/xinitrc -- /usr/bin/X

    若只是执行 xinit,系统的默认 X Client 和 X Server 的参数如下:
    #xinit xterm -geometry +1+1 -n login -display :0 -- X :0

    四、X Server的启动

    X Window最先需要启动的就是X Server。X server启动的预设脚本是主目录下的~/.xserverrc或/etc/X11/xinit/xserverrc,若都不存在,则直接执行/usr/bin/X启动X server。

    在启动X Server 时,Xorg 会去读取 /etc/X11/xorg.conf 这个配置文件。如果一切顺利,那么X就会顺利的在tty7 癿环境中吪劢了 X 。 单纯的X启动时,你只会看到画面一片漆黑,然后中心有个鼠标的光标。

    X 启动的时候可以指定启动的接口。 事实上,Linux 可以同时启动多个 X。第一个 X 的画面会在 :0 亦即是tty7,第二个 X 则是 :1,亦即是 tty8 。 后续还可以有其他的 X 存在的。因此,X client应用程序在加载时,必须要使用 -display 来说明这个X应用程序是需要在哪个 X加载(如上例中xterm的启动参数)。需要注意的是:X server未注明加载的接口时,默认是使用 :0,但是 X client 未注明时,则无法执行。

    五、X Cllient的启动

    假设你的主目彔没有 ~/.xinitrc ,则此时 X Client 会以 /etc/X11/xinit/xinitrc 来作为启动 X Client的预设脚本。

    xinitrc这个文件会将许多其他的文件参数引进来, 包括 /etc/X11/xinit/xinitrc-common、/etc/X11/xinit/Xclients,还有 /etc/sysconfig/desktop 。可以参考 xinitrc后去搜寻各个文件来了解彼此的关系。

    不过分析到最后,就是载入KDE 或者是 GNOME。它们通过两个指令来启动, 包括 startkde 或 gnome-session。KDE和GNOME是 CentOS 预设提供的两个主要的 Window Manager。可以通过修改 /etc/sysconfig/desktop 内的DESKTOP=GNOME 戒 DESKTOP=KDE 来决定默认使用哪个窗口管理器的。

    如果有特殊需求,可以自定义X client 的参数。这就得要修改用户主目彔下的 ~/.xinitrc 这个文件。要注意的是,如果你的 .xinitrc 配置文件里面启动的 x client很多的时候,千万注意将除了最后一个 window manager 或 X Client之外,都应该放到背景里面去执行,例如:
    xclock -geometry 100x100-5+5 &
    xterm -geometry 80x50-50+150 &
    exec /usr/bin/twm

    六、X启动的端口

    默认情况下,X server通过port 6000 来与 X client进行沟通。但由于系统上面可能有多个 X 存在,因此就会有 port 6001, port 6002... 等等。
    在 X Window System 的环境下,称 port 6000 为第 0 个显示接口,即 hostname:0 , 主机名通常可以省略,所以就成了 :0。其它显示接口依次类推,如下图。

    七、小结

    在文字界面下启动 X 时,直接使用 startx 来找到 X server 与 Xclient 的参数或配置文件, 然后再调用 xinit 来启动 X 窗口系统。xinit 先载入 X server 到预设的 :0这个显示接口 (默认在 tty7),然后再加载 X client 到这个 X 显示接口上。而 X client 通常就是GNOME 或 KDE ,具体用哪个窗口管理器是通过在 /etc/sysconfig/desktop 里面设置的。

    主要的命令和配置文件:
    /usr/bin/startx
    /usr/bin/xinit
    /usr/bin/X (或Xorg)
    /etc/X11/xinit/xserverrc
    /etc/X11/xinit/xinitrc
    /etc/X11/xorg.conf
    /etc/sysconfig/desktop
    ~/.xserverrc
    ~/.xinitrc 

    =-=-=-=-=
    Powered by Blogilo

  • 相关阅读:
    7.Perfect Number
    6.Hamming Distance
    5.Palindrome Number
    4.String to Integer (atoi)
    3.Reverse Integer
    [HP SIM] Systems Insight Manager stopped working, sqlserver error code 0x80090302。
    [HP SIM] Systems Insight Manager 不能正常工作,数据库错误0x80090302。
    [Outlook] 用powershell做outlook中的delegate.
    [Outlook] Use powershell to do delegates like outlook.
    [Outlook] profile在注册表里的秘密。
  • 原文地址:https://www.cnblogs.com/pandachen/p/4065464.html
Copyright © 2011-2022 走看看