Linux 基礎學習篇 - Fedora Core 4

第二十四章、 X Window 簡易設定介紹 - for Fedora Core 4

X Window 的簡易設定與相關知識介紹

最近更新時間: 2005/07/11

本文資料主要針對 Fedora Core 4 的系統進行說明, Fedora Core 1 主要是由 Red Hat Linux 9 改版而來, 這個 Red Hat Linux 9 並不是當前大家聽到的 RHEL 喔!那是在 RHEL 出現之前的產品,基本上是在 2003 年以前的作品了!Fedora Core 4 則是在 2005 年 6 月份釋出,使用的核心是 2.6.11 版,當時是很紅的一個作品!只是生命週期太短,所以用這個 Fedora 系列來介紹 Server, 當時的決定確實有點莫名其妙了...

建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。那為何還需要編輯 Fedora Core 4 的資料呢? 鳥哥只想要做個自己曾經撰寫過的文件內容保存而已囉! ^_^!最新文章請前往鳥站首頁查閱囉!

有人說,要讓 Linux 更被大眾所接受,那麼更具親和力的 X Window 系統是勢在必行的! X Window System 的整體架構其實不很好理解,因為他又分為 X Server 與 X Client 等部分, 再加上很好用的 Window Manager 來湊一腳,嘿嘿!更難以理解了。 不過,我們這裡並沒有介紹很深入的 X Window 架構,只是簡單的介紹一下, 您應該如何設定 X Window 好讓您的桌面系統 (Desktop) 變的更漂亮~ 尤其是某些學術用軟體,需要 3D 加速的功能時,理解這些咚咚,就很重要了!

什麼是 X Window System

在 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 版本喔!^_^

此外, XFree86 與 Xorg 針對他們自己發展的 X11R6 都有版本的區分, 版本的編號是不一樣的。舉例來說, XFree86 分為 3.xx 與 4.xx 版本, 而 Xorg 則為 6.8.xx 等等。

