X-windows简易设置(转)
(2006-07-20 15:40)
分类: linux系统基础
1. 什麼是 X Window System
1.1 我是否需要啟用 X Window System
1.2 X Window 的發展歷史
1.3 X Server/X Client/X Window Manager 的關係
1.4 X Window 啟用的流程
2. 與 X Server 有關的設定檔
2.1 手動修改 xorg.conf 或 XF86Config
2.2 X Font Server (XFS)
2.2 /etc/inittab
2.4 利用 Xorg / XFree86 來設定預設的設定檔
3. 更新顯示卡驅動程式的範例: NVidia 驅動程式
4. 問題克服
5. 本章習題練習
6. 參考資料
7. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=23897
1.1 我是否需要啟用 X Window System
1.2 X Window 的發展歷史
1.3 X Server/X Client/X Window Manager 的關係
1.4 X Window 啟用的流程
2. 與 X Server 有關的設定檔
2.1 手動修改 xorg.conf 或 XF86Config
2.2 X Font Server (XFS)
2.2 /etc/inittab
2.4 利用 Xorg / XFree86 來設定預設的設定檔
3. 更新顯示卡驅動程式的範例: NVidia 驅動程式
4. 問題克服
5. 本章習題練習
6. 參考資料
7. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=23897
在 Unix Like 的系統當中,可以利用滑鼠與鍵盤來進行圖形化介面的操作,那就是
Graphical User Interface (簡稱 GUI)介面啦!而我們將這個圖形介面稱為 X Window System。
為什麼稱為 X 呢?因為就英文字母來看, X 是在 W(indow) 後面,因此,
早期人們就戲稱這一版的視窗介面為 X 囉!
事實上, X Window System 不是很容易理解,尤其是我們還沒有接觸到網路主機伺服器方面的介紹。 不過,無論如何,要對 X 有一些概念的話,還是得要介紹一下他的運作原理才行啊~傷腦筋~ 底下鳥哥將就 X Window 的相關知識作個簡單的介紹啊!
我是否需要啟用
X Window System
X Window
發展歷史
X Server / X
Client / Window manager 的關係
X Window 啟用的流程
事實上, X Window System 不是很容易理解,尤其是我們還沒有接觸到網路主機伺服器方面的介紹。 不過,無論如何,要對 X 有一些概念的話,還是得要介紹一下他的運作原理才行啊~傷腦筋~ 底下鳥哥將就 X Window 的相關知識作個簡單的介紹啊!
在開始之前,還是得就這個話題來說明說明。一般來說,如果您的 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 的話,特別需要考慮到這兩點:
但是萬一您的 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 最早是由 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 也是自由軟體喔! ^_^
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 Window System 為什麼這麼優秀呢?因為他有相當優良的 X Server/X Client 設計系統。
什麼是 X Server 與 X Client 呢?X 在設計的時候,
就希望可以達到多人連線進入主機利用圖形界面的功能,於是他便發展出這樣的一個主從架構。
這個主從架構可以讓使用者在任何一部電腦以網路的方式連線到主機來操作圖形界面的功能,
是一個相當棒的設計呢~不過 X Server 與 X Client 的意義則與網路上的 Server/Client
意義不同喔~底下我們就來談一談 X Server/X Client 的功能。
X Server:主要負責的是螢幕畫面的繪製與顯示。
X Client:主要負責的是『事件』的處理。
舉個例子來說,當我們在 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 ,他可以提供更多的功能~ 包括有:
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 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 去傷腦筋~
也就是說, 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 Server 主要是管理顯示介面與在螢幕上繪圖,同時將輸入裝置的行為告知 X Client,
此時 X Client 就會依據這個輸入裝置的行為來開始處理,最後 X Client 會得到『
嗯!這個輸入裝置的行為會產生某個圖示』,然後將這個圖示的顯示資料回傳給 X Server ,
X server 再根據 X Client 傳來的繪圖資料將他描圖在自己的螢幕上,來得到顯示的結果。
也就是說, X Client 最重要的工作就是處理來自 X Server 的動作,將該動作處理成為繪圖資料, 再將這些繪圖資料傳回給 X Server 囉~
也就是說, 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);以及
- 提供視窗控制參數,這包括視窗的大小、視窗的重疊顯示、視窗的移動、視窗的最小化等等。
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 囉~ ^_^
接下來,我們來談一談,那麼您的 Linux 上頭的 X Window System 整個啟動流程是如何呢?
假設您是以 run level 3 登入的好了,那麼您要如何進入 X Window System 呢?
很簡單啊!輸入 startx 就可以啦~那您知道 startx 執行後,您的 Window manager 是 KDE 還是 GNOME ?
還是其他的 window manager 嗎?!還有,您的版面風格配置又是如何呢?這些資料放在哪裡啊?!
底下我們就來談一談囉~
開始的一個偵測介面, startx :
開始啟動 X 的 xinit :
啟動 X Client 的檔案: xinitrc :
啟動 X Server 的檔案: xserverrc :
另外,其實 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 服務啟動喔!
很有趣的一個小實驗吧~透過這個實驗,您應該會對 X 使用的 port ,
與 Window manager 及 tty7 以後的終端介面使用方式有比較清楚的瞭解~加油!
我們知道了 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 這兩個檔案, 這兩個檔案分別是:
除此之外, startx 後面還可以接參數喔!這些參數可以取代 .xinitrc 與 .xserverrc 的設定。 舉例來說,您想要讓您的 X 色彩深度是 16 bit (色彩深度就是所使用的色彩啦!),那麼就可以:
startx 後面接的參數以兩個減號『--』隔開,前面的是 X Client 的設定,後面的是 X Server 的設定。
因為色彩深度是與 X Server 有關的,所以參數當然是寫在 -- 後面囉,於是就成了上面的模樣!
由於 startx 後面加的參數可以取代預設值,因此您就可以使用 16 位元色彩度進入 X 囉。
事實上,當您輸入 startx 時,這個 startx 的作用就是在幫您設定好上頭提到的這些動作囉! startx 其實只是一個 shell script ,他是一個比較親和的程式,會主動的幫忙使用者建立起他們的 X 所需要引用的設定檔而已。您可以自行研究一下 startx 這個 script 的內容, 鳥哥在這裡僅就 startx 的作用作個介紹。
startx 在執行的時候,他會主動的去尋找使用者家目錄底下的 .xinitrc 及 .xserverrc 這兩個檔案, 這兩個檔案分別是:
- ~/.xinitrc 是 X Client 的設定資料檔;
- ~/.xserverrc 則是 X Server 的設定資料檔。
除此之外, startx 後面還可以接參數喔!這些參數可以取代 .xinitrc 與 .xserverrc 的設定。 舉例來說,您想要讓您的 X 色彩深度是 16 bit (色彩深度就是所使用的色彩啦!),那麼就可以:
[root@linux ~]# startx [X client option] -- [X server option] |
事實上,實際在啟動 X 的,就是 xinit 這支程式啦~他的語法是:
那個 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 這兩個檔案的內容是啥囉~ 底下我們就分別來談一談這兩個檔案的主要內容與啟動的方式~
[root@linux ~]# xinit [client option] -- [server or display option]
|
所以呢,重點當然就是 /etc/X11/xinit/ 目錄下的 xinitrc 與 xserverrc 這兩個檔案的內容是啥囉~ 底下我們就分別來談一談這兩個檔案的主要內容與啟動的方式~
假設您的家目錄並沒有 ~/.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 的進程了!
在上面的步驟中,我們會看到 xinitrc 引入了 /etc/sysconfig/desktop 的設定,
已取得系統預設的 window manager 之後,接下來則是正確的分析該 window manager 是否存在,
若存在則嘗試啟動,若不存在則以其他存在的 window manager 來嘗試啟動。
因此,即使您 /etc/sysconfig/desktop 設定錯誤,系統還是會以預設的可能存在的 window manager
來嘗試啟動的。
如果是以 KDE 來啟動的話,系統就會主動去搜尋 startkde 這個執行檔。其實 startkde 也只是一個 script, 他包含了很多 KDE 需要的設定資料,詳細的 KDE 相關請參考 KDE 的官方網站囉~
重點是, 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 還是有所差異的~ | ![]() |
如果是以 KDE 來啟動的話,系統就會主動去搜尋 startkde 這個執行檔。其實 startkde 也只是一個 script, 他包含了很多 KDE 需要的設定資料,詳細的 KDE 相關請參考 KDE 的官方網站囉~
如果您去查閱 /etc/X11/xinit/ 目錄的話,會發現,根本就沒有 xserverrc 這個檔案啊!
那我家目錄也沒有 .xserverrc ,這個時候系統會怎麼做呢?其實單純只是執行 xinit 的時候,
系統的預設 X Client 與 X Server 的內容是這樣的:
那個 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 囉~xinit xterm -geometry +1+1 -n login -display :0 -- X :0
|
在啟動 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 & |
另外,其實 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 畫面中: |
從前面的說明來看,我們知道一個 X 能不能啟用,其實與 X Server 有很大的關係的。因為 X Server 負責的是整個畫面的描繪,
所以沒有成功啟動 X Server 的話,即使有啟動 X Client 也無法將圖樣顯示出來啊。所以,底下我們就針對 X Server
的設定檔來做個簡單的說明,好讓大家可以成功的啟動 X Window System 啊。
基本上, X Server 管理的是顯示卡、螢幕解析度、滑鼠按鍵對應等等,尤其是顯示卡晶片的認識,真是重要啊。 此外,還有顯示的字體也是 X Server 管理的一環。基本上, X 的設定檔都是預設放置在 /etc/X11 目錄下, 而相關的顯示模組或上面提到的總總模組,則主要放置在 /usr/X11R6 底下。 比較重要的是字型檔與晶片組,她們主要放置在:
手動修改 xorg.conf 或 XF86Config
X Font Server (XFS)
/etc/inittab
利用 Xorg / XFree86
來設定預設的設定檔
基本上, X Server 管理的是顯示卡、螢幕解析度、滑鼠按鍵對應等等,尤其是顯示卡晶片的認識,真是重要啊。 此外,還有顯示的字體也是 X Server 管理的一環。基本上, X 的設定檔都是預設放置在 /etc/X11 目錄下, 而相關的顯示模組或上面提到的總總模組,則主要放置在 /usr/X11R6 底下。 比較重要的是字型檔與晶片組,她們主要放置在:
- 字型: /usr/X11R6/lib/X11/fonts
- 顯示晶片: /usr/X11R6/lib/modules/drivers
其實想要知道你的系統裡面 X Server 到底來自哪個計畫,最簡單的方法就是利用 X 這個指令來取得版本啦。
您必須以 root 的身分執行下列指令:
有看到 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 之類的軟體也都是在修改這個設定檔而已。所以,我們就直接手動來查閱這個檔案吧。
注意一下,在修改這個檔案之前,務必將這個檔案給她備份下來,免的改錯了甚麼東西,導致連 X server
都無法啟動的問題啊。這個檔案的內容是分成數個段落的,每個段落以 Section 開始,以 EndSection 結束,
裡面含有該 Section (段落) 的相關設定值,例如:
至於常見的 section name 主要有:
上面設定完畢之後,就等於將整個 X Server 設定妥當了,很簡單吧。
如果您想要更新其他的例如顯示晶片的模組的話,就得要去硬體開發商的網站下載原始檔來編譯才行。
設定完畢之後,您就可以啟動 X Server 是看看囉。基本上,如果您的 Files 那個項目用的是直接寫入字型的路徑,
那就不需要啟動 XFS (X Font Server),如果是使用 font server 時,就要先啟動 xfs :
當然,您也可以利用 init 5 這個指令直接切換到圖形介面的登入來試看看囉。
[root@linux ~]# X -version |
| Tips: 其實 xorg.conf 與 XF86Config 這兩個設定檔的內容幾乎一模一樣,所以,即使您的 X 是 XFree86 的話,同樣可以適用底下的說明喔。 | ![]() |
Section “section name” |
- Module: 載入到 X Server 當中的須要模組;
- InputDevice: 包括輸入的 1. 鍵盤的格式 2. 滑鼠的格式;
- Files:設定字型所在的目錄位置等;
- Monitor:螢幕的格式,主要是設定水平、垂直的更新頻率;
- Device:這個重要,就是顯示卡晶片組的相關設定了;
- Screen:這個是在螢幕上顯示的相關解析度與色彩度的設定項目;
- ServerLayout:上述的每個項目都可以重覆設定,這裡則是此一 X server 要取用的那個項目值的設定囉。
[root@linux ~]# cd /etc/X11 |
[root@linux ~]# /etc/init.d/xfs start |
我們剛剛上面提到了要啟動 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 ,查閱檔案內容發現:
上面這個檔案的設定重點在 catalogue 那個設定項目當中。
您可以使用 chkfontpath 這個指令來列出目前支援的字型檔案,也可以直接修改呢!
而您如果還想要使用其他的特殊按鍵,則可以嘗試使用 xmodmap 哩!
[root@linux ~]# vi /etc/X11/fs/config |
我們由前面知道 run level 5 可以主動的進入 X 視窗系統,
而修改 run level 的設定資料可以查詢 /etc/inittab 內的這個參數:
看到了嗎?那個 id 開頭的項目就是開機啟動時預設的 run level 設定值,
至於那個 x 開頭的設定項目,則是在說明如果以 run level 5 啟動時,
需要額外執行的程式,就是 /etc/X11/prefdm 這個程式囉。
簡單分析一下 prefdm 檔案,內容其實也只是要藉由 /etc/sysconfig/desktop
這個設定檔來分析出預設執行的 Window manager 囉!
[root@linux ~]# vi /etc/inittab |
我們在上面提到了關於手動修改 xorg.conf 這個 X Server 的設定檔。但是,
如果我對於我的系統內的所有相關硬體都不知道的時候,也不曉得如何主動建立這個檔案時,
有沒有比較快速的方法可以來建立出這個設定檔呢? 是有的,同樣也是 Xorg 的功能之一,
藉由讓 Xorg 以預設的所有模組去進行整個系統的探索 (probe) 後,先主動嘗試建立一個陽春的 X Server
設定檔,然後您再藉由測試與手動修改來修訂這個設定檔呢。如何執行呢? 您必須以 root 的身分執行才行:
整個過程很簡單,就是利用 Xorg -configure 而已,如果是 XFree86 的話,同樣可以使用
XFree86 -configure 來建立起自己的設定檔。而以 Xorg 建立的設定檔會是 /root/xorg.conf.new
這個檔名,你可以在 run level 3 的環境下,輸入:
來測試一下這個設定檔是否能夠啟動呢? 如果輸入上面指令後,可以在 tty7 看到畫面的話,
表示這個設定檔就應該可以啟動 X Server 囉。果真如此的話,您就可以將這個檔案覆蓋成
/etc/X11/xorg.conf ,並且在自己手動手動微調裡面的設定值吧。
[root@linux ~]# Xorg -configure |
[root@linux ~]# X -config /root/xorg.conf.new
|
在很多情況下,您的 X Server 可能需要針對顯示卡晶片做個升級的。舉例來說,
您購買的顯示卡是最新的,但是 X Server 的預設模組並沒有支援。又或者您所需要的某些顯示晶片功能中,
預設的 X Server 的模組並無法提供。記得鳥哥在研究所所進行的研究中,有一項工作是需要在 Linux
伺服器上面啟用一個圖形處理軟體,該軟體雖然是自由軟體,不過,它需要 X Server 的 GLX 功能的支援,
我們實驗室的 NVidia 是有支援該功能的,偏偏預設的 X server 的 nv 模組並不提供該功能,
所以鳥哥就得到 NVidia 官方網站下載最新的驅動程式啦......
在這裡,鳥哥以時下最流行的顯示晶片製造商之一的 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 ,直接安裝它就好啦!
這個時候程式會將 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 這支程式,他還可以幫忙線上更新哩~
呵呵,真是方便,未來要升級到更新的顯示卡驅動程式,
直接利用 nvidia-installer 的功能即可。更多詳細的用法可以參考 nvidia-installer -h 的說明。
其實整個安裝很簡單,直接執行該下載檔案就好了! 下載的檔案名稱應該是: NVIDIA-Linux-x86-{version}-pkg1.run 他是一個含有原始碼的 shell script ,既然是 Shell script ,直接安裝它就好啦!
[root@linux ~]# sh NVIDIA-Linux-x86-1.0-7667-pkg1.run |
[root@linux ~]# nvidia-installer --update |
接下來就是要讓 X Server 去直接讀取剛剛安裝的模組了,所以,修改一下 xorg.conf 囉!
到此為止,就已將您的系統安裝上最新的 NVidia 的顯示卡驅動程式囉。
好囉,那您就趕緊試看看新的顯示卡晶片的功能吧。
而如果有什麼疑問的話,查閱一下 /var/log/nvidia 開頭的登錄檔看看吧! ^_^
[root@linux ~]# vi /etc/X11/xorg.conf |
- 以前可以進入 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 ?
- 利用 startx 可以在 run level 3 的環境下進入 X Window 系統。請問 startx 的主要功能?
- 如何知道您系統當中 X 系統的版本與計畫?
- 要瞭解為何 X 系統可以允許不同硬體、主機、作業系統之間的溝通,需要知道 X server / X client 的相關知識。 請問 X Server / X client / Window manager 的主要用途功能?
- 如何重新啟動 X
- 試說明 ~/.xinitrc 這個檔案的用途?
- 我在 FC4 的系統中,預設使用 KDE 登入 X 。但我想要改以 GNOME 登入,該怎麼辦?
- X Server 的 port 預設開放在?
- Linux 主機是否可以有兩個以上的 X
- X Server 的設定檔若不是 xorg.conf 就是 XF86Config 。 在該檔案中, Section Files 幹嘛用的?
- 我發現我的 X 系統鍵盤所輸入的字母老是打不出我所需要的單字,可能原因該如何修訂?
- 當我的系統內有安裝 GNOME 及 KDE 兩個 X Widnow Manager ,我原本是以 KDE 為預設的 WM,
若想改為 GNOME 時,應該如何修改 (假設在 FC4 的環境下)?
每個 distributions 的修改方式都不太一樣,以 FC4 為例,修改 /etc/sysconfig/desktop 內部,成為 GNOME 即可!而 SuSE 可以修改 /etc/sysconfig/windowmanager !
如果是在 run level 3 ,可以使用 startx 進入,至於 run level 5 ,則直接進入
tty7 即可進入 X Window 系統畫面。
其實整個 X 系統的啟動應該是由 xinit 這個指令所啟發的。但 xinit 需要 X Client 與 X Server
的相關參數,以提供進入 X Window System 的軟體與硬體管理,例如 xinit xinitrc -- xserverrc 等。
startx 即是在判斷使用者是否有自己的 ~/.xinitrc 及 ~/.xserverrc 的 script,
若有則直接取用,若無則到 /etc/X11/xinit 底下取用。
最簡單可以利用 root 的身份下達 X -version 即可知道!
X Server 主要負責螢幕的繪製,以及周邊輸入裝置如滑鼠、鍵盤等資料的收集,並回報給 X Client ;
X Client 主要負責資料的運算,收到來自 X Server 的資料後,加以運算得到圖形的數據,並回傳給 X Server,
讓 X server 自行繪製圖形。至於 Window manager 是一個比較特殊的 X Client ,他可以管理更多控制元素,
最重要的地方還是在於視窗的大小、重疊、移動等等的功能。
最簡單在 X Window System 下,直接按下 [alt]+[ctrl]+[backspace<--] 即可,
也可以 init 3 再 init 5,也可以關閉 X 後,再 startx 啟動等等。
當我們要啟動 X 時,必須要啟動 X Client 軟體端。這個 ~/.xinitrc 即是在客制化自己的 X Client ,
您可以在這個檔案內輸入您自己的 X Client 。若無此檔案,則預設以 /etc/X11/xinit/xinitrc 替代。
最簡單的作法,直接修改 /etc/sysconfig/desktop 內的設定值即可。
但如果你不是 root 無法修訂該檔案時,
亦可以在自己的家目錄參考 /etc/X11/xinit/xinitrc 的內容自行製作 ~/.xinitrc 檔案來修改!
X port 預設開放在 port 6000 ,而且稱此一顯示為 :0
是的!可以!第一個 X 通常在 tty7 ,第二個在 tty8 ,第三個在 tty9 ,依序類推。
第幾個是以啟動的順序來定義,並非 :0 , :1 的意思~特別分清楚。
相當重要!是設定顯示字型用的。而字型一般放置目錄在 /usr/X11R6/lib/X11/fonts/ 當中。
應該是鍵盤符號對應表跑掉了。可以修改 xorg.conf 或 XF86Config 檔案內,
關於 Keyboard 的 Option XkbLayout 項目,將他改為 us 即可!
- 王垠先生對 X Window 的介紹 http://learn.tsinghua.edu.cn/homepage/2001315450/x.html
- X.org 官方網站 http://www.x.org/
裡面有很多不錯的文件可以參考喔! - XFree86 官方網站 http://www.xfree86.org/
- 一篇對 X Window system 頗多關聯的文章 http://linux.xab.ac.cn/bbs/read.php?tid=352
- man Xorg
- man startx
- man xinit
- 關於 FC4 的圖形介面登入時,產生的一些 tty 畫面困擾:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161242
簡單的來說,就是 Intel 的顯示卡與 G550 的顯示卡硬體在 FC4 的編譯過程中, 可能無法對這兩種顯示卡做比較好的處理,導致 tty1 ~ tty7 都沒有東西跑出來。 可以將 FC3 的這個檔案 /usr/X11R6/lib/modules/libvgahw.a 複製到 FC4 底下的相同檔案去, 重新開機後,應該可以克服這個問題。該檔案可以在底下取得:
ftp://people.redhat.com/mharris/libvgahw.a
2003/02/12:第一次完成
2005/06/29:將舊的文章移動到 這裡 。如果您需要舊版的 xf86config 與相關的工具,則請前往該舊文章查閱!
2005/07/11:經歷了許多的時間,將主機的設定檔重複改了改,終於完成一些簡單的 X 測試!


