第七章﹕安裝 XWindow

818阅读 0评论2006-09-09 jmhyy
分类:LINUX

許多人都以為在 Linux (或 Unix) 裡﹐都要使用文字模式。“沒有友善圖形界面”居然成為某些人拒絕 Linux 的借口。其實﹐在 Unix 世界裡面﹐早就有圖形界面了﹐我們在 Linux 所使用的 X 系統是 XFree86 ﹐人們一般稱之為 X Window。 若論起歷史﹐X Window 比微軟的 Windows 系統還早呢﹗而且﹐在 X Window 裡面﹐可供選擇的界面多得很﹐這個概念可不同微軟視窗中換換桌面﹑顏色或字型那麼簡單哦。

首先﹐XFree86 是一個 network-based 的 client/server 架構。您有好幾種 X Server 可以供您選擇﹐它們分別配備不同的硬體。當您將 RedHat 7.1 的 CD2 放進機器並 mount 好之後﹐然後輸入﹕

ls /mnt/cdrom/RedHat/RPMS/XFree86*

您會看到輸出結果會包括下面的這些 rpm﹕

XFree86-3DLabs-3.3.6-35.i386.rpm
XFree86-8514-3.3.6-35.i386.rpm
XFree86-AGX-3.3.6-35.i386.rpm
XFree86-devel-4.0.3-5.i386.rpm
XFree86-doc-4.0.3-5.i386.rpm
XFree86-FBDev-3.3.6-35.i386.rpm
XFree86-I128-3.3.6-35.i386.rpm
XFree86-ISO8859-2-100dpi-fonts-4.0.3-5.i386.rpm
XFree86-ISO8859-2-Type1-fonts-4.0.3-5.i386.rpm
XFree86-ISO8859-7-100dpi-fonts-1.0-9.noarch.rpm
XFree86-ISO8859-7-1.0-9.noarch.rpm
XFree86-ISO8859-7-75dpi-fonts-1.0-9.noarch.rpm
XFree86-ISO8859-7-Type1-fonts-1.0-9.noarch.rpm
XFree86-ISO8859-9-100dpi-fonts-2.1.2-16.noarch.rpm
XFree86-ISO8859-9-2.1.2-16.noarch.rpm
XFree86-KOI8-R-100dpi-fonts-1.0-6.noarch.rpm
XFree86-Mach32-3.3.6-35.i386.rpm
XFree86-Mach64-3.3.6-35.i386.rpm
XFree86-Mach8-3.3.6-35.i386.rpm
XFree86-Mono-3.3.6-35.i386.rpm
XFree86-P9000-3.3.6-35.i386.rpm
XFree86-S3-3.3.6-35.i386.rpm
XFree86-S3V-3.3.6-35.i386.rpm
XFree86-SVGA-3.3.6-35.i386.rpm
XFree86-V4L-4.0.3-5.i386.rpm
XFree86-VGA16-3.3.6-35.i386.rpm
XFree86-W32-3.3.6-35.i386.rpm
XFree86-xf86cfg-4.0.3-5.i386.rpm
XFree86-Xnest-4.0.3-5.i386.rpm
XFree86-Xvfb-4.0.3-5.i386.rpm

以上這些套件﹐大部份是各種 X server ﹐我們可以選擇安裝不同的 X server 在機器上﹐也可以同時安裝多個 X server﹐以適應不同的硬體環境。然而﹐在設定 X 的時候﹐要求您非常了解系統的硬體資訊﹐尤其是顯示卡和熒幕。您最好能參考下表﹐填上所有您能夠獲得的資訊﹕

滑鼠 鍵盤
廠牌 Microsoft 廠牌 Acer
型號 IteliMouse 1.1A 型號 6511-TA
類型 PS/2 類型 104
顯示卡 熒幕
廠牌 Creative 廠牌 NEC
型號 Voodo Banshee 型號 C&C-15RI28
最高解析度 1280x1024 最高解析度 1024x768
晶片組 tdfx 水平掃瞄 30~64 KHz
記憶體 16MB 垂直掃瞄 47~120 Hz
RAMDAC速率  **不詳 **    
一般來說﹐除非您確定您使用的顯示卡可以被其他的 X Server 所支援﹐要不然﹐使用 XFree86-SVGA 都基本能滿足我們的要求。不過﹐對於一些最新的顯示卡﹐都比較難安裝。但這不是 XFree86 的錯﹐主要是因為硬體廠商沒公開他們的規格﹐但又沒主動提供 Linux driver 的緣故。有時候﹐使用 XFree86-VGA16 勉強可以看得到圖形﹐但出來的顏色和解析度都醜醜的﹐更別論要完全發揮 3D 功能了。然而﹐在許多討論板和 Linux 資源中心﹐都可以找到安裝某些型號 AGP 顯示卡的文章。不過﹐由於我沒有安裝 3D 卡的經驗﹐所以在這裡也就略過了。如果您有興趣﹐也可以看看 Linux HOWTO 裡面的﹕ 和 或許會有意外收穫。

一些比較新的顯示卡都暫時沒被內定支援﹐要設定起來可真是件非常棘手的事情。如果真的設定不起來﹐我建議您暫時放棄﹐或換張確定可以支援的顯示卡。又或者﹐期待日後新版的 XFree86 版本會支援﹐當然是沒人敢保證的啦。如果真如此﹐您只要到網路上面下載最新的 X server (如果有 rpm 更好)回來安裝就是了﹐您根本不需要重新安裝 Linux 系統的。