X Server / X Client / Window manager 的關係

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 的溝通示意圖
    圖一、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 時,這個 startx 的作用就是在幫您設定好上頭提到的這些動作囉! startx 其實只是一個 shell script ,他是一個比較親和的程式,會主動的幫忙使用者建立起他們的 X 所需要引用的設定檔而已。您可以自行研究一下 startx 這個 script 的內容, 鳥哥在這裡僅就 startx 的作用作個介紹。

    startx 在執行的時候,他會主動的去尋找使用者家目錄底下的 .xinitrc 及 .xserverrc 這兩個檔案, 這兩個檔案分別是:
    • ~/.xinitrc 是 X Client 的設定資料檔;
    • ~/.xserverrc 則是 X Server 的設定資料檔。
    但是您不見得會有這兩個檔案,如果沒有的話,那麼 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 (色彩深度就是所使用的色彩啦!),那麼就可以:
    [root@linux ~]# startx [X client option] -- [X server option]
    [root@linux ~]# startx  --  -depth 16
    
    startx 後面接的參數以兩個減號『--』隔開,前面的是 X Client 的設定,後面的是 X Server 的設定。 因為色彩深度是與 X Server 有關的,所以參數當然是寫在 -- 後面囉,於是就成了上面的模樣! 由於 startx 後面加的參數可以取代預設值,因此您就可以使用 16 位元色彩度進入 X 囉。

  • 開始啟動 X 的 xinit :
  • 事實上,實際在啟動 X 的,就是 xinit 這支程式啦~他的語法是:
    [root@linux ~]# xinit [client option] -- [server or display option]
    
    那個 client option 與 server option 如何下達呢?其實那兩個咚咚就是由剛剛 startx 去找出來的啦! 在我們透過 startx 找到適當的 xinitrc 與 xserverrc 後,就交給 xinit 來執行。 在預設的情況下 (使用者尚未有 ~/.xinitrc 等檔案時),您輸入 startx , 就等於進行 xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc 這個指令一般!這樣瞭了嗎?

    所以呢,重點當然就是 /etc/X11/xinit/ 目錄下的 xinitrc 與 xserverrc 這兩個檔案的內容是啥囉~ 底下我們就分別來談一談這兩個檔案的主要內容與啟動的方式~

  • 啟動 X Client 的檔案: xinitrc :
  • 假設您的家目錄並沒有 ~/.xinitrc ,則此時 X Client 會以 /etc/X11/xinit/xinitrc 來作為啟動 X Client 的預設 script 。xinitrc 這個檔案會將很多其他的檔案參數引進來, 包括 /etc/X11/xinit/xinitrc-common 與 /etc/X11/xinit/Xclients 還有 /etc/sysconfig/desktop 。您可以參考 xinitrc 後去搜尋各個檔案來瞭解彼此的關係。

    重點是, xinitrc 會依據上述這些檔案的判斷 (要注意,每種 distributions 他們的 設定檔案放置的地點都不太一樣~) ,來搜尋出要啟動的 window manager 是哪一個? 舉例來說,在 FC4 底下, xinitrc 這個檔案會經由分析出 /etc/sysconfig/desktop 的設定, 來開始執行 startkde 或者是 gnome-session 這兩個 window manager 其中之一。 意思是說,如果您在 /etc/sysconfig/desktop 設定是 KDE 的話,那麼預設就會以 KDE 來啟動您的 X Window 囉。 等一下我們會以 KDE 的流程來介紹整個 X Client 如何啟動的過程,這裡目前僅指出到這裡。 而在 X Client 執行完畢後,接下來,當然就是 X Server 的進程了!
    Tips 鳥哥 不論怎麼說,鳥哥還是希望大家可以透過解析 startx 這個 script 的內容去找到每個檔案, 再根據分析每個檔案來找到您 distributions 上面的 X 相關檔案~ 畢竟每個版本的 Linux 還是有所差異的~
    在上面的步驟中,我們會看到 xinitrc 引入了 /etc/sysconfig/desktop 的設定, 已取得系統預設的 window manager 之後,接下來則是正確的分析該 window manager 是否存在, 若存在則嘗試啟動,若不存在則以其他存在的 window manager 來嘗試啟動。 因此,即使您 /etc/sysconfig/desktop 設定錯誤,系統還是會以預設的可能存在的 window manager 來嘗試啟動的。

    如果是以 KDE 來啟動的話,系統就會主動去搜尋 startkde 這個執行檔。其實 startkde 也只是一個 script, 他包含了很多 KDE 需要的設定資料,詳細的 KDE 相關請參考 KDE 的官方網站囉~

  • 啟動 X Server 的檔案: xserverrc :
  • 如果您去查閱 /etc/X11/xinit/ 目錄的話,會發現,根本就沒有 xserverrc 這個檔案啊! 那我家目錄也沒有 .xserverrc ,這個時候系統會怎麼做呢?其實單純只是執行 xinit 的時候, 系統的預設 X Client 與 X Server 的內容是這樣的:
    xinit xterm  -geometry  +1+1  -n  login  -display  :0 --  X  :0
    
    那個 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 之外,都放到背景裡面去執行啊!舉例來說,像底下這樣:
           xclock -geometry 100x100-5+5 &
           xterm -geometry 80x50-50+150 &
           exec /usr/X11R6/bin/twm
    
    意思就是說,我啟動了 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] 回到剛剛下達指令的終端機:
    
    2. 輸入數個可以在 X 當中執行的虛擬終端機
    [root@linux ~]# xterm -display :0  &
    # 那個 xterm 是必須要在 X 底下才能夠執行的終端機介面。
    # 加入的參數 -display 則是指出這個 xterm 要在那個 display 使用的。
    # 此時請按下 [ctrl]+[alt]+[F7] 去到 X 畫面中,您會發現多了一個終端機囉~
    # 不過,可惜的是,您無法看到終端機的標題、也無法移動終端機,
    # 當然也無法調整終端機的大小啊!我們回到剛剛的 tty1 然後:
    [root@linux ~]# xterm -display :0  &
    # 又多一個終端機,去到 tty7 查閱一下。唉~沒有多出一個終端機啊?
    # 這是因為兩個終端機重疊了~我們又無法移動終端機,所以只看到一個。
    
    3. 輸入可以管理的 window manager
    [root@linux ~]# twm -display :0  &
    # 回到 tty1 後,用最簡單的 twm 這個視窗管理員來管理我們的 X 吧!
    # 輸入之後,去到 tty7 看看,用滑鼠移動一下終端機看看?可以移動了吧?
    # 也可以縮小放大視窗囉~同時也出現了標題提示囉~也看到兩個終端機啦!
    # 現在終於知道視窗管理員的重要性了吧? ^_^
    
    4. 增加另一個 X 在系統中
    [root@linux ~]# X :1 &
    # 如果您又重複執行一次 X 的話,那麼這次的 X 圖示就會出現在 tty8 底下,
    # 那再輸入一次呢?亦即 X :2 & 呢?很簡單啊! tty9 也有 X 出現囉~厲害吧!
    
    5. 將所有剛剛建立的 X 相關工作全部殺掉!
    [root@linux ~]# kill %6
    [root@linux ~]# kill %5
    [root@linux ~]# kill %4
    [root@linux ~]# kill %3
    [root@linux ~]# kill %2
    [root@linux ~]# kill %1
    
    很有趣的一個小實驗吧~透過這個實驗,您應該會對 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.
    
    有看到 http://wiki.X.Org 吧?那就是 Xorg 計畫的網站囉。此時我們知道設定檔就是 /etc/X11/xorg.conf 。 如果您的 X 是 XFree86 的話,那麼設定檔就會是在 /etc/X11/XF86Config (注意大小寫) 裡頭喔! 我們的 FC4 使用的是 Xorg 計畫所提供的 X11,所以我們的設定檔就會在 /etc/X11/xorg.conf 。 接下來,我們要做的就只是修改 xorg.conf 這個檔案而已。之前各大 distribution 提供的例如 xf86config, Xconfigurator 之類的軟體也都是在修改這個設定檔而已。所以,我們就直接手動來查閱這個檔案吧。
    Tips 鳥哥 其實 xorg.conf 與 XF86Config 這兩個設定檔的內容幾乎一模一樣,所以,即使您的 X 是 XFree86 的話,同樣可以適用底下的說明喔。
    注意一下,在修改這個檔案之前,務必將這個檔案給她備份下來,免的改錯了甚麼東西,導致連 X server 都無法啟動的問題啊。這個檔案的內容是分成數個段落的,每個段落以 Section 開始,以 EndSection 結束, 裡面含有該 Section (段落) 的相關設定值,例如:
    Section “section name”
    …….. <== 與這個 section name 有關的設定項目
    ……..
    EndSection
    
    至於常見的 section name 主要有:
    1. Module: 載入到 X Server 當中的須要模組;
    2. InputDevice: 包括輸入的 1. 鍵盤的格式 2. 滑鼠的格式;
    3. Files:設定字型所在的目錄位置等;
    4. Monitor:螢幕的格式,主要是設定水平、垂直的更新頻率;
    5. Device:這個重要,就是顯示卡晶片組的相關設定了;
    6. Screen:這個是在螢幕上顯示的相關解析度與色彩度的設定項目;
    7. ServerLayout:上述的每個項目都可以重覆設定,這裡則是此一 X server 要取用的那個項目值的設定囉。
    好了,直接來看看這個檔案的內容吧!鳥哥我的顯示卡是 NVidia 的早期的 GeForce2 MX 的卡,那我的 xorg.conf 內容是這樣的:
    [root@linux ~]# cd /etc/X11
    [root@linux X11]# cp -a xorg.conf xorg.conf.back  <== 有備份有保佑
    [root@linux X11]# vi xorg.conf
    Section "Module"
            Load  "dbe"
            Load  "extmod"
            Load  "fbdevhw"
            Load  "glx"
            Load  "record"
            Load  "freetype"
            Load  "type1"
            Load  "dri"
    EndSection
    # 上面這些模組是 X Server 啟動時,希望能夠額外獲得的相關支援的模組。
    # 關於更多模組可以搜尋一下 /usr/X11R6/lib/modules/extensions/ 這個目錄,
    # 對喜歡以 X 視窗登入遠端主機的朋友來說, FC4 提供的這個 vnc.so 模組可是
    # 相當的有趣喔!請參考 鳥哥的 Linux 私房菜伺服器篇--遠端登入伺服器的介紹呢
    
    Section "InputDevice"
            Identifier  "Keyboard0"
            Driver      "kbd"
            Option      "XkbModel" "pc105"
            Option      "XkbLayout" "us"
    EndSection
    # 這個玩意兒是鍵盤的對應設定資料,重點在於 XkbLayout 那一項,
    # 如果沒有問題的話,我們台灣地區應該都是使用美式鍵盤對應按鈕的,
    # 但是 SuSE 卻是使用德國鍵盤對應按鈕,這裡老是發生錯誤,呵呵,所以,
    # 如果你的鍵盤老是按出不對的字元,修改這裡成為 us 吧!
    # 特別注意到 Identifier 那一項,那個是在說明,我這個鍵盤的設定檔,
    # 被定義為名稱是 Keyboard0 的意思,這個名稱最後會被用於 ServerLayout 中
    
    Section "InputDevice"
            Identifier  "Mouse0"
            Driver      "mouse"
            Option      "Protocol" "IMPS/2"
            Option      "Device" "/dev/input/mice"
            Option      "ZAxisMapping" "4 5"
            Option      "Emulate3Buttons" "yes"
    EndSection
    # 這個則主要在定義滑鼠。鳥哥用 ps2 滑鼠,所以這裡是這樣的模樣。
    # 如果您使用的是 usb 滑鼠,這裡可能就不會是跟我一樣的情況了。
    # 比較有趣的是那個 Emulate3Buttons ,意思是模擬三鍵,
    # 如果您的滑鼠本身就有三按鍵,這裡就不要設定啊
    
    Section "Files"
            RgbPath      "/usr/X11R6/lib/X11/rgb"
            FontPath     "unix/:7100"
    EndSection
    # 我們的 X Server 很重要的一點就是必須要有字型,
    # 這個 Files 的項目就是在設定字型的地方。當然啦,您的主機本來就必須
    # 要有字型檔才行。一般字型檔就是放置在 /usr/X11R6/lib/X11/fonts。
    # 那個 Rgb 是與色彩有關的項目。
    # 基本上,如果我們要填寫 100dpi 的字型,可以這樣做:
    # FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
    # 將所有需要的字型都重複以上面這一行填寫即可。但是, FC4 有更好的方法,
    # 那就是利用 X Font Server, xfs 這個 daemon 來統一管理,因此,
    # 上面的設定值就會只剩下 "unit/:7100" 而已,那說明的是,我們的 xfs 
    # 服務是啟動在 unix socket 7100 那個資料連結上面。
    # 也因為如此,所以我們在啟動 X server 之前,務必要先啟動 xfs 才行啊,
    # 否則 X 會告知我們說,找不到 font 呢。相關的資訊我們在下一繼續說明。
    
    Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "ADI GD910T"
            DisplaySize  370        280
            HorizSync    30.0 - 80.0
            VertRefresh  50.0 - 100.0
            Option      "dpms"
    EndSection
    # 螢幕的設定僅有一個地方要注意,那就是垂直與水平的更新頻率。
    # 在上面的 HorizSync 與 VerRefresh 的設定上,要注意,不要設定太高,
    # 以鳥哥的設定為例,我並沒有設定很高喔,這個玩意兒與更新頻率有關。
    # 設定太高的話,據說會讓 monitor 燒毀呢,要很注意啊。
    
    Section "Device"
            Identifier  "Videocard0"
            Driver      "nv"
            VendorName  "Videocard vendor"
            BoardName   "NVIDIA GeForce 4 (generic)"
    EndSection
    # 這地方重要了,這就是顯示卡的晶片模組載入的設定區域。
    # 因為鳥哥的顯示卡是 NVidia 的,所以就使用 Xorg 計畫提供的 nv 模組,
    # 那個模組就是給 NVidia 用的啦。更多的顯示晶片模組可以參考底下這個目錄:
    # /usr/X11R6/lib/modules/drivers/
    
    Section "Screen"
            Identifier "Screen0"
            Device     "Videocard0"
            Monitor    "Monitor0"
            DefaultDepth     16
            SubSection "Display"
                    Viewport   0 0
                    Depth     16
                    Modes    "1024x768" "800x600" "640x480"
            EndSubSection
            SubSection "Display"
                    Viewport   0 0
                    Depth     24
                    Modes    "1024x768" "800x600"
            EndSubSection
    EndSection
    # 那麼 screen 是甚麼東西啊? 其實就是與螢幕有關的
    # 解析度啦、色彩深度啦等等的,還有一個預設色彩深度 (DefaultDepth)。
    # 您會發現,在 screen 裡面還有一個 subsection "display" 對吧?
    # 那個是段落內的段落,也就是說,screen 裡面還可以設定多個顯示項目,
    # 以上面的段落來說,我的 screen (螢幕) 還可以針對 16bit 與 24bit (Depth)
    # 色彩度來設定解析度 (Modes) 呢。而預設的情況就是 16 bit 色度
    # (看的是 DefaultDepth 那個項目啊!)
    # 以鳥哥來說,我本人比較喜歡 16bit 色彩深度與 1024x768 的解析度,因此,
    # 鳥哥常常在這裡僅設定一個 subsection "display" 而已,內容有點像:
    # SubSection "Display"
    #	Viewport 	0 0 
    #	Depth		16
    #	Modes		"1024x768"
    # EndSubSection
    
    Section "ServerLayout"
            Identifier     "Default Layout"
            Screen      0  "Screen0" 0 0
            InputDevice    "Mouse0" "CorePointer"
            InputDevice    "Keyboard0" "CoreKeyboard"
    EndSection
    # 我們上面設定了這麼多的項目之後,最後整個 X Server 要用的項目,
    # 就通通一骨腦的給他寫入這裡就是了,包括鍵盤、滑鼠以及螢幕啊。
    
    上面設定完畢之後,就等於將整個 X Server 設定妥當了,很簡單吧。 如果您想要更新其他的例如顯示晶片的模組的話,就得要去硬體開發商的網站下載原始檔來編譯才行。 設定完畢之後,您就可以啟動 X Server 是看看囉。基本上,如果您的 Files 那個項目用的是直接寫入字型的路徑, 那就不需要啟動 XFS (X Font Server),如果是使用 font server 時,就要先啟動 xfs :
    [root@linux ~]# /etc/init.d/xfs start
    [root@linux ~]# startx
    
    當然,您也可以利用 init 5 這個指令直接切換到圖形介面的登入來試看看囉。

    X 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
    
    上面這個檔案的設定重點在 catalogue 那個設定項目當中。 您可以使用 chkfontpath 這個指令來列出目前支援的字型檔案,也可以直接修改呢! 而您如果還想要使用其他的特殊按鍵,則可以嘗試使用 xmodmap 哩!

    /etc/inittab

    我們由前面知道 run level 5 可以主動的進入 X 視窗系統, 而修改 run level 的設定資料可以查詢 /etc/inittab 內的這個參數:
    [root@linux ~]# vi /etc/inittab
    id:3:initdefault:
    .....(略)......
    x:5:once:/etc/X11/prefdm -nodaemon
    
    看到了嗎?那個 id 開頭的項目就是開機啟動時預設的 run level 設定值, 至於那個 x 開頭的設定項目,則是在說明如果以 run level 5 啟動時, 需要額外執行的程式,就是 /etc/X11/prefdm 這個程式囉。 簡單分析一下 prefdm 檔案,內容其實也只是要藉由 /etc/sysconfig/desktop 這個設定檔來分析出預設執行的 Window manager 囉!

    利用 Xorg / XFree86 來設定預設的設定檔

    我們在上面提到了關於手動修改 xorg.conf 這個 X Server 的設定檔。但是, 如果我對於我的系統內的所有相關硬體都不知道的時候,也不曉得如何主動建立這個檔案時, 有沒有比較快速的方法可以來建立出這個設定檔呢? 是有的,同樣也是 Xorg 的功能之一, 藉由讓 Xorg 以預設的所有模組去進行整個系統的探索 (probe) 後,先主動嘗試建立一個陽春的 X Server 設定檔,然後您再藉由測試與手動修改來修訂這個設定檔呢。如何執行呢? 您必須以 root 的身分執行才行:
    [root@linux ~]# Xorg -configure
    # 此時 X 會主動的以內建的模組進行系統硬體的探索,
    # 並將最後的結果輸出到 /root/xorg.conf.new 這個檔案裡面去。
    
    整個過程很簡單,就是利用 Xorg -configure 而已,如果是 XFree86 的話,同樣可以使用 XFree86 -configure 來建立起自己的設定檔。而以 Xorg 建立的設定檔會是 /root/xorg.conf.new 這個檔名,你可以在 run level 3 的環境下,輸入:
    [root@linux ~]# X -config /root/xorg.conf.new
    
    來測試一下這個設定檔是否能夠啟動呢? 如果輸入上面指令後,可以在 tty7 看到畫面的話, 表示這個設定檔就應該可以啟動 X Server 囉。果真如此的話,您就可以將這個檔案覆蓋成 /etc/X11/xorg.conf ,並且在自己手動手動微調裡面的設定值吧。

    關於螢幕解析度與更新率

    我們上面提到修改 xorg.conf 內的 Monitor 項目,裡面的水平與垂直更新率 (VerRefresh, HorizSyn) 可以影響到你螢幕的解析度與更新率,不過,畢竟不怎麼完整。如果你想要更完整的設定好這一些基礎項目, 那麼你可以連上底下這個網站:
    在該網站上面輸入你所需要的水平垂直解析度後,按下計算,就能夠得到類似底下這樣的資料:
    1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz
    
    Modeline "1024x768_100.00"  113.31  1024 1096 1208 1392  768 
    769 772 814  -HSync +Vsync
    # 註:上面兩行是同一行的資料喔!
    
    你可以將這個資料給他填入你的 Monitor 項目當中,如下所示的資料:
    [root@linux ~]# vi /etc/X11/xorg.conf
    Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "ADI GD910T"
    Modeline "1024x768_100.00"  113.31  1024 1096 1208 1392  768
    769 772 814  -HSync +Vsync  <==這是同一行啊!
            Option      "dpms"
    EndSection
    
    這樣你的螢幕就能夠好好的處理處理了! ^_^

    更新顯示卡驅動程式的範例: NVidia 驅動程式

    在很多情況下,您的 X Server 可能需要針對顯示卡晶片做個升級的。舉例來說, 您購買的顯示卡是最新的,但是 X Server 的預設模組並沒有支援。又或者您所需要的某些顯示晶片功能中, 預設的 X Server 的模組並無法提供。記得鳥哥在研究所所進行的研究中,有一項工作是需要在 Linux 伺服器上面啟用一個圖形處理軟體,該軟體雖然是自由軟體,不過,它需要 X Server 的 GLX 功能的支援, 我們實驗室的 NVidia 是有支援該功能的,偏偏預設的 X server 的 nv 模組並不提供該功能, 所以鳥哥就得到 NVidia 官方網站下載最新的驅動程式啦......

    在這裡,鳥哥以時下最流行的顯示晶片製造商之一的 NVidia 來約略說明一下升級晶片模組 (或者說是驅動程式) 的簡單流程,希望對大家能有點幫助啊。

  • 下載驅動程式
  • 既然要更新驅動程式,當然要到硬體開發商的網站下載囉。 您可以到底下的網站去下載驅動程式。 在上面連結的框框中,由左至右依序選擇{Graphics Driver} {Geforce and TNT2} {Linux IA32} 要注意的是,因為鳥哥的顯示卡是 GeForce 系列的卡,而我的作業系統 FC4 與硬體搭配, 其實是 32 位元,那個 IA32 亦即是 32 位元的作業系統。至於 Linux AMD64 與 Linux IA64 則分別代表 AMD 64 位元的硬體以及其他 64 位元的作業系統。點選完畢後按下 Go 按鍵, 就會進入說明畫面。裡面就會有驅動程式的下載聯結。

    在該網頁當中,還會有很多的資訊,您應該要看一看的,裡面會有教您如何如何正確的安裝該軟體, 以及發生錯誤時應該如呵解決的方案喔。

  • 開始安裝模組
  • 在該模組下載之後,您會發現他並不是一個 RPM 檔案。根據 NVidia 的說法, 因為並非所有的 distribution 都是使用 RPM 作為套件管理的,所以她們就取消了單純的 RPM 方式, 改以一個步驟就完成的方式來給予這個安裝檔案。

    其實整個安裝很簡單,直接執行該下載檔案就好了! 下載的檔案名稱應該是: NVIDIA-Linux-x86-{version}-pkg1.run 他是一個含有原始碼的 shell script ,既然是 Shell script ,直接安裝它就好啦!
    [root@linux ~]# sh NVIDIA-Linux-x86-1.0-7667-pkg1.run
    # 過程會出現一個授權說明,請選擇 Accept 項目即可,
    # 而接下來會出現一個找不到相關核心介面的說明,他說要去 NVidia 下載適當的介面。
    # 此時可以選擇不要,那麼程式就會開始自動編譯驅動程式的主核心囉.
    
    這個時候程式會將 Nvidia 的驅動程式放置在 /usr/X11R6/lib/modules/drivers/nvidia_drv.o 而且更新了 GLX 這個模組在 /usr/X11R6/lib/modules/extensions/libglx.so.1.0.7667 。 並且同時會安裝 NVidia 的 nvidia-bug-report.sh, nvidia-installer, nvidia-settings 等工具程式。比較直得注意的是 nvidia-installer 這支程式,他還可以幫忙線上更新哩~
    [root@linux ~]# nvidia-installer --update
    # 這個動作在進行線上更新的作業
    [root@linux ~]# nvidia-installer --uninstall
    # 這個動作在解安裝 NVidia 的模組
    
    呵呵,真是方便,未來要升級到更新的顯示卡驅動程式, 直接利用 nvidia-installer 的功能即可。更多詳細的用法可以參考 nvidia-installer -h 的說明。

  • 修改主要設定檔內容
  • 接下來就是要讓 X Server 去直接讀取剛剛安裝的模組了,所以,修改一下 xorg.conf 囉!
    [root@linux ~]# vi /etc/X11/xorg.conf
    # 在 Section "Device" 的顯示卡晶片段落處,修改 driver 囉。
    #       Driver      "nv"
            Driver      "nvidia"
    # 將原先的 nv 模組改成 nvidia 模組喔
    
    # 在 Section "Module" 的地方,取消一些預設的模組,改以 NVidia 的預設功能。
            Load  "glx"
    # 上面這一段如果不存在,就手動建立吧
    #       Load  "dri"
    #       Load  "GLCore"
    # 如果有出現 Load dri 與 GLCore ,請將他註解掉。
    
    到此為止,就已將您的系統安裝上最新的 NVidia 的顯示卡驅動程式囉。 好囉,那您就趕緊試看看新的顯示卡晶片的功能吧。 而如果有什麼疑問的話,查閱一下 /var/log/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 的設定) 查閱問題點。

    • 如何進行 X Window System 的中文化?
      基本上,中文化應該都是在 KDE 或者是 GNOME 上面的顯示軟體才對。這裡有一篇 FreeBSD 的文章: FreeBSD Chinese How-to (http://www.douzhe.com/docs/freebsd_howto/index.html) 雖然是 FreeBSD 的系統,不過,很有可觀之處。
     

    本章習題練習

    ( 要看答案請將滑鼠移動到『答:』底下的空白處,按下左鍵圈選空白處即可察看 )
    • 如何在 Linux 主機進入 X Window System ?
    • 如果是在 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 替代。
    • 我在 FC4 的系統中,預設使用 KDE 登入 X 。但我想要改以 GNOME 登入,該怎麼辦?
    • 最簡單的作法,直接修改 /etc/sysconfig/desktop 內的設定值即可。 但如果你不是 root 無法修訂該檔案時, 亦可以在自己的家目錄參考 /etc/X11/xinit/xinitrc 的內容自行製作 ~/.xinitrc 檔案來修改!
    • X Server 的 port 預設開放在?
    • X port 預設開放在 port 6000 ,而且稱此一顯示為 :0
    • Linux 主機是否可以有兩個以上的 X
    • 是的!可以!第一個 X 通常在 tty7 ,第二個在 tty8 ,第三個在 tty9 ,依序類推。 第幾個是以啟動的順序來定義,並非 :0 , :1 的意思~特別分清楚。
    • X Server 的設定檔若不是 xorg.conf 就是 XF86Config 。 在該檔案中, Section Files 幹嘛用的?
    • 相當重要!是設定顯示字型用的。而字型一般放置目錄在 /usr/X11R6/lib/X11/fonts/ 當中。
    • 我發現我的 X 系統鍵盤所輸入的字母老是打不出我所需要的單字,可能原因該如何修訂?
    • 應該是鍵盤符號對應表跑掉了。可以修改 xorg.conf 或 XF86Config 檔案內, 關於 Keyboard 的 Option XkbLayout 項目,將他改為 us 即可!
    • 當我的系統內有安裝 GNOME 及 KDE 兩個 X Widnow Manager ,我原本是以 KDE 為預設的 WM, 若想改為 GNOME 時,應該如何修改 (假設在 FC4 的環境下)?
      每個 distributions 的修改方式都不太一樣,以 FC4 為例,修改 /etc/sysconfig/desktop 內部,成為 GNOME 即可!而 SuSE 可以修改 /etc/sysconfig/windowmanager !

    參考資料

    修改歷史:
    • 2003/02/12:第一次完成
    • 2005/06/29:將舊的文章移動到 這裡 。如果您需要舊版的 xf86config 與相關的工具,則請前往該舊文章查閱!
    • 2005/07/11:經歷了許多的時間,將主機的設定檔重複改了改,終於完成一些簡單的 X 測試!
    • 2006/11/07:經由網友x1215 這一篇的介紹,得知該網站,趕緊去處理!
    伺服器篇文件
    各版本彙整說明
    CentOS 6.x