亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

X系統和X啟動流程

系統 2268 0

Linux 圖形界面又稱 X 系統,其主要包含如下幾個部分:

a XServer

b) 顯示管理器 (Display Manager) 例如( gdm ?kdm xdm 等)

c) 窗口管理器 ( Window Manager) 例如(mutter, metacity ,fluxbox 等)

d)DM WM 之上的一些圖形應用程序?

?

在使用中一般都是 b,c,d 三者集合起來構成一個完整的集成工作環境,例如 KDE ,GNOME , 這就是我們平時所說的廣義上的 XClient

?

Metacit y 曾經是GNOME桌面環境下默認的復合窗口管理器。 在GNOME 2.2正式引進Metacity之前,GNOME陸續使用了Enlightenment和Sawfish作為它的窗口管理器。雖然Metacity是GNOME工程的一部分來并且被設計為集成進GNOME桌面,但它并不需要GNOME才能運行。同樣GNOME也可以使用各種不同的窗口管理器,只要它們支持ICCCM規范。 Me tacity由GTK+實現,這使得它可以主題化并與其他G TK+應用程序相融合

2011年,Gnome 3 發布,Metacity被mutter代替。 Mutter ?是Gnome 3的窗口管理器,用來取代原本的Metacity,Gnome Shell實際上是Mutter的一個插件,Mutter是Metacity Clutter的縮寫。它使用了Clutter這個圖形庫,支持OpenGL。

?

1. 顯示管理器(DM):

startx 的作用可以看作是 Display Manager 的一種隱性實現。它使用 xinit 命令,分別根據 /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc 中所指定的設置喚起 X。 其中, xserverrc 執行 X server 的運行任務; xinitrc 則運行 Xsession 命令。從 /etc/X11/Xsession 腳本的內容可以看出,它也就是進入 /etc /X11/Xsession.d/ 目錄輪詢地執行所有腳本。很明顯,這些就是 session 初始化工作。因此, Display Manager 完成三個任務: 1, X Server 的啟動 ; 2, X session 的初始化 ; 3, X session 的管理。

?XDM、GDM、KDM是三種X Window的顯示管理器,其功能相當于文本模式下的init、getty和login;當用戶輸入的正確的用戶名和口令后將開啟一個會話

    (1)XDM(默認的X Window System Display Manager)
    
(2)GDM(gnome提供的Display Manager)
(3)KDM(KDE提供的Display Manager)

2.窗口管理器(WM):它是負責管理窗口的移動、最大化、最小化、改變大小以及關閉等工作

X Server 提供了基本的圖形顯示能力。然而具體怎么繪制應用程序的界面,卻是要有應用程序自己解決的。而 Window Manager(窗口 管理器,后簡稱 WM) 就是用來提供統一的 GUI 組件的 ( 窗口、外框、菜單、按鈕等 ) 。否則,應用程序們各自為政,既增加了程序開發的負擔,不統一的桌面風格對視覺也是不小的挑戰。

WM 的啟動由 DM 控制,在 gdm 的登錄窗口,我們可以進行選擇。常見的 WM :Mutter, Metacity , fluxbox, fvwm, E17

?

    常見的窗口管理器 
    
1)twm(X.org提供的簡單的窗口管理器)
2)gnome-wm(gnome提供的窗口管理器)
3)kwin(KDE使用的窗口管理器)
4)FVWM(一款知名的窗口管理器)

3.Gnome/KDE: GNOME、KDE是桌面系統,是集成了窗口管理器,顯示管理器及一些應用程序的套件

4.? X Clients

?? ? X Client ,? X 客戶端程序,顧名思義,就是使用 X 服務的程序。 firefox gedit 等等都屬于 X Client 程序。

? ? X Client 部分值得考慮一下的就是 DISPLAY 環境變量。它主要用于遠程 X Client 的使用。該變量表示輸出目的地的位置,由三個要素組成:

?? ? [host]:display[.screen]

?? ? host 指網絡上遠程主機的名稱,可以是主機名、 IP 地址等。默認的 host 是本地系統,你可以在自己系統上 echo $DISPLAY 看一下。

?? ? display screen 分別代表輸出畫面的編號和屏幕的編號。具體細節由于硬件的缺乏,還有待進一步研究。

startx 啟動過程分析

參考 :? http://blog.csdn.net/clozxy/article/details/5488699

xserver x client 的啟動過程的探討主要是對 startx 命令的探討

startx 腳本網上解釋的很多,這里就不多做介紹,對 startx 介紹分以下兩個部分

(1)xinit 用法

startx 其實是個腳本,最終調用的是 xinit 命令,其用法如下:

xinit 的用法為: xinit [[client] options ] [-- [server] [display] options] 。其中 client 用于指定一個基于 X 的應用程序, client 后面的 options 是傳給這個應用程序的參數, server 是用于指定啟動哪個 X 服務器,一般為 /usr/bin/X /usr/bin/Xorg display 用于指定 display number ,一般 為 0 ,表示第一個 display option 為傳給 server 的參數。