用 RPM 來安裝 X Server ﹐應該不會很困難的﹐除非您碰到 library 相關的問題﹐不過﹐您最好當成這是 RPM 的最佳鍛煉機會 ^_^ 然而﹐假如您不了解硬體資訊﹐或是硬體太新而暫時沒有現成的支援﹐要設定好一個 X Window 通常卻要費盡九牛二虎之力﹐有時候耗費整個星期的時間也設定不好﹐實不出奇。事實上﹐由於不同的硬體搭配﹐需要的設定也大相徑庭﹐也很難找到一個放之四海皆宜的安裝法門﹐總離不開不停的反復嘗試就是了。

下面﹐我打算用我的 Linux 機器做例子﹐和大家一起看看安裝 X Window 的過程。這裡﹐我也不打算用太新的硬體來做例子了﹐免得畫虎不成反類犬啦。

  1. 首先要設定的是 mouse﹐如果當初您在安裝的時候已經設定好了的話﹐應該就無需擔心了。假如您當初真的陽春到連滑鼠都沒裝﹐要是知道您的滑鼠類型和接到哪個連接埠口的話﹐也可以打輸入 mouseconfig 來設定﹕

    注意﹕在我的 RH7.1 上的實作測試中﹐跑完這個﹐似乎會讓後面的 Xconfigurator 程式不能順利執行﹐必須要手工的修改 /etc/sysconfig/mouse 檔案﹐將 ‘DEVICE=/dev/mouse’ 這行設定刪除掉才行。如果您碰到的問題和我一樣﹐那就要留意了。

  2. 再來﹐是關於 keyboard 的設定。不過﹐這機會不大吧﹖但假如您覺得真有這個必要﹐那就試試執行 kbdconfig 命令吧﹕

    不過﹐我相信您能選擇的修改非常有限啦。

  3. 無論如何﹐當 mouse 和 keyboard 都設定好之後﹐您可輸入﹕
    Xconfigurator
    (註﹕X 要大寫哦)

  4. 您看到的第一畫面將是“Welcome”說明﹕

    這個不用管它﹐直接 Enter 就好。

  5. 接著﹐就是“PCI Probe”畫面﹕

    如果您的顯示卡晶片組能夠被系統偵測到的話﹐在這裡您就看得到了。否則的話﹐恐怕要花的力氣就更多了。無論如何﹐您都要按‘OK’的了。

  6. 再來﹐您會看到“Monitor Probe”畫面﹕

    如果您的顯示能順利偵測得到﹐那是最理想的﹐然則直接到下一步。要不然﹐參考如下的設定﹕

    在“Monitor Setup”的清單之內﹐選擇適當的型號。如果清單裡面也沒有﹐您還可以用‘Custom’來指定﹔

    然後在接下來的“Custom Monitor Setup”裡為您的顯示熒幕指定好‘水平掃描頻率’﹐您可能參考手冊找到正確的數值。如果找不到或懶得去找的話﹐不妨選擇‘Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz ’﹐不太舊的熒幕都應該可以使用這個設定。如果您的熒幕真的太舊﹐建議從較低值開始。

    然後﹐您得為您的顯示器設定‘垂直掃描頻率’。這又要參考廠家手冊了﹗不想這樣做的話﹐挑最頂上那個最保險。不過﹐我知道我的熒幕可以使用‘50-100’這個範圍。

    熒幕的設定﹐在整個 X 設定中﹐是至為關鍵的﹐請一定要找到熒幕的準確數據。要不然﹐要嘗試的組合是非常多樣的﹐這需要您要有過人的耐性﹗

  7. 好了﹐當您完成熒幕的設定之後﹐系統會嘗試偵測您的顯示卡記憶體數量﹕

    如果在‘Video Memory’畫面裡面找到的顯示卡記憶體數量和實際不符的話﹐您可以自行選擇。不過﹐在我以前的一些測試中﹐曾碰到過 4MB 最多只能使用到2MB 的情形。假如您不確定是否可以接受您的實際設定﹐建議先從低數量開始往上調整。

  8. 再來﹐就是“Clockchip Configuration”畫面了﹕

    如果您不確定您的 Clockship 是否在選擇清單中的話﹐明智的選擇是 No Clockchip Setting (recomended)。除非﹐您肯定顯示卡所使用的 Clockchip 型號(如 S3 Trio 64+ 可以使用‘S3 GenDAC’)。

  9. 接著在‘Probe for clocks’畫面裡面﹐可以選擇‘Probe’來讓系統自動對熒幕的解析度和色深進行偵測。不過﹐在我的經驗裡﹐選擇‘Skip’更保險﹕

    這樣您可以確切的設定自己需要的解析度和色深﹕

    接下來﹐系統會嘗試對您的設定進行測試﹐我也建議您如此。當然﹐如果您實在太有信心了﹐可以選擇‘Skip’﹕

  10. 假如一切順利﹐接下來的畫面會出現十秒(因為擷取不到該畫面﹐所以這裡欠奉了)。如果您能清晰的看到文字﹐以及文字在畫面的正中央且與您所選擇的解析度一致﹐那您可以放心的選擇‘Yes’。如果您超過十秒還沒動作﹐就當您看不到文字了﹐那樣系統就會告訴您‘Error’﹐您可以‘Back’回去重新設定﹐也可以選擇‘Quit’退出。

  11. 如果您能看到上一步的文字﹐並且在十秒內按了‘Yes’﹐系統會問您是否想“一開機就直接進入 X Window 界面”﹐我建議您還是選擇‘No’好了。因為如果您選擇了 Yes 之後要回到文字模式的話要費一番功夫才行﹔但我們卻可以隨時從文字模式進入 X Window。當然﹐如果您非常喜歡用圖形界面﹐而且確實希望一開機就進入 X ﹐那就選擇 Yes 吧。

  12. 最後﹐當一切設定妥當之後﹐就可以結束並離開 Xconfigurator 程式了﹕

