欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Linux折騰記(三):X Window的奧秘

Linux折騰記(三):X Window的奧秘

熱門標簽:商戶地圖標注 壽光百度地圖標注中心網站 新鄭電銷外呼系統線路 電話機器人哪里有賣的 怎樣給景區加百度地圖標注 河北語音電銷機器人 地球地圖標注方法 樺甸電銷機器人 河南智能電話機器人公司

  大名鼎鼎的X Window大家肯定不陌生。都知道它是Unix/Linux下面的窗口系統,也都知道它基于Server/Clinet架構。在網上隨便搜一搜,也可以找到不少X Window的介紹。有不少文章為了給用戶留一個直觀的印象,往往先讓系統進入純文本界面,然后使用startx來啟動圖形界面,或者直接使用X來啟動X Server,再然后運行一個xterm來做示范。我覺得以上這些文章對X Window的理解有限,不夠深入,而且也不夠新。所以,我這里寫一篇《X Window的奧秘》,以最新的Ubuntu-14.04 Desktop為例,展示如何學習X Window。

  先說一點題外話。在上一篇《打造屬于自己的Vim》發表后,評論中有人讓共享一下配置文件。當時我說:配置文件又不長,自己照著圖片敲一下代碼嘛。結果這個“照著圖片敲代碼”的事情我今天自己干了一遍,好在沒花多少時間,幾分鐘而已。原因是因為我今天折騰X Window的時候,把系統給掛掉了,然后重裝系統,然后,就只好再設置一遍Vim了。

了解自己機器上的X Window

  X Window其實是一種規范,它有很多不同的實現,在Linux系統下最流行的是實現Xorg和XFree86,微軟Windows系統下也有X Window的實現,蘋果的Mac也是X Window的一種。要了解自己機器上運行的X Window究竟是哪一個,可以使用查看進程的ps命令,如下圖:

  從上圖可以看出,Ubuntu 14.04使用的X Window是Xorg。如果使用ps -ef命令,還可以看到Xorg運行時的命令行參數。

  想了解X Window,下面這些文檔需要看一遍先:

  下面來說一下也許是眾所周知的基礎知識:X Window是一個分層的架構,它分為Serve和Client。X Server負責圖形界面的顯示,(也負責用戶的輸入),而Client程序需要連接到X Server,然后請求X Server繪制圖形界面,同時從X Server接受用戶的輸入。在桌面系統上,X Server和Client程序往往安裝在同一臺機器上,日常使用基本感覺不到它是分層的。但是很顯然,X Server和Client也可以分別運行在不同的機器上,在一臺機器上運行程序,而在另外一臺機器上顯示圖形界面。

  X Window中的Server和Client的概念和我們平時接觸到的“Server/Client”概念剛好相反。很多熟悉Internet原理的人,第一次接觸X Window的這兩個概念都會搞錯。比如,我在一臺本地機器上運行Ubuntu 14.04桌面版,而在另外一臺遠程機器上運行CentOS 5.10(純字符界面),當我用ssh從Ubuntu連接到CentOS的時候,Ubuntu是Client,而CentOS是Server。在X Window中,Server偏偏是我面前的這臺Ubuntu,X Server運行在Ubuntu上。我可以在CentOS中運行GVim,但是窗口顯示在Ubuntu中,這時,GVim是一個Client程序,它在遠程機器上運行,而它的窗口顯示在本地。

