linux圖形界面基本知識(X、X11、Xfree86、Xorg、GNOME、KDE之間的關系)

LINUX初學者經常分不清楚linux和X之間,X和Xfree86之間,X和KDE,GNOME等之間是什么關系。常常混淆概念,本文以比較易于理解的方式來解釋X,X11,XFREE,WM,KDE,GNOME等之間的關系。

安裝圖像界面方法

1、首先安裝X(X Window System),命令為
yum groupinstall "X Window System" 回車(注意有引號)

2、由于這個軟件組比較大,安裝過程會比較慢,安裝完成會出現complete!

3、檢查一下我們已經安裝的軟件以及可以安裝的軟件,用命令
yum grouplist  //回車查看已經安裝的軟件和可以安裝的軟件
屏幕顯示的 Installed Environment Groups //代表是已經安裝過的
屏幕顯示的 AVailable Environment Groups //代表是可以安裝的

4、然后安裝我們需要的圖形界面軟件,GNOME(GNOME Desktop)
yum groupinstall "GNOME Desktop" //回車執行安裝

這里需要特別注意!!!!

一定要注意 名稱必須對應 不同版本的centOS的軟件名可能不同 其他Linux系統類似

否則會出現No packages in any requested group available to install or update 的錯誤。
5、同樣的。

由于這個軟件組比第一個要大很多(包含700個左右的軟件),安裝過程會很慢,請耐心等待。安裝完成會出現complete!

6、安裝完成后我們可以通過命令 startx 進入圖形界面,第一次進入會比較慢,請耐心等待。(可能需要重啟,命令為reboot)

如果啟動正常的話,到這里就可以不用繼續向下看了,如果出現問題,那么請繼續看。

 7、如果安裝完成后,虛擬機無法打開,我們需要調整虛擬機分配內存大小(注意不是磁盤大小),原來,小編的原來是800M現在分配了1600M。(1024M基本夠用)
8、如果安裝完成后,虛擬機報錯0x0000005c,請點擊虛擬機硬件設置 關閉虛擬機的3D加速功能(取消勾選)

安裝與卸載桌面環境

yum安裝圖形界面:

1) yum groupinstall "X Window System"

大概要下載158個包,時間大概10分鐘左右。安裝后,

輸入 yum grouplist 你會看到多了三個組,如下圖

2) 安裝GNOME桌面環境  yum groupinstall "GNOME Desktop Environment"
   安裝KDE  桌面環境  yum groupinstall "KDE (K Desktop Environment)"

大概要下載196個包,時間大概10分鐘左右。安裝后,

輸入 yum grouplist 你會看到多了三個組,
  1. 圖形界面想要卸載:
    yum groupremove "GNOME Desktop Environment"
    yum groupremove "X Window System"

進入圖形界面和卸載

啟動linux在終端下輸入:
startx   即可進入X11的圖形操作界面。 
如果希望每次都自動進入xwindos。。修改inittab文件。 vi /etc/inittab 找到id:3:initdefault:這行按i進入編輯模式,將3改為5。按esc退出編輯。輸入 :qw ---輸入包括“:”   如果希望每次都自動進入多用戶模式
改為:
id:3:initdefault:   有下幾種模式: #   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode   //單用戶模式
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking) //多用戶模式,沒有網絡文件系統
#   3 - Full multiuser mode /完全多用戶模式
#   4 - unused
#   5 - X11        //窗口模式
#   6 - reboot (Do NOT set initdefault to this)   

一、linux本身沒有圖形界面,linux現在的圖形界面的實現只是linux下的應用程序實現的。

圖形界面并不是linux的一部分,linux只是一個基于命令行的操作系統,linux和Xfree的關系就相當于當年的DOS和 WINDOWS3.0一樣,windows3.0不是獨立的操作系統,它只是DOS的擴充,是DOS下的應用程序級別的系統,不是獨立的操作系統,同樣 XFree只是linux下的一個應用程序而已。不是系統的一部分,但是X的存在可以方便用戶使用電腦。WINDOWS95及以后的版本就不一樣了,他們 的圖形界面是操作系統的一部分,圖形界面在系統內核中就實現了,沒有了圖形界面windows就不成為windows了,但linux卻不一樣,沒有圖形 界面linux還是linux,很多裝linux的WEB服務器就根本不裝X服務器.這也WINDOWS和linux的重要區別之一。

二、X是協議,不是具體的某個軟件。

