X Window 的簡易設定與相關知識介紹
本文資料主要針對 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 加速的功能時,理解這些咚咚,就很重要了!
[root@linux ~]# startx [X client option] -- [X server option] [root@linux ~]# startx -- -depth 16startx 後面接的參數以兩個減號『--』隔開,前面的是 X Client 的設定,後面的是 X Server 的設定。 因為色彩深度是與 X Server 有關的,所以參數當然是寫在 -- 後面囉,於是就成了上面的模樣! 由於 startx 後面加的參數可以取代預設值,因此您就可以使用 16 位元色彩度進入 X 囉。
[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 這個指令一般!這樣瞭了嗎?
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 啊!
xclock -geometry 100x100-5+5 &
xterm -geometry 80x50-50+150 &
exec /usr/X11R6/bin/twm
意思就是說,我啟動了 X ,並且同時啟動 xclock / xterm / twm 這三個 X clients 喔!
如此一來,您登入 X 就有這三個咚咚可以使用了!如果忘記加上 & 的符號,那就.....
會讓系統等待啊,而無法一次就登入 X 呢!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 以後的終端介面使用方式有比較清楚的瞭解~加油!
[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 之類的軟體也都是在修改這個設定檔而已。所以,我們就直接手動來查閱這個檔案吧。
Section “section name”
…….. <== 與這個 section name 有關的設定項目
……..
EndSection
至於常見的 section name 主要有:
[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 這個指令直接切換到圖形介面的登入來試看看囉。
[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 哩!
[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 囉!
[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 ,並且在自己手動手動微調裡面的設定值吧。
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這樣你的螢幕就能夠好好的處理處理了! ^_^
[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 的說明。
[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 開頭的登錄檔看看吧! ^_^