理解display和虛擬控制臺

  前面提到網上很多介紹X Window的文章都是先讓系統進入字符界面,然后手動啟動一個X Server。其實這完全沒有必要,因為在同一臺機器上完全可以運行多個X Server,只需要讓每個X Server的display不同即可。那么display究竟是什么?

  在X Window中,可以通過hostname:display_number.screen_number來指定一個屏幕。可以這樣理解:一臺計算機可以有多個display,一個display可以有多個屏幕。所以,display相當于是計算機配備的一套輸入輸出設備,一般情況下,一臺電腦只配一套鍵盤鼠標和一個顯示器,特殊情況下,可以配多個顯示器。

  現在問題出來了,我的電腦只有一套鍵盤鼠標和一個顯示器,也就是只有一個display,那又怎么能運行多個X Server呢?那是因為在Linux中,還有虛擬控制臺這樣的高級特性。只需要同時按下Ctrl+Alt+F1、Ctrl+Alt+F2、...、Ctrl+Alt+F7,就可以在不同的虛擬控制臺中進行切換。在Ubuntu 14.04中,虛擬控制臺1到6運行的getty,也就是字符界面,虛擬控制臺7運行的是Xorg。(Fedora中不一樣,虛擬控制臺1運行的是圖形界面,其它的是字符界面。)

  我們可以直接運行X Server程序來啟動X Server。/usr/bin/X和Xorg都是X Server程序。其實/usr/bin/X是Xorg的符號鏈接,用哪一個都是一樣的。

  啟動X Server的時候可以指定display參數,因為可以省略掉hostname和screen_number,所以可以用:0,:1這樣的格式來指定display。在我的機器上,本來就有一個X Server在運行,display :0已經被占用了,所以我使用sudo X :1 -retro來在display :1上再運行一個X Server,如下圖:

  其中的-retro參數是為了讓X Server的背景顯示為斜紋,否則背景為純黑色,那就看不出來是否啟動了X Server。啟動X Server后的效果如下圖:

  按Ctrl+Alt+F7回到display :0,再用ps命令看一下,會發現系統中有兩個Xorg在運行,一個運行在虛擬控制臺7,一個運行在虛擬控制臺8。如下圖:

  在新啟動的X Server中運行一個GVim看看效果。運行GVim時,使用-display :1參數指定窗口顯示在新啟動的X Server上,使用-geometry參數指定窗口的大小和位置。然后按Ctrl+Alt+F8切換虛擬控制臺,看效果。命令見上圖,程序運行效果見下圖:

遠程連接X Server

  如果能讓遠程機器上的GVim也把窗口顯示在本地機器的屏幕上,那就比較過癮了。所以,使用ssh連接到CentOS-5.10,然后使用gvim -display ubuntu-14:1命令,希望將GVim顯示到Ubuntu的display :1上。由于是遠程連接,所以hostname不能省略,需寫成ubuntu-14:1,也可以使用IP地址,寫成192.168.1.103:1。如下圖:

  很可惜,連接失敗。

  失敗的原因是遠程訪問X Server需要安全認證。這個可以理解,就像登陸郵箱需要輸入用戶名和密碼一樣,如果X Server不要認證就可以隨便連接的話,那豈不是桌面上垃圾窗口滿天飛?安全認證的方式有很多種,具體請參考man Xsecurity。安全認證可以使用xhost和xauth這兩個程序來進行,具體使用方法參考它們的文檔。

  先用xhost來授權,這個比較簡單。為了運行xhost,需要在X Server上有一個終端,所以運行一個xterm,如下圖:

  在xterm中輸入sodu xhost +192.168.1.109,這樣,CentOS-5.10中運行的GUI程序都可以連接到這個新開啟的X Server了。如下圖:

  在CentOS-5.10中運行GVim,如下圖:

  窗口顯示在Ubuntu中,如下圖:

  新啟動的X Server界面比較丑陋,我們還是想讓遠程機器上的GUI程序直接顯示在Ubuntu的桌面環境中。所以,指定display為:0,如下圖:

  結果很不幸,無法打開display。連接不上,為什么呢?是安全認證的問題嗎?不是,是lightdm的問題,請繼續往下看。