X 是協議,就像HTTP協議,IP協議一樣.這個概念很多初學者甚至學習LINUX有一定時間的人都混淆,一個基于X的應用程序需要運行并顯示內容時他就聯 接到X服務器,開始用X協議和服務器交談。比如一個X應用程序要在屏幕上輸出一個圓那么他就用X協議對X服務器說:喂!我需要在屏幕上畫一個圓.X應用程 序只負責告訴X服務器在屏幕的什么地方用什么顏色畫一個多大的圓,而具體的"畫"的動作,比如這個圓如何生成,用什么顯卡的驅動程序去指揮顯卡完成等等工 作是由X服務器來完成的。X服務器還負責捕捉鍵盤和鼠標的動作,假設X服務器捕捉到鼠標的左鍵被按下了,他就告訴X應用程序:親愛的應用程序先生,我發現 鼠標被按下了,您有什么指示嗎?如果X應用程序被設計成當按下鼠標左健后再在屏幕上畫一個正方形的話,X應用程序就對X服務器說:請再畫一個正方形,當然 他會告訴服務器在什么地方用什么顏色畫多大的正方形,但不關心具體怎么畫--那是服務器的事情。

那么協議是需要具體的軟件來實現的,這就是下面我要講的:

三、X和XFree86的關系.

有 了協議就需要具體的軟件來實現這個協議.就好比我們有了交通法規就需要交警去根據法規維護交通秩序一樣.Xfree86就是這樣一個去根據法規實現協議的 "交警".他按照X協議的規定來完成X應用程序提交的在屏幕上顯示的任務.當然不僅僅是某個特定的交警才可以去維護和實現這個法規,比如還可以由交通協管 員來實現交通法規,必要的時候警察也可以介入,當然前提是他們都要懂得交通法規,也就是要懂得協議.所以實現X協議的軟件也并不只有 XFree86,XFree86只是實現X協議的一個免費X服務器軟件.商業上常用MOTIF,現在還有XORG,還有很多很小的由愛好者寫的小的X服務 器軟件.甚至可以在WINDOWS上有X服務器運行,這樣你可以在linux系統上運行一個X應用程序然后在另一臺windows系統上顯示.多么神奇. 你可以用google找到這樣的X服務器軟件.只不過在LINUX上最常用的是XFree86.(現在的linux發行版都用Xorg了)順便說一句,蘋 果電腦的圖形界面用的也是X協議,而且被認為是做的最好的X協議圖形界面,并且他對X協議的實施是做在系統內核里的,所以性能明顯好很多,這就是為什么很 多大型三維圖形設計軟件都是在蘋果平臺上的原因.

為了便于理解拿HTTP協議來比較:

協議是HTTP (hyper text transmission protocol)
實現這個協議的常用服務器有:apache IIS 等
請求這些服務器傳輸文件的客戶有:IE ,MOZILLA ,NETSCAPE等.

協議是X

實現這個協議的常用服務器有Xfree86 ,Xorg ,Xnest等

請求這些服務器來完成顯示任務的客戶:所有的X應用程序.

只 不過HTTP協議的服務器和客戶端通常都在兩臺不同的電腦(服務器和客戶機)之間來實現,所以一般人對這個比較容易理解.而X協議的服務器和客戶端程序通 常在同一臺電腦上,因此很多用戶都感到對此很難理解.既然是協議,那么肯定和平臺無關的,因此可以讓X應用程序顯示在任何裝有X服務器的遠程計算機上.甚 至顯示在裝有Xnest服務器的windows系統上.只不過在大多數情況下,X應用程序都用本機的X服務器,然后X服務器將顯示結果輸出到本機的顯示 器.這也是很多人不理解X是一種協議的原因.

四、X和X11R6又是什么關系?

不知道初學者有沒有注意到/usr/X11R6這個目錄,這是XFree的默認安裝目錄
X11R6 實際上是 X Protocol version 11 Release 6
(X協議第11版第六次發行)的意思,就是說目前用的X協議是第11版的,然后經過了6次小的修正.不同版本的X協議是不能通信的.就象我們現在IPV4和IPV6不能通信一樣,不過不用擔心,現在的X服務器軟件和X應用程序都遵循X11R6.

另外XFree86 3.3.6 XFree86 4.3.6 等這些版本是實現X協議的軟件XFree86的版本號.這是初學者經常高混淆的概念.

協議版本和實現協議的軟件的版本--這兩個概念的區別你分清楚了嗎?

五、X服務器和WM(window manager 窗口管理器)之間是什么關系.