Okay﹐假如一切妥當的話﹐只要您輸入:

startx

然後﹐就可以看到美麗的 X Window 啦﹗如果您很不幸在 X Window 裡面卡住了﹐可以在任何時候嘗試按﹕

Ctrl + Alt + Backspace

好了﹐如果您夠幸運進入 X window﹐真要恭喜您了﹗別看我在這裡例子裡面選這按那的好像一點都不難﹐但事實上﹐當初要找出選擇什麼﹐按哪個鍵卻花費了不少時間呢﹗如果您發現您的 X Window 老設定不來﹐別喪氣﹐好多人都不能一次搞定呢。關於 X 系統的設定﹐一直都是 Linux 的一個難題﹐卻也沒有什麼捷徑﹐只能靠多嘗試了。

上面所教的 X Window 設定方法叫 “Xconfigurator”﹐好像只有 RedHat Linux 才有這個程式。如果您用其他套件的話﹐可以使用“XF86Setup”或“xf86config”這兩個程式。前者非常好用和直觀﹐因為是圖形界面的﹐這裡也不就多費唇舌了﹐如果您想使用它﹐可以找 XFree86-XF86Setup-xxx.xxx.xxx.rpm 回來裝﹐然後輸入 XF86Setup 就可以了。雖然 xf86config 不是那麼好用﹐但基本上都能在各發行套件中找得到。下面就讓我們用一個最陽春的組合( S3 Trio64+ 顯示卡配搭 640x480 熒幕)來看看 xf86config 是怎麼使用的。之所以使用個組合﹐完全是因為成功的機會大﹐如果您想看看 X Window 是怎麼個模樣﹐用這個組合保證您不會失望就是了。

  1. 在文字模式下面輸入﹕xf86config
  2. 然後在第一個畫面裡面﹐最後一行應該是這樣的﹕
    Press enter to continue, or ctrl-c to abort.
    我們按‘ Enter ’就是了。使用 xf86config 有一個不好的地方是﹕如果設定錯了﹐沒有機會回到上一步。但您可以在任何時候按 ‘Ctrl + c’鍵終止程式﹐然後重新再來。
  3. 然後是要您選擇滑鼠類型﹐因為我用的是 PS/2滑鼠﹐所以在“Enter a protocol number: ”那裡輸入 ‘4’ 。
  4. 然後會問您是否需要“三鍵模擬模式”﹐這個已經在第一章的“安裝 Linux”裡面說明過了﹐建議您在“Do you want to enable Emulate3Buttons? ”提問後後輸入‘y’然後 Enter。
  5. 接著問的是滑鼠設備位置﹐除非您更改過系統的設備檔﹐否則見到“Mouse device:”的時候﹐直接按‘Enter’即可。
  6. 再來是要您選擇鍵盤類型﹐現在的鍵盤一般都是 104 鍵或以上的﹐我這裡選擇 ‘3’。
  7. 然後是選擇國家代號﹐抱歉﹐暫時沒有中國或台灣的煩惱啦﹐通常用 ‘1’都不會有錯。
  8. 接下來的設定可以直接按 Enter﹐除非您想自己定義一個 layout 名稱。
  9. 接著問您要不要“XKEYBOARD 模式”﹐除非您真的很確定需要﹐要不然當我們看到“Do you want to use XKB﹖”的時候輸入‘n’就是了。
  10. 然後再按一次‘Enter’繼續。
  11. 接下來是選擇顯示器的“水平掃描頻率”﹐這裡我們選擇‘2’﹐即﹕“31.5 - 35.1; Super VGA, 800x600 @ 56 Hz”(別忘了我當前是在另外一台古老機器上哦)。
  12. 接下來是選擇顯示器的“垂直掃描頻率”﹐這裡我們選擇‘1’﹐即﹕“50-70”。
  13. 當您看到“Enter an identifier for your monitor definition:”的時候﹐您可以為您的顯示器做些註解﹐否則﹐直接‘Enter’就是了。
  14. 然後系統會問您是否要看一看顯示卡的資料庫﹐當然要啦﹐所以我們看到“Do you want to look at the card database?”的時候輸入‘y’。
  15. 然後我們就一直的按‘Enter’往下翻頁﹐直到找到自己的型號為止﹐如果錯過了﹐還是一直按‘Enter’等它繞一圈回來。這裡找到我的顯示卡是﹕“527 S3 Trio64V+ (generic)”﹐然後輸入“527”再按‘Enter’。
  16. 系統會顯示出您所做的選擇﹐按‘Enter’繼續就是了。
  17. 然後系統要您輸入顯示卡的記憶體數量﹐雖然我知道我的卡有 2MB﹐但我這裡輸入 1MB 就可以了﹐所以選擇‘4’﹐即﹕“2048K”。
  18. 接著系統會問您是否要為顯示卡做些註解﹐如果您不想花時間﹐直接按‘Enter’就是了。
  19. 接著我們得為熒幕選擇色深﹐這裡我選擇‘4’﹐即﹕“16 bits (65536 colors)”。
  20. 最後﹐系統會問您是否要保存設定﹐當然啦﹗要不我們花這麼多時間在這裡幹嘛﹖所以當看到“Shall I write it to /etc/X11/XF86Config﹖”的時候輸入‘y’。