理解lightdm和X Window桌面環境的啟動過程

  X Server的啟動方式有兩種,一種是通過顯示管理器啟動,另一種是手動啟動。在前面的例子中,我通過直接運行/usr/bin/X :1來啟動了一個X Server。直接啟動X Server的方法還有運行startx或者xinit。手動啟動X Server的缺點就是啟動的X Server不好看。而顯示管理器啟動的不僅有X Server,還有一大堆的Client程序,構成了一個完整的桌面環境,界面當然就漂亮多了。

  顯示管理器(Display Manager)是什么呢?前面我講到display就是一個電腦配備的一套鍵盤鼠標和顯示器,那么顯示管理器就是這一套設備的管理器了。顯示管理器可以直接管理這些設備,所以它可以控制X Server的運行,由它來啟動X Server那是再合適不過了。系統啟動過程是這樣的:內核加載-->init程序運行-->顯示管理器運行-->X Server運行-->顯示管理器連接到X Server,顯示登錄界面-->用戶登錄后,登錄界面關閉,加載桌面環境。從上面的流程可以看出,顯示管理器是X Server的父進程,它負責啟動X Server,當X Server啟動后,它又變成了X Server的一個Client程序,連接到X Server顯示歡迎界面和登錄界面,最后,顯示管理器又是所有桌面環境的父進程,它負責啟動桌面環境需要的其它Client程序。

  在Ubuntu 14.04中,使用lightdm取代了傳統的xdm、gdm等顯示管理器。簡單來說,就是由lightdm負責啟動X Server和其它的X程序。不知道為什么,lightdm在啟動X Server的時候,給X Server加上了-nolisten tcp參數,所以遠程計算機就沒有辦法連接到Ubuntu的桌面了。(從第1張圖片可以看到該參數。)

  下一步的目標就是更改lightdm的配置,去掉這個-nolisten tcp參數。不過要達成這個目標還真是艱難啊,我的系統掛掉然后重裝就是在這里折騰出來的。在這里我要狠狠滴吐槽一下freedesktop.org,在X Window所用的軟件中,freedesktop.org貢獻很大,比如lightdm、xft、fontconfig、freetype都是這個組織貢獻的,可是,你就不能把文檔寫詳細點嗎?不僅是lightdm的文檔不行,xft、freetype的文檔也都不行。

  lightdm的man page非常簡略,使用sudo dpkg -L lightdm也找不出該軟件包中有價值的東西。沒辦法,另辟蹊徑吧。在使用sudo dpkg -L lightdm查看該軟件包的文件時,發現它的log文件放在/var/log/lightdm文件夾下,過去看看:

  終于,從log文件中看到了lightdm啟動的全過程。首先,看到它從哪幾個目錄加載配置文件,接著,看到它啟動X Server。從下圖光標所在的行可以看到X Server啟動的所有參數,包括-nolisten tcp選項。

  繼續看log文件,下面光標所在的行顯示lightdm怎么啟動gnome-session:

  同時,我發現/etc/lightdm/目錄下沒有lightdm.conf文件,而/usr/share/doc/lightdm/目錄下有一個lightdm.conf.gz文件,把該文件當文檔看了一下,發現里面果然就是lightdm的配置的解釋。趕快將該文件復制到/etc/lightdm/目錄下并解壓,如下圖:

  然后用Vim編輯/etc/lightdm/lightdm.conf文件,將xserver-allow-tcp=false一行前面的注釋去掉,并且改為xserver-allow-tcp=true。如下圖:

  最后,重啟系統。再用ps查看進程,發現-nolisten tcp選項已經沒有了。

搞定xauth

  搞定了-nolisten tcp之后,要想從遠程計算接連接到Ubuntu桌面,還是需要安全認證。在前面的例子中,我使用了xhost。xhost是最簡單的認證方式。在這里我要試一下別的認證方式,比如MIT-MAGIC-COOKIE-1。如上圖,先使用xauth list命令查看一下當前的授權記錄,發現只有一條,而且display是ubuntu-14/unix:0,很顯然,這是一個本地授權,所以需要使用xauth add命令添加一個使用ip地址的授權,后面的key照抄就行了。最后,使用xauth extract和xauth merge配合管道和ssh將該授權記錄合并到CentOS-5.10中。

  在CentOS-5.10中啟動GVim,指定display為192.168.1.103:0,GVim窗口就出現在了Ubuntu中。如下圖:

X Server的配置

  可以使用不同的方法對X Server進行配置,前面的例子是直接指定命令行參數。除了指定命令行參數,還可以使用環境變量和配置文件。X Server的配置文件為一般是/etc/X11/xorg.conf或/etc/X11/xorg.conf.d/目錄下的.conf文件,當然,配置文件也可以放在其它的目錄中,具體信息,請參看man xorg.conf。

  如果沒有配置文件,X Server將在啟動的時候自動檢測硬件,然后生成一個內置的配置。Ubuntu系統就沒有配置文件。不過沒關系,如果需要使用配置文件的時候,可以通過X Server的-configure參數生成一個配置文件,里面包含當前自動檢測出的配置。如果需要任何個性化的配置,對該文件進行修改即可。

現有的圖形界面中可以運行嵌套的X Server

  我們上面運行的X Server都是直接占用了計算機的整個顯示器和鍵盤鼠標,事實上,在現有的圖形界面中,還可以以窗口模式運行另外一個X Server,稱為nested X Server。最常用的nested X Server是Xephyr,在Ubuntu中可以通過如下命令安裝它:


復制代碼
代碼如下:

sudo aptitude install xserver-xephyr

  Xephyr的使用非常簡單,可以通過 man Xephyr 命令查看它的使用手冊。如果輸入 Xephyr :1 命令,就可以在現有圖形界面中打開一個窗口模式的X Server,如下圖:

  以后再啟動GUI程序,就可以通過程序的-display選項讓程序運行在這個嵌套的X Server中,如下圖:

  怎么樣,是不是很好玩呢?除了好玩,還很有用,比如調試窗口管理器啊、連接遠程桌面啊什么的都用得著。當然,我這里只是簡單展示一下原來X Window還可以這么玩。

總結:

  1.在一個Linux系統中存在多個虛擬控制臺,所以可以啟動多個X Server;

  2.啟動X Server的方式有兩種,一種是使用/usr/bin/X、startx、xinit手動啟動,一種是通過顯示管理器啟動;

  3.Ubuntu使用的顯示管理器是lightdm,這是一個比較新的、輕量級的顯示管理器,但是文檔不夠詳細;

  4.遠程計算機連接本地的X Server,需要X Server開放TCP端口,還要搞定安全認證;

  5.X Server的配置,可以通過命令行參數,可以通過環境變量,還可以通過配置文件;

  6.可以在現有的圖形界面下以窗口模式運行嵌套的X Server,常用的軟件是Xephyr;

  7.我的《玩轉Linux系統的方法論》中介紹的方法不夠用,還要加上兩條:①使用ps命令查看進程;②查看程序啟動的log文件。

標簽:淄博 楚雄 忻州 荊州 阜陽 來賓 迪慶 遼陽