平時大家起動圖形界面是怎么啟動的呢?
如果你是一開己就進入圖形界面那就太遺憾了.應為你錯過了了解X服務器起動過程的好時機.不過沒關系.你打開一個XTERM輸入:

init 3

就可以安全的回到字符界面.

好了,等做完以下實驗你就完全明白X和WM(window manager 窗口管理器)之間是什么關系了.

先輸入以下命令:

startx

起動圖形界面,你看到的是一個和平時使用一樣的完整的圖形界面操作環境.
你可以最大化,最小化,移動,關閉窗口等.

按ctrl+alt+backspace反回字符界面.

輸入:

xinit

再次啟動圖形界面,你看到了什么,你看到一個XTERM.而且不能移動.但是你可以在這個XTERM中輸入命令打開X應用程序,如果我輸入:

mozilla

打開瀏覽器,你看到的瀏覽器和平時有什么不同嗎?他在屏幕中間,不能移動,不能最小化,不能最大化,沒有邊框.

為什么同樣一個X應用程序會有這樣的不同呢?因為我們用startx起動圖形界面的時候同時也啟動了一個WM(即窗口管理器),如果你用KDE就起動了KDE,如果你用GNOME就起動了GNOME.但是你用xinit起動圖形界面的時候卻沒有起動WM.

現在你明白窗口管理器的作用了嗎?他的作用就是最大化,最小化,移動,關閉窗口等.而這些不是X服務器來負責完成的.

如果你用xinit起動圖形界面并在xterm中輸入twm,看看會有什么?
xterm被加上了一個邊框,你可以通過這個邊框移動,最大化,最小化這個xterm,twm就是XFree86中自帶的窗口管理器,是一個比較簡陋的最簡單的窗口管理器,但是他具有窗口管理器的全部特征.

如果你不輸入twm而輸入gnome-session就可以起動GNOME
或者輸入startkde起動KDE.

通過以上的實驗你就可以清楚的明白他們之間的關系.

六、關于KDE和GNOME

KDE 和GNOME是LINUX里最常用的圖形界面操作環境,他們不僅僅是一個窗口管理器那么簡單, KDE是K Desktop Environment 的縮寫.他不僅是一個窗口管理器,還有很多配套的應用軟件和方便使用的桌面環境,比如任務欄,開始菜單,桌面圖標等等.

GNOME是GNU Network Object Model Environment 的縮寫.和KDE一樣,也是一個功能強大的綜合環境.

另外在其它UNIX系統中,常常使用CDE作為這樣一個環境.

其它的小型窗口管理器有:
window maker,after step,blackbox,fvwm,fvwm2,等等都是常用的優秀窗口管理器.REDHAT9中有 window maker 但是默認不安裝,大家可以裝來試試.只要xinit再wmaker&就可以用windowmaker了.

七、linux圖形界面層次關系總結

linux本身-->X服務器<-[通過X協議交談]->窗口管理器(綜合桌面環境)-->X應用程序.

Xfree86服務器的實現包括兩個部分,一部分是和顯卡直接打交道的低層,一部分是和X應用程序打交道的上層。上層負責接收應用程序的請求和鼠標 鍵盤的動作。而和顯卡直接打交道的底層負責指揮顯卡生成圖形,其實就是顯卡驅動。上層接收到應用程序的請求后,將請求內容做適當處理,然后交給顯卡驅動來 指揮 顯卡完成畫圖的動作.另外,上層的捕捉鍵盤和鼠標動作的部分會向應用程序提供鼠標和鍵盤的狀態信息,應用程序接收到這些信息后決定是否再有相應的動作.

平時說的VESA,VGA ,fbdev等其實就是針對不同模式顯卡的驅動程序.
VESA(Video Electronics Standards Association)
VGA (Video Graphics Array)
fbdev (FrameBuffer Device)

都是不同的顯卡標準,不過這些標準都已經很老了.現在的顯卡都兼容這幾種模式.

framebuffer模式的顯卡本身不具有任何運算數據的能力,他好比是一個暫時存放水的水池.CPU將運算后的結果放到這個水池,水池再將結果 流到顯示器.中間不會對數據做處理.在這中情況下,所有顯示任務都有CPU完成,CPU負擔很重.從frambuffer這個名字我們就能猜測到他的功能 了(數據偵緩沖).

