X Windows練習

X Window其實是一種規(guī)范,它有很多不同的實現(xiàn),在Linux系統(tǒng)下最流行的是實現(xiàn)Xorg和XFree86固耘,微軟Windows系統(tǒng)下也有X Window的實現(xiàn),蘋果的Mac也是X Window的一種词身。要了解自己機器上運行的X Window究竟是哪一個厅目,可以使用查看進程的ps命令

ps –e |grep tty

Ubuntu 14.04使用的X Window是Xorg。如果使用ps -ef命令法严,還可以看到Xorg運行時的命令行參數(shù)损敷。
在桌面系統(tǒng)上,X Server和Client程序往往安裝在同一臺機器上深啤,日常使用基本感覺不到它是分層的拗馒。但是很顯然,X Server和Client也可以分別運行在不同的機器上溯街,在一臺機器上運行程序诱桂,而在另外一臺機器上顯示圖形界面洋丐。
在X Window中,Server偏偏是我面前的這臺Ubuntu挥等,X Server運行在Ubuntu上友绝。我可以在CentOS中運行GVim,但是窗口顯示在Ubuntu中肝劲,這時迁客,GVim是一個Client程序,它在遠程機器上運行涡相,而它的窗口顯示在本地哲泊。
理解display和虛擬控制臺
  很多介紹X Window的文章都是先讓系統(tǒng)進入字符界面剩蟀,然后手動啟動一個X Server催蝗。其實這完全沒有必要,因為在同一臺機器上完全可以運行多個X Server育特,只需要讓每個X Server的display不同即可丙号。那么display究竟是什么?
  在X Window中缰冤,可以通過hostname:display_number.screen_number來指定一個屏幕犬缨。可以這樣理解:一臺計算機可以有多個display棉浸,一個display可以有多個屏幕怀薛。所以,display相當于是計算機配備的一套輸入輸出設備迷郑,一般情況下枝恋,一臺電腦只配一套鍵盤鼠標和一個顯示器,特殊情況下嗡害,可以配多個顯示器焚碌。
  現(xiàn)在問題出來了,我的電腦只有一套鍵盤鼠標和一個顯示器霸妹,也就是只有一個display十电,那又怎么能運行多個X Server呢?那是因為在Linux中叹螟,還有虛擬控制臺這樣的高級特性鹃骂。只需要同時按下Ctrl+Alt+F1、Ctrl+Alt+F2罢绽、…畏线、Ctrl+Alt+F7,就可以在不同的虛擬控制臺中進行切換有缆。在Ubuntu 14.04中象踊,虛擬控制臺1到6運行的getty温亲,也就是字符界面,虛擬控制臺7運行的是Xorg杯矩。(Fedora/centos中不一樣栈虚,虛擬控制臺1運行的是圖形界面,其它的是字符界面史隆。display:1運行在tty7上)
  我們可以直接運行X Server程序來啟動X Server魂务。/usr/bin/X和Xorg都是X Server程序。其實/usr/bin/X是Xorg的符號鏈接泌射,用哪一個都是一樣的粘姜。
啟動X Server的時候可以指定display參數(shù),因為可以省略掉hostname和screen_number熔酷,所以可以用:0孤紧,:1這樣的格式來指定display。在我的機器上拒秘,本來就有一個X Server在運行号显,display :0已經(jīng)被占用了,所以我使用sudo X :1 -retro來在display :1上再運行一個X Server
  其中的-retro參數(shù)是為了讓X Server的背景顯示為斜紋躺酒,否則背景為純黑色押蚤,那就看不出來是否啟動了X Server。
  按Ctrl+Alt+F7回到display :0(ubuntu)羹应,再用ps命令看一下揽碘,會發(fā)現(xiàn)系統(tǒng)中有兩個Xorg在運行,一個運行在虛擬控制臺7园匹,一個運行在虛擬控制臺8雳刺。
在新啟動的X Server中運行一個GVim看看效果。運行GVim時,使用-display :1參數(shù)指定窗口顯示在新啟動的X Server上,使用-geometry參數(shù)指定窗口的大小和位置昼窗。然后按Ctrl+Alt+F8切換虛擬控制臺,看效果滞详。

gvim –display :1 –geometry 700X500+20+20