Tips﹕您這裡要特別留意的是﹕RH7.1 預設使用的 XFree86 是 4.0.3-5 版﹐如果在 /etc/X11 目錄下面存在 XF86Config-4 的話﹐則不會使用 XF86Config 這個檔。您必須確定 XF86Config-4 不存在﹐或是將 XF86Config 複製為 XF86Config-4 ﹐才會讓剛纔的設定生效。

然後﹐您打 startx 看看就知道設定是否生效了。

現在﹐我們知道可以用 Xconfigurator﹑XF86Setup 以及 xf86config 來設定 X Window。但事實上﹐無論您用哪一個程式來設定 X Window﹐它們最終的目的是幫助您修改一個檔案而已。這檔案就是 XF86Config-4 了﹐如果這個檔不存在﹐或是在舊版本中﹐則是 XF86Config。您可以在 /etc/X11/ 目錄下面找到它。只要您懂得如何修改這個檔案的話﹐那麼剛才用來設定 X Window 的程式都可以不用了。不過﹐修改這個檔案可真的一點也不容易啦﹐如果您真的想碰它﹐最好做一個先備份。

在 XF86Config-4 這個檔案裡面﹐您需要注意的地方主要有三個 section ﹕monitordevicescreen

拿我們剛才用 Xconfigurator 設定的樣板來看﹐我們應該在 monitor 那個 section 裡看到有這樣的一些句子﹕

Section "Monitor"
    Identifier "Royal Information Company TRL/RIC DH-1570M/DH-1570"
    VendorName "Unknown"
    ModelName  "Unknown"
    HorizSync 29.0-70.0
    VertRefresh 47.0-120.0
    Option "dpms"
EndSection

比較剛纔我們在 Xconfigurator 所偵測到的數值﹐應該不難理解吧。

關於 device 的部份﹐則如下﹕

Section "Device"
    Identifier "Voodoo Banshee (generic)"
    Driver "tdfx"
    BoardName "Unknown"
EndSection

Section "Device"
    Identifier "Linux Frame Buffer"
    Driver "fbdev"
    BoardName "Unknown"
EndSection

事實上﹐您可以在這個檔案中定義多個相同的 section﹐但這些 section 只有在後面的 screen 中有使用到才有意義。這裡我們看到有兩個 device 的定義﹐分別使用 tdfx 和 fbdev 的 driver﹐前者會在後面的 screen 中使用。而 fbdev 通常可以讓您在找不到顯示卡驅動程式的時候﹐以 frame buffer 的形式來執行圖像程式﹐不過我這裡不討論如何設定 FB 了﹐請自行參考 HOWTO 文件吧。

在其它顯示卡的設定中﹐您甚至還可以看到額外的一些 “Option” 設定﹐如果您知道怎麼設定﹐可以一一修正過來的﹐尤其您要弄一些新卡的時候﹐常要手動的修改這些設定﹐但您必須參考說明文件進行。

再來看 screen 這個 section﹐您應該會看到諸如這樣的敘述﹕

Section "Screen"
    Identifier "Screen0"
    Device "Voodoo Banshee (generic)"
    Monitor "Royal Information Company TRL/RIC DH-1570M/DH-1570"
    DefaultDepth 16
    Subsection "Display"
        Depth 16
        Modes "1024x768"
    EndSubSection
EndSection

在這裡﹐‘Device’和‘Monitor’都要聯係到前面所設定的 Identifier 名稱(它們必須要一致)。至於其他的設定﹐則可以再行設定。有時候﹐您發現您設定的色深和解析度都不生效﹐可以考慮到這裡將那些您不想要的‘Subsection’註解掉就可以了。

一旦您的 X Window 能正確的跑起來﹐我強烈建議您為這個設定檔做一個備份。