在linux內核中有有framebuffer機制,摹仿framebuffer顯卡的這種功能.他的好處是把顯卡的硬件結構抽象掉,把所有的顯卡都當做一個"水池"來用.應用程序也可以直接讀取這個水池的內容.framebuffer的設備名是 /dev/fb
可以用命令:

dd if=/dev/zero of=/dev/fb

清空屏幕.如果你的X用的是framebuffer的驅動,屏幕將全變黑.通過移動鼠標,切換窗口等動作可以讓原先的內容重新顯示.

如果你不用framebuffer驅動,可以在字符模式下做這個試驗.屏幕將全部被清空.
以下的命令:

dd if=/dev/fb of=fbfile

可以將fb中的內容保存下來,以后可以重新寫回屏幕:

dd if=fbfile of=/dev/fb

作用類似于屏幕截圖,但是截下的圖不能用普通圖片瀏覽器看.

現在知道linux中framebuffer設備的神奇了吧.
linux字符界面在高分辨率下,啟動時會有一個小企鵝logo,這個logo就是用framebuffer功能寫上屏幕的.

VESA和VGA比FB要好很多,但是他的顯示能力也很有限.CPU仍舊要處理大部分的顯示任務.

現在的顯卡就不一樣了,CPU幾乎不參數顯示任務,而專注于運算工作.我們平時在linux下裝顯卡驅動,其實就是替換掉XFree86中底層的那 一部分. 使他有更強的顯示能力.比如你的顯卡是nvidia的,XFree默認的驅動是"nv",他是一個nvidia顯卡的通用驅動,但是他不能發揮 nvidia顯卡的性能.這個"nv"驅動模塊可以在:

/usr/X11R6/lib/modules/drivers

目錄下找到,文件名是:nv_drv.o

這個目錄下還有很多顯卡驅動模塊.
apm_drv.o dummy_drv.o nsc_drv.o sis_drv.o
ark_drv.o fbdev_drv.o nv_drv.o tdfx_drv.o
ati_drv.o glint_drv.o r128_drv.o tga_drv.o
atimisc_drv.o i128_drv.o radeon_drv.o trident_drv.o
chips_drv.o i740_drv.o rendition_drv.o tseng_drv.o
cirrus_alpine.o i810_drv.o s3_drv.o vesa_drv.o
cirrus_drv.o linux s3virge_drv.o vga_drv.o
cirrus_laguna.o mga_drv.o savage_drv.o
cyrix_drv.o neomagic_drv.o siliconmotion_drv.o

fbdev vga evsa 等都在其中.

只要在XF86Conf文件中的Section module段中指定了什么驅動,X就用哪個驅動.
代碼:

Section "Module"
Load "dbe"
Load "extmod"
Load "fbdevhw" #這里用的是fbdev
Load "glx"
Load "record"
Load "freetype"
Load "type1"
Load "dri"
EndSection

這是XFree86 4.0以上版本的方法.即X主程序和驅動模塊是分開的.

主程序是/usr/X11R6/bin/XFree86 (即上層部分)
然后主程序啟動的時候根據配置文件決定用哪一個驅動.

但是,在XFree86以前的版本(3.3.6)中, X主程序和驅動模塊是合在一起的,因此,以前的Xfree86 3.3.6 有很多針對不同顯卡的版本.

另外其他的X服務器如KDrive 也是驅動也主程序整合的,因此同樣是KDrive X服務器會有 VESA ,SVGA ,和 fbdev的版本之分.因為這些都是輕量級的X服務器,為了簡化結構他做成這樣.

Xfree86 4 做成驅動和主程序分離的好處是用戶可以自己添加升級驅動.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Ubuntu的發音 Ubuntu,源于非洲祖魯人和科薩人的語言,發作 oo-boon-too 的音。了解發音是有意...
    螢火蟲de夢閱讀 99,529評論 9 467
  • (兩年前的文章)原作者沒有署名,在此標明轉載文章,源自QQ空間日志,侵刪 1:主板故障 2:顯卡故障 3:聲卡故障...
    aclihui閱讀 2,186評論 0 10
  • 1.描述計算機的組成及其功能 (一)計算機的組成 1.CPU 2.CPU風扇 3.BIOS 4.內存 5.硬盤 6...
    whamai閱讀 1,480評論 0 1
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數據庫組件 SD...
    陽明AGI閱讀 16,004評論 3 119
  • 姓名:楊誼 學號:16130120200 【嵌牛導讀】關于linux 上的圖形界面,初學者會有很多混淆,下面本文...
    luckyoungo_o閱讀 2,627評論 0 4