如果不指定 client xinit 會查找 HOME ( 環境變量 ) 目錄下的 .xinitrc 文件,如果存在這個 文件, xinit 直接調用 execvp 函數執行該文件。如果這個文件不存在,那么 client 及其 options 為: ? xterm -geometry +1+1 -n login -display :0


如果不指定 server xinit 會查找 HOME( 環境變量 ) 目錄下的 .xserverrc 文件,如果存在這個文件, xinit 直接調用 execvp 函數執行該文件。如果這個文件 不存在,那么 server 及其 display 為: ? X :0 。如果系統目錄中不存在 X 命令,那么我們需要在系統目錄下建立一個名為 X 的鏈接,使其指向真正的 X server 命令( Ubuntu 下為 Xorg )。


因此 startx 的用法跟 xinit 一樣: startx [ [ client ] options ... ] [ -- [ server ] options ... ]


(2)startx 的幾種啟動方式

由對 startx 腳本的分析,我們可以知道 startx 主要有三種啟動方式:

a) 、一種是自己指定要啟動的 client server , 例如: startx /usr/bin/xclock -- /usr/bin/X :0

b )、一種是通過在 $HOME 下新建 .xinitrc 文件來指定要啟動的多個 client .xserverrc 來指定要啟動的 server

c )、還有一種是直接輸入 startx 而不指定參數,這也就是我們啟動 gnome 桌面的方法。


c 這種啟動方法中 , startx 腳本會先去看系統目錄( /etc/X11/xinit/ )下的 rc 文件是否存在,如果不存在就會用默認的 xterm /usr/bin/X 來啟動 xinit 。顯然, startx 啟動的不是 xterm ,而是 gnome 桌面,因此 gnome 的啟動是通過系統文件 /etc/X11/xinit/xinitrc 來指定的。

/etc/X11/xinit/xinitrc 文件的內容如下所示:

#!/bin/bash # 注意 : 該腳本用的是 bash shell 解析的

# $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $

# /etc/X11/xinit/xinitrc

#

# global xinitrc file, used by all X sessions started by xinit (startx)

# invoke global X session script

. /etc/X11/Xsession ? # 在當前這個 shell 環境中執行 Xsession 腳本

因此, gnome 的啟動應該在 Xsession 里。

X Server 的啟動則是通過系統文件 /etc/X11/xinit/xserverrc 來指定的 , 這個文件的內容為 :

#!/bin/sh # 注意:該腳本用的是 Bourne shell 解析的

# $Id: xserverrc 189 2005-06-11 00:04:27Z branden $

exec /usr/bin/X11/X -nolisten tcp

綜上所述, startx 的默認啟動過程為: startx 調用并將系統文件 /etc/X11/xinit/xinitrc /etc/X11/xinit/xserverrc 作為參數傳給 xinit xinit 就會先執行系統文件 /etc/X11/xinit/xserverrc 以啟動 X Server ,然后執行 /etc/X11/xinit/xinitrc ,而 xinitrc 則會執行腳本 /etc/X11/Xsession ,而 Xsession 則會按順序調用執行 /etc/X11/Xsession.d 目錄下的文件,從而最終調用了 gnome-session 這個用于 啟動 GNOME 桌面環境的程序

?

?

?

X系統和X啟動流程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩一区二区视频免费看 | 特黄aa级毛片免费视频播放 | 欧美性天天影院 | 中国妞xxx的视频 | 中文字幕亚洲一区二区v@在线 | 婷婷在线网 | 伊人五月天综合 | 人人夜| 成人网在线观看 | 一区二区三区欧美视频 | 亚洲在线一区二区 | 国内精品免费视频 | 天堂精品高清1区2区3区 | 日本黄页在线观看 | 欧美精品亚洲 | 狠狠色丁香久久婷婷综 | 欧美麻豆久久久久久中文 | 色综合久久天天影视网 | 亚洲国产成人久久笫一页 | 色综合天天综合网国产人 | 手机看片福利在线 | 亚洲不卡在线视频 | 欧美老司机 | 成人一级片在线观看 | 色综合一本到久久亚洲91 | 国产成人久久精品二区三区 | 亚洲成年人在线观看 | 午夜aaaaaaaaa视频在线 | 久久是免费只精品热在线 | 九九影院 影片 | 在线看片亚洲 | 欧美日韩亚洲无线码在线观看 | 国内精品久久久久影院老司 | ww亚洲ww在线观看国产 | 久久久久国产午夜 | 国产日韩精品欧美一区色 | 国产福利午夜自产拍视频在线 | 欧美18videosex灌满 | 成人精品福利 | 国产永久免费爽视频在线 | 国产欧美综合一区二区 |