在 Unix Like 的系統當中,可以利用滑鼠與鍵盤來進行圖形化介面的操作,那就是 Graphical User Interface (簡稱 GUI)介面啦!而我們將這個圖形介面稱為 X Window System。 為什麼稱為 X 呢?因為就英文字母來看, X 是在 W(indow) 後面,因此, 早期人們就戲稱這一版的視窗介面為 X 囉!
事實上, X Window System 不是很容易理解,尤其是我們還沒有接觸到網路主機伺服器方面的介紹。 不過,無論如何,要對 X 有一些概念的話,還是得要介紹一下他的運作原理才行啊~傷腦筋~ 底下鳥哥將就 X Window 的相關知識作個簡單的介紹啊!
我是否需要啟用 X Window System
在開始之前,還是得就這個話題來說明說明。一般來說,如果您的 Linux 主機定位為 Network Servers 的話,那麼由於 Linux 裡面的主要的服務的設定檔都是 ASCII 純文字的格式檔案,相當的容易設定的,所以啊,根本就是不需要 X Window 存在呢! 因為 X Window 僅是 Linux 系統內的一個軟體而已啊!
但是萬一您的 Linux 主機是用來作為您的 Desktop 桌上電腦用的, 嘿嘿!那麼 X Window 對您而言,就是相當重要的一個咚咚了!因為我們日常使用的辦公室軟體, 都需要使用到 X Window 圖形的功能呢!此外,以鳥哥的例子來說, 我之前接觸到的數值分析模式,需要利用圖形處理軟體來將資料讀取出來, 所以在那部 Linux 主機上面,我一定需要 X Window 的。此外,由於處理的軟體有兩種, 其中一種需要使用到 3D 的加速功能。但 Linux 預設的顯示卡驅動程式對 3D 的加速功能有限, 此時,俺就得要重新安裝顯示卡驅動程式呢!傷腦筋~
回歸到主題上面,除了主機的用途決定您是否需要啟用 X Window 之外, 主機的『配備』也是您必須要考慮的一項決定性因素。 因為 X Window 如果要美觀,可能需要功能較為強大的 KDE 或 GNOME 等視窗管理員(Window Manager)的協助,但是這兩個龐然大物對於系統的要求又很高, 除了 CPU 等級要夠,RAM 要足之外,顯示卡的等級也不能太差~ 所以,早期的主機可能對於 X Window 就沒有辦法具有很好的效率了。
也就是說,您如果想要玩 X Window 的話,特別需要考慮到這兩點:
穩定性: X Window 僅是 Linux 上面的一個套件 (或者也可以稱為服務), 您不能對 X Window 與 Linux 的整合有太高的期望的,雖然目前的 X window 已經整合得相當好了。此外,任何程式的設計都或多或少會有些臭蟲, X 當然也不例外。因此,在您的 Linux server 上面啟用 X 系統的話, 自然多一個服務的啟用,就會產生一些不確定性。因此,不是很建議對 Internet 開放的伺服器啟動 X Window 的啦!
Tips: 鳥哥剛開始接觸 Linux (大約是在 1999 年左右)時, 由於不熟,通常都是預設給他啟用 X Window 在我的主機上面的。 不過,那個時候的圖形介面與 Linux kernel 的整合度比較差, 老是掛點去,是常常造成我其他 Internet 上面的服務無法順暢的原因之一呢!
效能: 無論怎麼說,程式在跑總是需要系統資源的,所以,多啟用了 X 就會造成一些系統資源的損耗。 此外,上面也稍稍提到,某些 X 的軟體是相當耗費系統資源的呢! 所以,多起動 X 就可能造成您的系統效能的低落哩!
X Window 發展歷史
X Window 最早是由 MIT (Massachusetts Institute of Technology) 在 1984 年發展出來的, 他們稱這個咚咚為 X 。在經過數年的發展後,到了 1987 年推出 X11 這個優秀的版本, 幾經改良後,再推出了 X11R6 (X11 版本的第 6 次 release 的意思)這個版本。 目前我們看到的各大 Linux distributions 均是使用 X11R6 這個 X 版本哩! (
所以您才會常常看到您的 Linux 主機裡面, 怎麼會有這麼多的 X11 與 X11R6 的目錄啊!呵呵!)
X11 發展了一段時間後,由社群發起的一個稱為 XFree86 的計畫 (
http://www.xfree86.org/ ) 持續在維護 X11R6 的功能性,包括對新硬體的支援以及更多新增的功能等等。 當初定名為 XFree86 其實是根據 『
X + Free software + x86 硬體 』而來的呢。早期 Linux 所使用的 X Window 的主要核心都是由 XFree86 這個計畫所提供的,因此,我們常常將 X server 與 XFree86 掛上等號的說~ 而 XFree86 針對 X11R6 也有持續在改良,也推出了 version 3 與 version 4 兩個版本, 目前我們看到的新的 distribution 幾乎都是使用 version 4 版本, 不過在 2001 年以前的版本,則通常還是使用 XFree86 version 3 的版本呢!
除了 XFree86 這個計畫之外,在 2004 年成立了另一個維護 X 系統架構的計畫,那就是 Xorg (
http://www.x.org/ ) 這個計畫啦!Xorg 是由多個組織所共同發起的,主要的目的是希望可以持續維護 X11R6 ,使可以讓 X Window System 更有效率的應用在工程上面。同時, Xorg 也是自由軟體喔! ^_^
Tips: 基本上,目前我們稱為 X Window system 的,應該是 X11R6 這個版本的 X 系統。 而針對這個系統來發展的除了 XFree86 計畫之外,在 2004 年產生的 Xorg 這個計畫也對 X11R6 來進行維護與發展。 會產生兩個計畫來維護 X11R6 的可能原因應該是目的的不同, Xorg 官方網站上面明白的宣示,該計畫主要是希望可以讓工程應用更加的有效率~ 而我們的 Fedora Core IV 使用的是 Xorg 計畫所維護的 X11R6 版本喔!^_^
X Window System 為什麼這麼優秀呢?因為他有相當優良的 X Server/X Client 設計系統。 什麼是 X Server 與 X Client 呢?X 在設計的時候, 就希望可以達到多人連線進入主機利用圖形界面的功能,於是他便發展出這樣的一個主從架構。 這個主從架構可以讓使用者在任何一部電腦以網路的方式連線到主機來操作圖形界面的功能, 是一個相當棒的設計呢~不過 X Server 與 X Client 的意義則與網路上的 Server/Client 意義不同喔~底下我們就來談一談 X Server/X Client 的功能。
X Server:主要負責的是螢幕畫面的繪製與顯示。
X Server 的主要功能 ( 不論是 Xorg 或是 XFree86 都是一個 X server 喔!) 就是在
管理 X Server 所在主機上面關於顯示的硬體配備啦~ 例如顯示卡、螢幕解析度、鍵盤形式、滑鼠形式等等。如果以 Linux 上安裝 X server 為例, 您會發現~咦!顯示卡、螢幕以及鍵盤滑鼠的設定,不是在開機的時候, Linux 系統以 /etc/sysconfig 目錄下的 keyboard/mouse 等設定檔就設好了嗎? 呵呵~這是因為 X Window 在 Linux 裡面僅能算是『一套很棒的軟體』, 所以 X Window 有自己的設定檔,您必須要針對他的設定檔設定妥當才行。
也就是說, Linux 的設定與 X Server 的設定不一定要相同的! 因此,你在 Linux 的 run level 3 想要玩圖形介面時,就得要載入 X Window 需要的驅動程式才行~總之, X Server 的主要功能就是在管理『主機』上面的顯示硬體與驅動程式。
您會發現鳥哥一直強調一件事情,那就是『 X Server 所在的主機』,這是怎麼回事啊?! 剛剛我們不是提到 X Window System 最早是希望可以達到多人連線的目的嗎?! 就是很多人都可以使用 X 來連線進入主機的意思,但是每部連線進入 Linux 主機的用戶端電腦的硬體並不一樣啊~這個時候當然就無法使用 Linux 上面的硬體來顯示資料囉~您說對吧?!否則您在用戶端利用 1MB 顯示卡記憶體的系統, 可能顯示出 Linux 主機的 1024x768x24bit 色彩與解析度嗎?!當然不行~對吧!? 也就是說:『
每部想要顯示 X 的主機都需要有 X Server』啦~ 所以,您的 Window PC 當然也需要 X Server 來管理顯示介面,這樣才能夠與 Linux 主機進行圖形介面的溝通啊!更多的關於用戶端連線到 Linux 主機端的方法,請參考
鳥哥的 Linux 私房菜--伺服器篇:遠端連線伺服器 的介紹囉~
X Server 還有一個重要的工作,那就是將來自輸入裝置(如鍵盤、滑鼠等)的動作告知 X Client, 您曉得, X Server 既然是管理這些周邊硬體,所以,周邊硬體的動作當然是由 X Server 來管理的, 但是 X Server 本身並不知道周邊設備這些動作會造成什麼顯示上的效果, 因此 X Server 會將周邊設備的這些動作行為告知 X Client ,讓 X Client 去傷腦筋~
X Client:主要負責的是『事件』的處理。
前面提到的 X Server 主要是管理顯示介面與在螢幕上繪圖,同時將輸入裝置的行為告知 X Client, 此時 X Client 就會依據這個輸入裝置的行為來開始處理,最後 X Client 會得到『 嗯!這個輸入裝置的行為會產生某個圖示』,然後將這個圖示的顯示資料回傳給 X Server , X server 再根據 X Client 傳來的繪圖資料將他描圖在自己的螢幕上,來得到顯示的結果。
也就是說, X Client 最重要的工作就是處理來自 X Server 的動作,將該動作處理成為繪圖資料, 再將這些繪圖資料傳回給 X Server 囉~
舉個例子來說,當我們在 X Window 的畫面中,將滑鼠向右移動,那他是怎麼告知 X Server 與 X Client 的呢? 首先, X server 會偵測到滑鼠的移動,但是他不知道應該怎麼繪圖啊!此時,他將滑鼠的這個動作告知 X Client, X Client 就會去運算,結果得到,嘿嘿!其實要將滑鼠指標向右移動幾個位素,然後將這個結果告知 X server , 接下來,您就會看到 X Server 將滑鼠指標向右移動囉~
這樣做有什麼好處啊?!最大的好處是, X Client 不需要知道 X Server 的硬體配備與作業系統! 因為 X Client 單純就是在處理繪圖的資料而已,本身是不繪圖的。所以,在用戶端的 X Server 用的是什麼硬體? 用的是哪套作業系統?主機端的 X Client 根本不需要知道~相當的先進與優秀~對吧! ^_^ 整個運作流程可以參考下圖:用戶端用的是什麼作業系統在 Linux 主機端是不在乎的!
圖一、X Window 與 X Client 的溝通示意圖
剛剛好~在 Linux 上的 X Window System 中,X Server 與 X Client 在同一部 Linux 上面~ 真是剛好啊~呵呵~好了,接下來再來討論一下,那麼那個 Window Manager 又是啥咚咚? Window Manager 可以說是一個相當特殊的 X client ,他可以提供更多的功能~ 包括有:
提供許多的控制元素,包括工作列、背景桌面的設定等等;
管理虛擬桌面 (virtual desktop);以及
提供視窗控制參數,這包括視窗的大小、視窗的重疊顯示、視窗的移動、視窗的最小化等等。
剛剛前面提到,X Client 的主要工作是將來自 X Server 的資料處理成為繪圖數據,再回傳給 X server , 所以, X client 本身是不知道他在 X Server 當中的位置、大小以及其他相關資訊的。 這些視窗位置大小與重疊顯示的功能,還有每個視窗上頭的標題等等,其實就是由 Window manager 所提供的囉~
FC4 利用 Xorg 這個計畫提供 X server 的核心,同時 Xorg 也提供了一個簡單的 Window manager , 那就是 twm 囉。不過, twm 的功能雖然已經具備了 window manager 最陽春的能力,不過,就是太陽春~ 所以後來預設的 window manager 大致上都以 KDE 或者是 GNOME 這兩個計畫提供的 window manager 為主囉~這兩個計畫的目的都是要讓使用者可以在 Linux 底下使用完整的桌面電腦能力, 因此這兩個計畫在 Window manager 底下增加了很多的 X Client 軟體,而且也加入了很多辦公應用軟體, 來讓大眾接受 Linux 這個好東西啊!
那麼您知道 X Server / X client / window manager 的關係了嗎?!我們舉 KDE 為例好了, 由於我們要在本機端啟動 X Window system ,因此,在我們的 FC4 主機上面必須要有 Xorg 的 X server 核心, 這樣才能夠提供螢幕的繪製啊~然後為了讓視窗管理更方便,於是就加裝了 KDE 這個計畫的 window manager , 然後為了讓自己的使用更方便,於是就在 KDE 上面加上更多的應用軟體,包括輸入法等等的, 最後就建構出我們的 X Window System 囉~ ^_^
X Window 啟用的流程
接下來,我們來談一談,那麼您的 Linux 上頭的 X Window System 整個啟動流程是如何呢? 假設您是以 run level 3 登入的好了,那麼您要如何進入 X Window System 呢? 很簡單啊!輸入 startx 就可以啦~那您知道 startx 執行後,您的 Window manager 是 KDE 還是 GNOME ? 還是其他的 window manager 嗎?!還有,您的版面風格配置又是如何呢?這些資料放在哪裡啊?! 底下我們就來談一談囉~
開始的一個偵測介面, startx :
我們知道了 X Window system 其實就是 X Server + X client 嘛!然後, 為了讓視窗管理更方便,於是在 X Client 載入 window manager 就是了。 不過,為了要載入這些資料,就必須要讀取設定檔對吧!我們知道 Linux 底下每個人都可以設定好屬於自己的環境, X Window 也一樣,您可以有自己專屬的 X 畫面。 但是,如果您是首次登入 X 呢?也就是說,您自己還沒有建立自己的專屬 X 畫面時, 系統又是從哪裡給你這個 X 預設畫面呢?
但是您不見得會有這兩個檔案,如果沒有的話,那麼 startx 就會主動的以系統預設的設定檔來啟用, 這兩個設定檔分別在 /etc/X11/xinit/xinitrc 與 /etc/X11/xinit/xserverrc。不論是您自己的 ~/.xinitrc 或者是系統的 xinitrc ,反正最後就是會有一個 X Client 與一個 X Server 的設定檔會被取用,而您家目錄下的 .xinitrc 與 .xserverrc 是具有優先權就是了。 在取得這兩個東西之後,接下來就是以 xinit 這個程式來執行 X Client 與 X server 的啟動了!
除此之外, startx 後面還可以接參數喔!這些參數可以取代 .xinitrc 與 .xserverrc 的設定。 舉例來說,您想要讓您的 X 色彩深度是 16 bit (色彩深度就是所使用的色彩啦!),那麼就可以:
startx 後面接的參數以兩個減號『--』隔開,前面的是 X Client 的設定,後面的是 X Server 的設定。 因為色彩深度是與 X Server 有關的,所以參數當然是寫在 -- 後面囉,於是就成了上面的模樣! 由於 startx 後面加的參數可以取代預設值,因此您就可以使用 16 位元色彩度進入 X 囉。
開始啟動 X 的 xinit :
事實上,實際在啟動 X 的,就是 xinit 這支程式啦~他的語法是:
[root@linux ~]# xinit [client option] -- [server or display option]
那個 xterm 是 X 視窗底下的虛擬終端機,後面會接一個『 -display :0 』 表示這個虛擬終端機是啟動在第 :0 號顯示介面的意思。而我們啟動的 X server 程式就是 X 啦! 其實 X 就是 Xorg 或 XFree86 的連結檔,亦即是 X Server 的主程式囉! 所以我們啟動 X 還挺簡單的~直接執行 X 而已。如果單純以上面的內容來啟動您的 X window 時, 您就會發現 tty7 有畫面了!只是.....很醜~因為我們還沒有啟動 window manager 啊!
在啟動 X Server 時,會去讀取 X Server 的設定檔,在 Xorg 使用的是 /etc/X11/xorg.conf 這個, 至於 XFree86 則是使用 /etc/X11/XF86Config (注意大小寫) 這個設定檔。針對這個設定檔的內容, 我們會在下個小節介紹。反正 X Server 讀取設定檔如果一切 OK 就會在 tty7 順利啟動囉~ 而剛剛執行的 X Client 就會將繪圖資料傳送給 X Server 呢!最終您就能看到漂亮的 X 囉~
不過要注意的是,如果您的 xinitrc 設定檔裡面有啟動的 x client 很多的時候,千萬注意將除了最後一個 window manager 或 X Client 之外,都放到背景裡面去執行啊!舉例來說,像底下這樣:
意思就是說,我啟動了 X ,並且同時啟動 xclock / xterm / twm 這三個 X clients 喔! 如此一來,您登入 X 就有這三個咚咚可以使用了!如果忘記加上 & 的符號,那就..... 會讓系統等待啊,而無法一次就登入 X 呢!
最後我們知道,透過 startx 可以取得 X Client 與 X Server 的相關設定資料,亦即 xinitrc 與 xserverrc 這兩個檔案。 這兩個檔案可以讓 xinit 這支程式來啟動我們的 X Window ,而透過 xinitrc 可以設定需要啟動的 window manager 是哪一個,至於透過 xserverrc 則能瞭解 X Server 使用的是那個主程式。通通啟用後,就可以得到我們的 X 囉。 更多的 xinit 用法可以參考 man xinit ,而 X 的用法則 man X 囉~
另外,其實 X Server 是會啟動至少一個 port 來監聽 X client 的要求的,那就是預設的 port 6000 囉。 不過,我們的 X 其實是很有彈性的,可以擁有多個 port 來監聽不同 X Client 的需求, 這也是未來我們談到伺服器架設時 VNC (Virtual Network Computing) 伺服器的特色。 但是在 X Window System 的環境下,我們稱 port 6000 為第 0 個顯示介面,亦即為 hostname:0 , 那個 hostname 通常可以不寫,所以就成了 :0 即可。
那麼啟動的 X 畫面是放在哪一個終端機 (tty) 呢?在預設的情況下,第一個啟動的 X (不論是啟動在第幾個 port number) 是在 tty7 ,亦即按下 [ctrl]+[Alt]+[F7] 那個畫面。 而起動的第二個 X (注意到了吧!可以有多個 X 同時啟動在您的系統上呢) 則預設在 tty8 亦即 [ctrl]+[Alt]+[F8] 那個畫面呢!很神奇吧! ^_^
因為主機上的 X 有多個,因此,當我們在啟動 X Server / Client 時, 應該都要註明該 X Server / Client 主要是提供或接受來自哪個 display 的 port number 才行。 如果您的 X 啟動在 :1 時,那就是 port 6001 啦!
好了,我們可以來針對 X Server 與 X client 的架構來做個簡單的測試喔! 底下這些動作您必須先以 run level 3 登入,並且確定主機上面已經安裝了 X Window System , 並且您必須要在主機前面,不可以 ssh 之類的連線程式進入做底下的動作啊! 另外,如果是 FC4 的使用者,記得將 xfs 服務啟動喔!
1. 先來啟動第一個 X 在 :0 畫面中: [root@linux ~]# X :0 & # X 是大寫,那個 :0 是寫在一起的,至於 & 則是放到背景去執行。 # 此時可以使用 netstat -tulnp 查看看有沒有那個 port 6000 出現啊! # 另外,此時系統會主動的跳到第一個圖形介面終端機,亦即 tty7 上喔! # 所以如果一切順利的話,您應該可以看到一個 X 的滑鼠游標可以讓您移動了。 # 該畫面就是 X Server 啟動的畫面囉!醜醜的,而且沒有什麼 client 可以用啊! # 接下來,請按下 [ctrl]+[alt]+[F1] 回到剛剛下達指令的終端機:
很有趣的一個小實驗吧~透過這個實驗,您應該會對 X 使用的 port , 與 Window manager 及 tty7 以後的終端介面使用方式有比較清楚的瞭解~加油!
與 X Server 有關的設定檔
從前面的說明來看,我們知道一個 X 能不能啟用,其實與 X Server 有很大的關係的。因為 X Server 負責的是整個畫面的描繪, 所以沒有成功啟動 X Server 的話,即使有啟動 X Client 也無法將圖樣顯示出來啊。所以,底下我們就針對 X Server 的設定檔來做個簡單的說明,好讓大家可以成功的啟動 X Window System 啊。
基本上, X Server 管理的是顯示卡、螢幕解析度、滑鼠按鍵對應等等,尤其是顯示卡晶片的認識,真是重要啊。 此外,還有顯示的字體也是 X Server 管理的一環。基本上, X 的設定檔都是預設放置在 /etc/X11 目錄下, 而相關的顯示模組或上面提到的總總模組,則主要放置在 /usr/X11R6 底下。 比較重要的是字型檔與晶片組,她們主要放置在:
字型: /usr/X11R6/lib/X11/fonts
顯示晶片: /usr/X11R6/lib/modules/drivers
在 FC4 底下,我們可以透過 chkfontpath 這個指令來取得目前系統有的字型檔案目錄。 這些都要透過一個統一的設定檔來規範,那就是 X server 的設定檔啦。不過 XFree86 與 Xorg 這兩個計畫的設定檔檔名不同, 雖然內容是差不多,不過,還是要來分辨一下才行。
手動修改 xorg.conf 或 XF86Config
其實想要知道你的系統裡面 X Server 到底來自哪個計畫,最簡單的方法就是利用 X 這個指令來取得版本啦。 您必須以 root 的身分執行下列指令:
[root@linux ~]# X -version X Window System Version 6.8.2 Release Date: 9 February 2005 X Protocol Version 11, Revision 0, Release 6.8.2 Build Operating System: Linux 2.6.9-1.906_ELsmp i686 [ELF] Current Operating System: Linux linux.dmtsai.tw 2.6.12-1.1387_FC4 Build Date: 02 June 2005 Build Host: tweety.build.redhat.com
Before reporting problems, check http://wiki.X.Org to make sure that you have the latest version.
上面設定完畢之後,就等於將整個 X Server 設定妥當了,很簡單吧。 如果您想要更新其他的例如顯示晶片的模組的話,就得要去硬體開發商的網站下載原始檔來編譯才行。 設定完畢之後,您就可以啟動 X Server 是看看囉。基本上,如果您的 Files 那個項目用的是直接寫入字型的路徑, 那就不需要啟動 XFS (X Font Server),如果是使用 font server 時,就要先啟動 xfs :
我們剛剛上面提到了要啟動 X Server 時,根據的設定檔是 /etc/X11/xorg.conf , 但是在這個設定檔裡面關於字型的設定可以使用 X Font Server 來統一管理。那麼 xfs 的設定檔又在哪裡呢?這就涉及了字型檔放置的地點了。 我們知道目前的字型放置在哪裡呢?就是 /usr/X11R6/lib/X11/fonts/ 這個目錄下的其他目錄。 而統一管理 xfs 的啟動程序是在 /etc/init.d/xfs ,分析其中的 script 結果知道設定檔在 /etc/X11/fs/config ,查閱檔案內容發現:
[root@linux ~]# vi /etc/X11/fs/config # allow a max of 10 clients to connect to this font server client-limit = 10
# when a font server reaches its limit, start up a new one clone-self = on
# where to look for fonts catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled, /usr/X11R6/lib/X11/fonts/75dpi:unscaled, /usr/X11R6/lib/X11/fonts/100dpi:unscaled, /usr/X11R6/lib/X11/fonts/Type1, /usr/share/fonts/default/Type1, , /usr/share/fonts/zh_CN/TrueType, /usr/share/fonts/zh_TW/TrueType # in 12 points, decipoints default-point-size = 120
# 100 x 100 and 75 x 75 default-resolutions = 75,75,100,100
# use lazy loading on 16 bit (usually Asian) fonts deferglyphs = 16
# how to log errors use-syslog = on
# don't listen to TCP ports by default for security reasons no-listen = tcp
來測試一下這個設定檔是否能夠啟動呢? 如果輸入上面指令後,可以在 tty7 看到畫面的話, 表示這個設定檔就應該可以啟動 X Server 囉。果真如此的話,您就可以將這個檔案覆蓋成 /etc/X11/xorg.conf ,並且在自己手動手動微調裡面的設定值吧。
更新顯示卡驅動程式的範例: NVidia 驅動程式
在很多情況下,您的 X Server 可能需要針對顯示卡晶片做個升級的。舉例來說, 您購買的顯示卡是最新的,但是 X Server 的預設模組並沒有支援。又或者您所需要的某些顯示晶片功能中, 預設的 X Server 的模組並無法提供。記得鳥哥在研究所所進行的研究中,有一項工作是需要在 Linux 伺服器上面啟用一個圖形處理軟體,該軟體雖然是自由軟體,不過,它需要 X Server 的 GLX 功能的支援, 我們實驗室的 NVidia 是有支援該功能的,偏偏預設的 X server 的 nv 模組並不提供該功能, 所以鳥哥就得到 NVidia 官方網站下載最新的驅動程式啦......
以前可以進入 X Window System ,而我沒有做過甚麼額外的行為,不過,最近卻無法進入 X Window 了,該怎麼辦? 最可能發生的原因是因為您在進行某些動作時讓 KDE 的預設檔跑掉了, 如果沒有甚麼重要的設定參數,建議您可以將您家目錄下的 ~/.kde 或者是 ~/.fonts , 或者是 GNOME 在您家目錄下的 ~/.gnome* 目錄給他移除,讓系統自動幫您建立一個全新的設定檔試看看。
我老是沒有辦法啟動 X Window System ,不知道原因出在哪裡呢? 出現這樣的問題最麻煩,要一個一個去檢查問題點。首先,如果您使用的是 Xorg 的話, 先查閱一下 /var/log/Xorg.0.log 這個登錄檔的資訊,他幾乎會告知您所有 X Server 發生的錯誤, 經由這個檔案的告知,您應該可以克服大部分的 X Server 的困擾。接下來的 X Client 問題, 可以查閱 /var/log/kdm.log 等其他與 X Client 軟體有關的登錄檔。 而如果是無法了解 X Server 的問題,那麼建議您使用 Xorg -configure 建立一個全新的設定檔後, 再逐一修改比對您所設定的參數,以了解錯誤發生的原因囉。
我的 X Server 裡頭,使用 KDE 或 GNOME 都無法更新或調整螢幕解析度及更新頻率,該如何是好? 發生這個問題的原因很多,不過,基本上都是與 X Server 有關,而不是 KDE 或 GNOME 的問題呢。 您應該要檢查 xorg.conf 或 XF86Config 這兩個檔案,找到與 Screen 有關的 Section , 查詢一下是否 display 那個 subsection 只有一個設定值?果真如此的話,當然您就無法調整解析度了。 請手動增加其他解析度與色彩度即可。另外,如果這部分沒有問題,那就可能是出現在顯示晶片模組的問題了。 或者需要到晶片開發商的網站上面下載最新的驅動程式來安裝,應該可以解決您的問題。 當然,也可以到 /var/log/Xorg.0.log 或 /var/log/XFree86.0.log (看各 distributions 的設定) 查閱問題點。
如果是在 run level 3 ,可以使用 startx 進入,至於 run level 5 ,則直接進入 tty7 即可進入 X Window 系統畫面。
利用 startx 可以在 run level 3 的環境下進入 X Window 系統。請問 startx 的主要功能?
其實整個 X 系統的啟動應該是由 xinit 這個指令所啟發的。但 xinit 需要 X Client 與 X Server 的相關參數,以提供進入 X Window System 的軟體與硬體管理,例如 xinit xinitrc -- xserverrc 等。 startx 即是在判斷使用者是否有自己的 ~/.xinitrc 及 ~/.xserverrc 的 script, 若有則直接取用,若無則到 /etc/X11/xinit 底下取用。
如何知道您系統當中 X 系統的版本與計畫?
最簡單可以利用 root 的身份下達 X -version 即可知道!
要瞭解為何 X 系統可以允許不同硬體、主機、作業系統之間的溝通,需要知道 X server / X client 的相關知識。 請問 X Server / X client / Window manager 的主要用途功能?
X Server 主要負責螢幕的繪製,以及周邊輸入裝置如滑鼠、鍵盤等資料的收集,並回報給 X Client ; X Client 主要負責資料的運算,收到來自 X Server 的資料後,加以運算得到圖形的數據,並回傳給 X Server, 讓 X server 自行繪製圖形。至於 Window manager 是一個比較特殊的 X Client ,他可以管理更多控制元素, 最重要的地方還是在於視窗的大小、重疊、移動等等的功能。
如何重新啟動 X
最簡單在 X Window System 下,直接按下 [alt]+[ctrl]+[backspace<--] 即可, 也可以 init 3 再 init 5,也可以關閉 X 後,再 startx 啟動等等。
試說明 ~/.xinitrc 這個檔案的用途?
當我們要啟動 X 時,必須要啟動 X Client 軟體端。這個 ~/.xinitrc 即是在客制化自己的 X Client , 您可以在這個檔案內輸入您自己的 X Client 。若無此檔案,則預設以 /etc/X11/xinit/xinitrc 替代。
什麼是 X Window System 在 Unix Like 的系統當中,可以利用滑鼠與鍵盤來進行圖形化介面的操作,那就是 Graphical User Interface (簡稱 GUI)介面啦!而我們將這個圖形介面稱為 X Window System。 為什麼稱為 X 呢?因為就英文字母來看, X 是在 W(indow) 後面,因此, 早期人們就戲稱這一版的視窗介面為 X 囉!