巨人網絡通訊聲明:本文標題《Linux折騰記(三):X Window的奧秘》,本文關鍵詞  Linux,折騰,記,三,Window,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux折騰記(三):X Window的奧秘》相關的同類信息!
  • 本頁收集關于Linux折騰記(三):X Window的奧秘的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    成年人免费观看视频网站| 欧美日韩一区二区三区不卡| 欧美videofree性高清杂交| 亚洲亚洲人成综合网络| 91亚洲永久精品| 色呦呦网站一区| 国产精品国产自产拍高清av| 国产精品18久久久久久久久久久久 | 91视频在线网站| 欧美一区二区在线看| 亚洲图片欧美一区| 久久久久国产免费| 欧美性猛交xxxx乱大交退制版| 亚洲欧美一区二区不卡| 91丨porny丨在线| 在线中文字幕不卡| 一区二区三区四区蜜桃| 91麻豆swag| 欧美日韩精品一区二区| 亚洲成人av福利| 色婷婷精品久久二区二区密| 欧美一区二区三区在| 日韩激情在线观看| 丝袜美腿中文字幕| 久久综合久色欧美综合狠狠| 国内欧美视频一区二区 | 精品国产污网站| 久久超碰97中文字幕| 538精品视频| 国产精品全国免费观看高清| 成人黄色av电影| 色久综合一二码| 亚洲一区在线看| 中文字幕在线免费看线人| 日韩欧美电影一区| 激情综合色综合久久综合| 永久免费观看片现看| 国产精品初高中害羞小美女文| 9i看片成人免费高清| 欧美日韩高清一区二区| 午夜国产不卡在线观看视频| 玖玖爱在线观看| 国产喂奶挤奶一区二区三区| 不卡免费追剧大全电视剧网站| 欧美性三三影院| 日韩不卡在线观看日韩不卡视频| www.99热| 亚洲色欲色欲www在线观看| 免费看91视频| 精品国产乱码久久久久久免费 | 北条麻妃一区二区三区| 欧美三级日本三级少妇99| 日本欧美一区二区三区乱码| 激情无码人妻又粗又大| 亚洲精品美国一| 右手影院亚洲欧美| 国产精品免费免费| 黑森林av导航| 国产视频视频一区| 91蝌蚪国产九色| 久久亚洲一区二区三区四区| jlzzjlzz亚洲女人18| 日韩午夜电影av| 国产精品资源在线看| 欧美三级韩国三级日本三斤| 久久精品国产亚洲a| 91久久精品午夜一区二区| 日本不卡中文字幕| 色综合色狠狠天天综合色| 石原莉奈在线亚洲二区| 69夜色精品国产69乱| 日韩和欧美的一区| jizz亚洲少妇| 久久精品久久精品| 欧美日韩一区二区三区在线| 国产一区二区电影| 欧美高清一级片在线| 国产成人精品亚洲日本在线桃色| 欧美精品久久久久久久久老牛影院| 国产真实乱子伦精品视频| 欧美日韩激情一区二区三区| 国产一区在线视频| 91精品国产综合久久精品图片 | 国产麻豆精品在线观看| 欧美久久一二三四区| 国产91综合网| 日韩三级.com| 91丨porny丨九色| 欧美激情在线看| 在线观看国产网站| 亚洲精品欧美激情| 久久久久久久久久97| 日韩高清中文字幕一区| 91搞黄在线观看| 国产精品自拍一区| 精品久久久久久久久久久院品网| 黑人无套内谢中国美女| 国产精品欧美久久久久一区二区| a毛片毛片av永久免费| 亚洲国产日日夜夜| 一本久道久久综合中文字幕| 国产一区亚洲一区| 日韩午夜精品电影| 亚洲香蕉中文网| 亚洲精品中文字幕在线观看| 2014亚洲天堂| 激情五月婷婷综合| 日韩精品一区二区三区老鸭窝| 又大又长粗又爽又黄少妇视频| 亚洲欧洲三级电影| 韩国一级黄色录像| 国产在线国偷精品免费看| 日韩欧美激情一区| 中文字幕三级电影| 亚洲一区精品在线| 色婷婷激情综合| 粉嫩一区二区三区性色av| 国产日韩欧美精品一区| 国产亚洲精品熟女国产成人| 奇米影视一区二区三区| 欧美一二三区在线| 亚洲激情 欧美| 五月婷婷综合激情| 欧美日韩高清一区二区三区| 久草免费资源站| 亚洲影院理伦片| 欧洲av在线精品| 91在线视频免费观看| 自拍偷拍欧美精品| 一本色道久久综合亚洲精品按摩| 高清不卡一区二区| 中文字幕在线观看一区| 亚洲色婷婷一区二区三区| 成人激情免费视频| 一区视频在线播放| 日本精品视频一区二区三区| av色综合久久天堂av综合| 亚洲天堂免费在线观看视频| 色综合激情久久| 免费国偷自产拍精品视频| 亚洲影视资源网| 欧美一区二区三区不卡| 性欧美成人播放77777| 免费人成黄页网站在线一区二区| 欧美成人a在线| 极品尤物一区二区| 成人一区二区在线观看| 自拍偷在线精品自拍偷无码专区| 欧美亚洲日本一区| 91精品啪在线观看国产| 男男视频亚洲欧美| 26uuu国产一区二区三区| 91香蕉国产视频| 成人精品鲁一区一区二区| 一级精品视频在线观看宜春院| 欧美精品久久一区二区三区| 日韩人妻无码一区二区三区| 国模一区二区三区白浆| 国产精品国产三级国产a| 在线观看日韩一区| 午夜不卡久久精品无码免费| 蜜桃av一区二区在线观看| 久久精品无码一区二区三区| 国语对白在线播放| 日本50路肥熟bbw| 蜜桃在线一区二区三区| 国产视频亚洲色图| 欧美优质美女网站| theav精尽人亡av| 国产乱码精品一区二区三区av| 国产精品欧美一区喷水| 欧美日韩国产小视频在线观看| 一卡二卡三卡四卡| 国产成人精品一区二| 亚洲观看高清完整版在线观看| 精品国精品国产| 久久r这里只有精品| 欧美日韩人妻精品一区在线| 国产在线视频一区二区| 亚洲精品视频在线观看网站| 欧美电影免费观看高清完整版在| 国产精品成人69xxx免费视频| 女教师高潮黄又色视频| 久久精品国产亚洲aⅴ| 亚洲女厕所小便bbb| 日韩欧美成人午夜| www.av视频| 亚洲AV无码国产精品| av在线播放一区二区三区| 丝袜诱惑亚洲看片| 国产精品丝袜在线| 91精品国产欧美一区二区成人 | 国产精品你懂的在线欣赏| 884aa四虎影成人精品一区| 久久精品国产亚洲AV成人婷婷| 国产伦理在线观看| 国产成人精品综合在线观看 | 久99久精品视频免费观看| 亚洲男同性恋视频| 久久综合九色综合久久久精品综合 |