Tips﹕假如您有裝過 (這裡不說怎麼裝了)﹐或許會碰到 X 的問題。您可以參考如下步驟解決﹕

  • 請到 vmware 網站下載 (或從本站 )﹐並存到磁碟片上。

  • 進入 vmware 的虛擬主機後﹐將當案複製到如下位址﹕
    cp /mnt/floppy/vmware_drv.o /usr/X11R6/lib/modules/drivers

  • 修改 /etc/X11/XF86Config-4 檔案﹕
    # 為 vmware 定義一個 device ﹕
    
    Section "Device"
            Identifier "VMware SVGA"
            Driver "vmware"
            BusID "PCI:0:15:0"
    EndSection
    ......
    
    # 將 Screen 裡的 Device 改為 vmware﹕
    
    Section "Screen"
            Identifier "Screen0"
           # Device "Voodoo Banshee (generic)"
            Device "VMware SVGA"
            Monitor "CustomConfiguration"
            DefaultDepth 16
            Subsection "Display"
                    Depth 16
                    Modes "800x600"
            EndSubSection
    EndSection
    
  • 這樣就可以進入 vmware 的 X 世界了﹗註﹕這些修改不要錯誤的在真實主機上面設定哦。

    不過﹐我發現如果重新啟動 vmware 的話﹐要先跑一次 Xconfigurator﹐再修改 XF86Config-4 才行﹐我不知道是什麼原因﹐但我會將這個檔備份起來﹐然後 copy 回去就好。

    至此﹐只要我們輸入 startx 就可以進入 X Window 了。同時﹐我們也知道有好幾種 X Server 可以在 Linux 裡面跑﹐相對而言﹐我們當然也有各種不同的 X Client 可以使用。在 X 系統的 client 端通常稱為 Windows Manager。RedHat 7.1 的預設 Windows Manage 會是 KDE2 (K Desktop Environment)。然而事實上﹐您除了 KDE 之外﹐還有許多 WM 可以選擇﹐例如 Gnome﹑AfterStep﹑Fvwm95 等等﹕

    KDE

    Gnome

    VMware

    註﹕嚴格來講﹐KDE 和 Gnome 屬於 X Environment ﹐而有別於 Window Manager。不過﹐具體的分別我這裡不詳細說明了﹐容我偷懶一下吧。

    這裡﹐我不詳細講述怎麼安裝 wm 了﹐您可以到網路上找到一大堆 wm 的 rpm 回來安裝。如果您想輸入 startx 後進指定的 WM﹐您可以修改自己 home 目錄的 ~/.xinitrc 檔案(如果此檔案不存在的話﹐自行建立吧)。下面是這個檔案的範例﹕

    #!/bin/bash
    # File Name: .xinitrc
    # -------------
    #exec gnome-session
    exec startkde
    #exec /usr/X11R6/bin/RunWM --AfterStep
    #exec /usr/X11R6/bin/RunWM --WindowMaker
    #exec /usr/X11R6/bin/RunWM --Fvwm95
    #exec /usr/X11R6/bin/RunWM --FvwmMWM
    #exec /usr/X11R6/bin/RunWM --icewm-light
    

    但是﹐在 RedHat 系統上﹐還有一個更簡單辦法哦﹐您只要執行下面命令就可以切換 WM 了﹕

    echo "KDE" > /etc/sysconfig/desktop

    換句話說﹐您只要將 /etc/sysconfig/desktop 裡面的 KDE 換成 GNOME 或其它 WM 名稱﹐然後打 startx 就可以了﹗這是在使用者 home 目錄中沒有 .xinitrc 檔案時所有使用的預設值。也同時影響到後面提到的 Display Manager 的選擇。

    嘿﹗還不趕快試試看您喜歡哪一個 WM ﹖

    不同的 WM 在工具安排和版面設置上都有很大差別。通常﹐像 KDE 和 Gnome 這些漂亮的界面﹐都非常吃記憶體﹐這當然會導致整體效能的損失。但如果您換成 WindowMaker 或是 Fvwm95 之類的﹐則會迅速得多。我建議您不妨多嘗試一些不同的 WM﹐然後找出最適合自己習慣和環境的版本來用。

    到這裡﹐相信大家已經知道什麼是 X server 什麼是 X Client 了﹐也假設您已經選擇好自己喜歡的 Window Manager。當您進入 X Window 之後﹐其操作界面都差不多﹐用慣了 Windows 的朋友﹐應該不會難適應的。因為我個人很少用 X ﹐ 所以我這裡就不介紹 X Window 的具體設定了。

    如果要結束 X Window﹐只要從左下方的按鍵開始選擇 Logout 就可以回到文字界面﹐也可以在任何時候按 Ctrl + Alt + Backspace 終止整個 X window 進程(這在 X 有問題的時候非常好用)。假如您已經在 X Window 裡面的話﹐您也可以隨時切換到文字界面去哦。因為 Linux 是真正的多人多工系統﹐在同一時間裡面﹐他允許您透過多個界面登陸系統。我們通常稱這樣的操作界面為 console。您只要按著 Ctrl + Alt + F# 就可以隨意切換您的 console ﹐其中的 F# 在 RedHat 上面通常是 F1 - F6 之間﹐而 F7 則保留給 X 顯示使用(唯一的)﹐它必須建立在 F1-F6 其中任何一個 console 上面。也就是說﹐在任何時候﹐您都可以在 F1 到 F6 之間切換 console﹐但同一時間內﹐只能從其中的一個 F# 進入 F7 。假如 F7 目前已經被其它 F# 聯係在一起﹐那您必須等當前的 X window 結束之後才能使用﹐先搶先贏就是了。

    要從一個 console 進入 X window﹐直接輸入 startx 就可以了﹐然後當前的界面會自動切換到 F7 去。當您從 X window 退出的時候﹐則自動回到原來的 console 界面去。不過﹐在任何時候﹐您都可以按 Ctrl + Alt + F# 進行 console 切換啦。

    再回到我們以前在第二章“開機與關機”裡面提到的 Run Level﹐您會知道 X window 其實是跑在 RunLevel 5 上面的﹐而 RunLevel 3 則是一般的 console 。您可以在 /etc/inittab 這個檔案裡面﹐修改下面的句子﹕

    id:5:initdefault:
    

    將 id: 後面的數字改為預設的 RunLevel﹐那麼在下次系統開機的時候﹐就自動進入您指定的界面中了。假如您設定為 5 ﹐那麼下次的登錄畫面則不是普通的文字 console﹐而會換成預設的 Display Manager

    嗯﹖或許您會問﹕Display Manager 是什麼﹖簡單的說﹐就是管理 X client 的程式。不如﹐按下面的步驟來實作體驗一下吧。

    確保您的預設 RunLevel 是 3 ﹐然後退出 X window 回到 console 中﹐也就是將 F7 釋放出來。然後輸入﹕

    xdm

    然後﹐您的所看到的就是 Display Manager 啦﹗基本上﹐DM 會詢問您的帳號和密碼﹐只有通過後才讓您進入 Window Manager。目前這個 xdm 就是這麼簡單﹐但如果您用其它 DM 的話﹐則會提供更多的選擇﹐例如﹐讓您選擇 X Server ﹑Window Manager﹐重新啟動 X server ﹑等等。

    不過﹐如果您一旦啟動了 xdm﹐當您退出 X window 的時候﹐將不會切會文字界面﹐而是回到 xdm 的界面﹐就算您按 Ctrl+Alt+Backspace 也一樣﹗那您要怎麼擺脫可惡的 xdm 呢﹖不難啦﹐當您在 xdm 界面的時候﹐按 Ctrl+Alt+F# 切換到其它 console﹐然後輸入﹕

    killall xdm

    這樣就回到您啟動 xdm 的 console 了。現在﹐再請您輸入﹕

    kdm

    哦﹐這個比 xdm 漂亮多了﹗它是 KDE 提供的 DM 啦﹐檢查看看您有哪些功能可以使用﹖完成後再到其它 console 將 kdm 砍掉﹐然後再輸入﹕

    gdm

    或許﹐您已經猜到這個 DM 是 Gnome 提供的吧。沒錯﹗只是功能和選項和 kdm 有些分別而已。至於 RunLevel 5 的預設 DM﹐則取決於 /etc/sysconfig/desktop 所指定的 WM﹕如果是 KDE﹐那麼就是 kdm﹔如果是 GNOME﹐則是 gdm。

    當我們認識了 Display Manager 之後﹐再讓我們看看 X 裡面的 Desktop 吧。

    現在﹐先讓我們進入任何一個 Window Manager﹐比方說 KDE 好了﹐您會發現在底下的工具欄中間部份﹐分別有著 1﹑2﹑3﹑4 這四個圖標﹕

    他們都是 X 裡面的 Desktop 號碼﹐預設上您是在第一個 Desktop 上面﹐所以數字 1 是反亮的。現在﹐請您按工具欄左邊第三個按鈕﹕

    這樣會開出一個 terminal 視窗﹐也就在 KDE 裡面的 konsole。這時候請您按 Desktop 上的數字 3﹐您會發現剛纔開啟的 konsole 不見了﹗哈哈﹐事實上﹐並不是不見了﹐而是您跑到另外一個 Desktop 中的緣故。如果您再仔細的回去看 Desktop 1 的圖標﹐您會隱約看到剛纔打開的視窗位置﹕

    當您再點回 Desktop 1 ﹐您就發現原來的 konsole 還在那裡啦~~~ ^_^ 如果您想將一個視窗顯示在所有的 Desktop 上面﹐您可以將視窗左上角的標題欄中第二個圖標按下﹐也就是那個長得像一個圖釘模樣的﹕。

        -->    

    然後﹐您再仔細看看底下工具欄中的 Desktop 圖標﹐這個視窗會出現在所有的號碼上﹔如果再按一些那個圖釘圖標將之復原﹐那麼視窗只顯示在原本的 Desktop 中。

        -->    

    嗯﹐如果您直接從 Microsoft 的 Windows Desktop 轉換過來﹐或許覺得這很新鮮吧﹗而事實上﹐令您更驚訝的還在後面呢﹗

    在這裡﹐我假設您的網路已經設定好了(假設 IP 為 192.168.100.23)﹐同時可以連線到同一網路的另外一台機器上(假設它的 IP 是 192.168.100.24)。如果您不知道如何設定網路﹐可以參考“Linux Servers”之第一章“”。當然﹐您也可以暫時到這裡結束這本章﹐等日後架設好自己的網路之後﹐才回來這裡繼續。

    首先﹐我們進入另外那台機器上的 X window﹐開啟一個 konsole﹐然後執行﹕

    xhost + 192.168.100.23

    完成後﹐回到您當前的機器上﹐執行﹕

    echo $DISPLAY

    您應該看到結果是“:0.0”﹐這是告訴您當前的顯示在本機的第一個 Display 的第一個 Screen 上面。事實上﹐我在前面已經提到過﹕X 系統是一個 network-based 的 client/server 結構。您所架設的 X server 可以服務網路上任何一台 X client﹐而在那些 client 上﹐您還可以設定多個 Display (不同的輸入設備)﹐之後還可以設定不同的 Screen (不同的熒幕)﹐而在 Screen 中也可以指定不同的 window (視窗)。這些設定都是可以改變﹐或另外指定的﹐比方說﹐您可以改變當前的 Display 設定﹕

    DISPLAY="192.168.100.24:0.0"

    這樣﹐您後面所執行的 X 程式﹐都將顯示在 192.168.100.24 那台主機的第一個 Display 的第一個 Screen 上面。現在﹐您可以執行﹕

    konsole &
    (第一次執行的時候或許會遇到 "RENDER" 的錯誤信息﹐您可以不用理會。)

    再下來﹐將您眼睛移到 192.168.100.24 那台機器上﹐您會發現剛纔啟動的 konsole 竟然可以開在另外一台機器上﹗太神奇了吧﹖Jack﹗而且﹐您可以完全在那台機器上操作它哦~~

    如果您要將顯示改回本機端﹐那麼再執行如下命令就可以了﹕

    DISPLAY=":0.0"

    不過﹐您還是可以用 -display 參數來指定視窗開在哪裡啦﹐大多數的 X 程式都支援這個參數﹕

    konsole -display 192.168.100.24:0.0 &

    接下來﹐讓我們再玩些更好玩的 X 設定。

    先回到自己的機器上﹐退出 X window﹐並且備份好如下檔案﹕/etc/X11/gdm/gdm.conf ﹐然後編輯它﹐修改如下部份﹕

    [xdmcp]
    Enable=1
    

    然後將 gdm 跑起來﹕

    gdm
    (後面測試若不成功則改為 xdm 試試看)

    再來﹐將您的操作轉移到 192.168.100.24 那台機器上﹐然後退出 X window﹐但保持著 "xhost +" 的狀態。然後執行﹕

    X -query 192.168.100.23

    請問您發現什麼﹖如果一切順利﹐您是在 192.168.100.24 這個 X client 連上了 192.168.100.23 的 X server﹗這情形就像 telnet 一樣﹕您的熒幕﹑鍵盤﹑滑鼠在 client 這邊﹐然而您所登錄的系統卻在 server 那邊。呵呵~~~ 這樣玩法﹐甚至可以跨平臺的﹐也就是說﹐如果您設定得宜﹐甚至可以在 Microsfot Windows 上面跑 X client ﹗如果您有興趣﹐可以抓 x-win 這個程式回來安裝(到網路上找 x-win511.exe )﹐以及 dm_x511a.zip 這支 patch 回來一起安裝在 Windows 的機器上﹐那就可以讓您連進 Linux 的 X Server 上了﹕

    更甚者﹐如果您架設有 Microsoft 的 Terminal Server﹐也同樣可以在 Linux 上面跑 Terminal Server 的 Client 哦﹗嗯﹐具體的設定我就不知道了﹐但可以告訴您我的確看過成功的例子。或者﹐您可以到網路上搜索一下 VNC 和 RDP 的文件。

    怎樣﹖X 系統是否很引人入勝呢﹗呵﹐還不止這些啦~~~ 下面﹐再介紹一個好玩的東西﹕xmx 。

    或許﹐您在電腦補習班上面都接觸過教學廣播系統吧﹐那些通常都是用硬體來實現的。假如您用 Linux 教學的話﹐只要網路接通了﹐用 X 就可以進行廣播教學而無須任何額外的硬體設備哦﹗有興趣嗎﹖您先到這個網站看看吧﹕

    假如您有興趣﹐不妨參考如下步驟來玩玩看﹕

    1. 下載如下檔案到 server 端﹕
      (或是)

    2. 將檔案解壓並進入安裝 source 目錄﹕
      tar zxvf xmx-2.1alpha.pl7.tar.gz
      cd xmx-2.1alpha.pl7

    3. 閱讀 README 和 README.install 等檔案。

    4. 進行修改﹕
      cd include
      ln -s /usr/include/gdbm/dbm.h .
      cd ..

    5. 執行安裝﹕
      xmkmf
      make World

    6. 不過﹐我發現事實上沒這麼簡單﹐這個安裝並不完整﹐您還必須動一些手腳﹕
      cd server
      vi Makefile
      將 DBMLIB = -ldbm 修改為﹕
      DBMLIB = -dbm
      vi error.c
      將第 41 行註解﹐變成這樣子﹕
      /* extern char *sys_errlist[]; */
      vi rgb.c
      將第 100 到 102 行註解起來﹐變成這樣子﹕
      /* #else
         if (dbminit(dbname) == 0)
            usedbm = 1; */ 
      以及將 205 和 206 如法泡制﹕
      /* #else
            item = fetch(item); */
      make
      make install

      cd ../clients
      vi xmxinit/xmxinit.c
      將第 591 行註解起來﹕
      /*  extern char *sys_errlist[]; */
      cd ..
      make
      make install

    7. 然後執行﹕
      mv ~/.xinitrc ~/.xinitrc.bak
      xinit
      xmxinit -- -floor 192.168.100.24:0
      icewm
      killall xmx

    有經驗的朋友應該不難看出我前面這些步驟錯漏百出﹐而且效果上也不盡完美﹐例如不能全熒幕顯示﹑不能在當前的 window manager 中執行﹑等等。不過﹐礙於能力所限﹐僅提供這些經驗給大家參考。希望能起到拋磚引玉的效果﹐等真正的 X 高手幫忙改良吧。

    嘿﹐別誤會哦﹗我這裡可不是要教您如何為系統進行中文化﹐而是簡單的讓您能用 netscape 瀏覽中文網頁而已。

    中文化一直是項非常龐大的工程﹐您有興趣的話﹐到 逛逛。現在﹐您只需 將需要的檔案抓回去﹐然後按如下步驟安裝﹕

    1. tar zxvf chinese.tgz
    2. cp -a chinese /usr/X11R6/lib/X11/fonts
    3. mkfontdir /usr/X11R6/lib/X11/fonts/chinese
    4. vi /etc/X11/XF86Config-4 ﹐在 Section "Files" 裡面加上﹕
      FontPath "/usr/X11R6/lib/X11/fonts/chinese/"
    5. 假如您已經在 X window 裡面﹐請退出﹐或重新啟動 X server 。
    6. 進入 X window 之後啟動 netscape﹐然後點選﹕Edit --> Preferences --> Fonts
      --> 於 For the Encoding 選擇 "Traditional Chinese (X-X-big5)"
      --> 於 Vaviable Width Font 選擇 "Ming 16 (Taipei)"
      --> 於 Fixed Width Font 選擇 "Ming 16 (Taipei)"
      --> OK 離開
    7. 關閉並重新進入 netscape ﹐如果遇到網頁不能正確顯示中文﹐那就從 View 中的 Character Set 那裡選擇 Traditional Chinese (Big5) 就可以了。

    沒錯﹗就這麼簡單 ^_^

    到這裡﹐您或許會問我﹕上面那些 X window 的圖片是怎麼抓下來的啊﹖

    好吧﹐好人做到底﹐下面就教您一個在 X window 裡面抓圖的法門﹕

    1) 以 root 身份修改 script (我暫時取名為 grapic)﹕

    #!/bin/bash 
    ID=`xwininfo | grep 'Window id' | awk '{print $4}'` 
    HDIR=$HOME/pics/ 
    NOW=`date +%s` 
    OUTFILE=$HDIR$NOW.tif 
    
    if [ -z $ID ]; then 
    echo "$0: Error: Can not get window id." 
    exit 1 
    fi 
    if [ ! -d $HDIR ]; then 
    echo "Make directory, $HDIR, for picture saving." 
    mkdir $HDIR 
    if [ ! "$?" = "0" ]; then 
    exit 2 
    fi 
    fi 
    xwd -frame -id $ID -out $OUTFILE 
    echo "Window capture is saved as $OUTFILE." 
    exit 0 
    

    2) 將 script 存於 /usr/bin 裡面﹐並加上執行權限﹕
    cp grapic /usr/bin
    chmod +x /usr/bin/grapic

    3) 回到普通用戶身份並進入 X window﹐(我這裡用 KDE2)﹐然後開一個 terminal﹐並輸入 grapic ﹐選擇一個視窗(可以是 termial 自己)﹐確定沒有任何錯誤信息﹐並能在 ~pics/ 目錄裡找到抓下來的圖檔。

    4) 然後在 desktop 上按右鍵﹐並選擇﹕'Create New' --> 'Link To Application ...'

    5) 在 'General' 裡面﹐將程式名稱改為 grapic﹐同時為自己選一個喜歡的 icon。

    6) 在 'Execute' 裡面的 'Command' 欄位填上﹕ /usr/bin/grapic 。

    7) 按 OK 完成(不必修改其它)。

    8) 將 Desktop 上面的 grapic 圖標擺好﹐點選它就能使用了﹗

    9) 如果要抓最大視窗(或任何當前視窗)﹐那可以按 KDE 工具列的最左邊的“OK”開始﹐然後選擇 'Run Command...' ﹐ 輸入 grapic 即可。

    這樣﹐您只要用 X window 裡面的 Gimp 就可以打開 ~/pics 裡面的圖檔進行編輯了。不過﹐我發現用上面方法抓到的視窗﹐會沒有邊框﹐抱歉﹐我不知道為什麼。假如您已經習慣使用 Gimp 的話﹐其實它本身就具備 Screen Shot 功能讓您抓取 X window 或整個 Desktop 的畫面﹐您點選 File 然後 Acquire 就可以找到。

    如果您用 KDE 的話﹐它本身也帶有一隻抓圖程式 KSnapshot ﹐您可以從 Start --> Graphics 找到它。不過﹐最方便還是幫它建立一個快捷鍵﹐步驟如下﹕

  • Start --> Configure Panel --> Menu Editor...
  • Graphics --> Screen Capture
  • Advanced --> Change
  • Custom Key --> 點選 Alt --> 點右邊的那個“空白圖標”--> 從鍵盤上按 PrintScreen 鍵
  • OK --> Apply
  • 完成

      日後﹐當您要抓當前視窗的時候﹐只要按著 Alt + PrintScreen 兩個鍵﹐就會彈出 KSnapshot 的視窗﹐然後按一下 Grab 按鈕﹐再點選當前視窗就可以抓下來﹐然後輸入路徑﹐並按 Save 按鈕就能將圖片以 png 格式存取起來了。非常方便哦﹗

      至於其它的 X 工具非常多﹐留給您自己慢慢發掘吧﹗

    1. 上一篇:第六章﹕編譯核心
      下一篇:第二章﹕NFS 和 NIS