遠程連接X Server
如果能讓遠程機器上的GVim也把窗口顯示在本地機器的屏幕上,那就比較過癮了紊馏。所以料饥,使用ssh連接到CentOS-5.10,然后使用gvim -display Ubuntu-14:1命令朱监,希望將GVim顯示到Ubuntu的display :1上岸啡。由于是遠程連接,所以hostname不能省略赫编,需寫成ubuntu:1巡蘸,也可以使用IP地址奋隶,寫成192.168.1.103:1。

gvim –display ubuntu:1

很可惜悦荒,連接失敗唯欣。
  失敗的原因是遠程訪問X Server需要安全認證。這個可以理解搬味,就像登陸郵箱需要輸入用戶名和密碼一樣境氢,如果X Server不要認證就可以隨便連接的話,那豈不是桌面上垃圾窗口滿天飛碰纬?安全認證的方式有很多種萍聊,具體請參考man Xsecurity。安全認證可以使用xhost和xauth這兩個程序來進行悦析,具體使用方法參考它們的文檔寿桨。(同時注意防火墻#iptables –F清除所有規(guī)則)
先用xhost來授權(quán),這個比較簡單她按。為了運行xhost牛隅,需要在X Server上有一個終端,所以運行一個xterm

xterm –display :1

在xterm中輸入sodu xhost +192.168.1.109酌泰,這樣,CentOS-5.10中運行的GUI程序都可以連接到這個新開啟的X Server了匕累。(注每一個display的安全和環(huán)境都不一樣陵刹,哪一個display需遠程聯(lián)接,哪個就需要授一次權(quán))
在CentOS-5.10中運行GVim

gvim –display 192.168.1.103:1

新啟動的X Server界面比較丑陋欢嘿,我們還是想讓遠程機器上的GUI程序直接顯示在Ubuntu的桌面環(huán)境中衰琐。所以,指定display為:0
  結(jié)果很不幸炼蹦,無法打開display羡宙。連接不上,為什么呢掐隐?是安全認證的問題嗎狗热?不是,是lightdm的問題虑省,請繼續(xù)往下看匿刮。
理解lightdm和X Window桌面環(huán)境的啟動過程
  X Server的啟動方式有兩種,一種是通過顯示管理器啟動探颈,另一種是手動啟動熟丸。在前面的例子中,我通過直接運行/usr/bin/X :1來啟動了一個X Server伪节。直接啟動X Server的方法還有運行startx或者xinit光羞。手動啟動X Server的缺點就是啟動的X Server不好看绩鸣。而顯示管理器啟動的不僅有X Server,還有一大堆的Client程序纱兑,構(gòu)成了一個完整的桌面環(huán)境全闷,界面當然就漂亮多了。
顯示管理器(Display Manager)是什么呢萍启?前面我講到display就是一個電腦配備的一套鍵盤鼠標和顯示器总珠,那么顯示管理器就是這一套設備的管理器了。顯示管理器可以直接管理這些設備勘纯,所以它可以控制X Server的運行局服,由它來啟動X Server那是再合適不過了。系統(tǒng)啟動過程是這樣的:內(nèi)核加載–>init程序運行–>顯示管理器運行–>X Server運行–>顯示管理器連接到X Server驳遵,顯示登錄界面–>用戶登錄后淫奔,登錄界面關(guān)閉,加載桌面環(huán)境堤结。從上面的流程可以看出唆迁,顯示管理器是X Server的父進程,它負責啟動X Server竞穷,當X Server啟動后唐责,它又變成了X Server的一個Client程序,連接到X Server顯示歡迎界面和登錄界面瘾带,最后鼠哥,顯示管理器又是所有桌面環(huán)境的父進程,它負責啟動桌面環(huán)境需要的其它Client程序看政。

在Ubuntu 14.04中朴恳,使用lightdm取代了傳統(tǒng)的xdm、gdm等顯示管理器允蚣。簡單來說于颖,就是由lightdm負責啟動X Server和其它的X程序。不知道為什么嚷兔,lightdm在啟動X Server的時候森渐,給X Server加上了-nolisten tcp參數(shù),所以遠程計算機就沒有辦法連接到Ubuntu的桌面了谴垫。

在debian/kali linux的環(huán)境中edit /usr/share/gdm/gdm.schemas, setting the key security/DisallowTCP to false

打開新的使用X :1 –listen tcp 因為默認是不打開tcp端口的章母,只打開6000一個端口。

下一步的目標就是更改lightdm的配置翩剪,去掉這個-nolisten tcp參數(shù)乳怎。
在使用sudo dpkg -L lightdm查看該軟件包的文件時,發(fā)現(xiàn)它的log文件放在/var/log/lightdm文件夾下,過去看看:
  終于蚪缀,從log文件中看到了lightdm啟動的全過程秫逝。首先,看到它從哪幾個目錄加載配置文件询枚,接著违帆,看到它啟動X Server。從下圖光標所在的行可以看到X Server啟動的所有參數(shù)金蜀,包括-nolisten tcp選項刷后。
  繼續(xù)看log文件,下面光標所在的行顯示lightdm怎么啟動gnome-session:
  同時渊抄,我發(fā)現(xiàn)/etc/lightdm/目錄下沒有l(wèi)ightdm.conf文件尝胆,而/usr/share/doc/lightdm/目錄下有一個lightdm.conf.gz文件,把該文件當文檔看了一下护桦,發(fā)現(xiàn)里面果然就是lightdm的配置的解釋含衔。趕快將該文件復制到/etc/lightdm/目錄下并解壓,然后用Vim編輯/etc/lightdm/lightdm.conf文件二庵,將xserver-allow-tcp=false一行前面的注釋去掉贪染,并且改為xserver-allow-tcp=true。如下圖:
  最后催享,重啟系統(tǒng)杭隙。再用ps查看進程,發(fā)現(xiàn)-nolisten tcp選項已經(jīng)沒有了睡陪。
搞定xauth
  搞定了-nolisten tcp之后寺渗,要想從遠程計算接連接到Ubuntu桌面,還是需要安全認證兰迫。在前面的例子中,我使用了xhost炬称。xhost是最簡單的認證方式汁果。在這里我要試一下別的認證方式,比如MIT-MAGIC-COOKIE-1玲躯。如上圖据德,先使用xauth list命令查看一下當前的授權(quán)記錄,發(fā)現(xiàn)只有一條跷车,而且display是ubuntu-14/unix:0棘利,很顯然,這是一個本地授權(quán)朽缴,所以需要使用xauth add命令添加一個使用ip地址的授權(quán)善玫,后面的key照抄就行了。最后密强,使用xauth extract和xauth merge配合管道和ssh將該授權(quán)記錄合并到CentOS-5.10中茅郎。
  在CentOS-5.10中啟動GVim蜗元,指定display為192.168.1.103:0,GVim窗口就出現(xiàn)在了Ubuntu中系冗。
X Server的配置
  可以使用不同的方法對X Server進行配置奕扣,前面的例子是直接指定命令行參數(shù)。除了指定命令行參數(shù)掌敬,還可以使用環(huán)境變量和配置文件惯豆。X Server的配置文件為一般是/etc/X11/xorg.conf或/etc/X11/xorg.conf.d/目錄下的.conf文件,當然奔害,配置文件也可以放在其它的目錄中楷兽,具體信息,請參看man xorg.conf舀武。
  如果沒有配置文件拄养,X Server將在啟動的時候自動檢測硬件,然后生成一個內(nèi)置的配置银舱。Ubuntu系統(tǒng)就沒有配置文件瘪匿。不過沒關(guān)系,如果需要使用配置文件的時候寻馏,可以通過X Server的-configure參數(shù)生成一個配置文件棋弥,里面包含當前自動檢測出的配置。如果需要任何個性化的配置诚欠,對該文件進行修改即可顽染。
現(xiàn)有的圖形界面中可以運行嵌套的X Server
  我們上面運行的X Server都是直接占用了計算機的整個顯示器和鍵盤鼠標,事實上轰绵,在現(xiàn)有的圖形界面中粉寞,還可以以窗口模式運行另外一個X Server,稱為nested X Server左腔。最常用的nested X Server是Xephyr唧垦,在Ubuntu中可以通過如下命令安裝它:
sudo aptitude install xserver-xephyr (yum install Xephyr)
Xephyr的使用非常簡單,可以通過 man Xephyr 命令查看它的使用手冊液样。如果輸入 Xephyr :1 (display號不能和已用dsiplay號沖突)命令振亮,就可以在現(xiàn)有圖形界面中打開一個窗口模式的X Server
  以后再啟動GUI程序,就可以通過程序的-display選項讓程序運行在這個嵌套的X Server中鞭莽,如:#xterm –display :1 &
  怎么樣坊秸,是不是很好玩呢?除了好玩澎怒,還很有用褒搔,比如調(diào)試窗口管理器啊、連接遠程桌面啊什么的都用得著。當然站超,我這里只是簡單展示一下原來X Window還可以這么玩荸恕。
總結(jié):
  1.在一個Linux系統(tǒng)中存在多個虛擬控制臺,所以可以啟動多個X Server死相;
  2.啟動X Server的方式有兩種融求,一種是使用/usr/bin/X、startx算撮、xinit手動啟動生宛,一種是通過顯示管理器啟動;
  3.Ubuntu使用的顯示管理器是lightdm肮柜,這是一個比較新的陷舅、輕量級的顯示管理器,但是文檔不夠詳細审洞;
  4.遠程計算機連接本地的X Server莱睁,需要X Server開放TCP端口,還要搞定安全認證芒澜;
  5.X Server的配置仰剿,可以通過命令行參數(shù),可以通過環(huán)境變量痴晦,還可以通過配置文件南吮;
  6.可以在現(xiàn)有的圖形界面下以窗口模式運行嵌套的X Server,常用的軟件是Xephyr誊酌;
  7.我的《Linux入門學習教程:Linux系統(tǒng)折騰筆記》中介紹的方法不夠用部凑,還要加上兩條:①使用ps命令查看進程;②查看程序啟動的log文件碧浊。
https://blog.csdn.net/seaship/article/details/86233325

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涂邀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子箱锐,更是在濱河造成了極大的恐慌必孤,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瑞躺,死亡現(xiàn)場離奇詭異,居然都是意外死亡兴想,警方通過查閱死者的電腦和手機幢哨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫂便,“玉大人捞镰,你說我怎么就攤上這事。” “怎么了岸售?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵践樱,是天一觀的道長。 經(jīng)常有香客問我凸丸,道長拷邢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任屎慢,我火速辦了婚禮瞭稼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腻惠。我一直安慰自己环肘,他們只是感情好,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布集灌。 她就那樣靜靜地躺著悔雹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欣喧。 梳的紋絲不亂的頭發(fā)上腌零,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音续誉,去河邊找鬼莱没。 笑死,一個胖子當著我的面吹牛酷鸦,可吹牛的內(nèi)容都是我干的饰躲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼臼隔,長吁一口氣:“原來是場噩夢啊……” “哼嘹裂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起摔握,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤寄狼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后氨淌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泊愧,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年盛正,在試婚紗的時候發(fā)現(xiàn)自己被綠了删咱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡豪筝,死狀恐怖痰滋,靈堂內(nèi)的尸體忽然破棺而出摘能,到底是詐尸還是另有隱情,我是刑警寧澤敲街,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布团搞,位于F島的核電站,受9級特大地震影響多艇,放射性物質(zhì)發(fā)生泄漏逻恐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一墩蔓、第九天 我趴在偏房一處隱蔽的房頂上張望梢莽。 院中可真熱鬧,春花似錦奸披、人聲如沸昏名。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轻局。三九已至,卻和暖如春样刷,著一層夾襖步出監(jiān)牢的瞬間仑扑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工置鼻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镇饮,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓箕母,卻偏偏與公主長得像储藐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嘶是,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Ubuntu中LightDM是什么(轉(zhuǎn)) LightDM(Light Display Manager)是一個全新的...
    mypostwww閱讀 9,268評論 0 1
  • 本來打算寫一個archlinux的安裝記錄钙勃,先前在Virtualbox上測試了好長時間,真機安裝的時候卻發(fā)現(xiàn)完全不...
    mst7閱讀 7,139評論 1 15
  • 第一章 1.Linux是一套免費使用和自由傳播的類UNIX操作系統(tǒng)聂喇,它可以基于Intel x86系列處理器以及Cy...
    yansicing閱讀 5,356評論 0 9
  • 1.描述計算機的組成及其功能 (一)計算機的組成 1.CPU 2.CPU風扇 3.BIOS 4.內(nèi)存 5.硬盤 6...
    whamai閱讀 1,433評論 0 1
  • 第 2 章 SHELL 基礎(chǔ)知識2.1 shell腳本我們在上面簡單介紹了一下什么是shell腳本辖源,現(xiàn)在我們來進一...
    LiWei_9e4b閱讀 1,559評論 0 0