HOWTO:The Linux XFree86

作者: Eric S. Raymond

最新版本:2001-09-09

轉為 Wiki: Ping (ping 'at' pingyeh 'dot' net), 2003 年 11 月 27 日


本文件描述如何取得,安裝,與設定 Linux 上的 X Window System (X11R6), XFree86 3.3 版. 它是一步一步設定 XFree86 於你的系統上.



  1. 介紹
    1. 其他資訊來源
    2. 這文件的新版本
    3. 回函與訂正
  2. 硬體需求
  3. 安裝 XFree86
  4. 設定 XFree86
    1. 一般設定
    2. 解決困難
    3. 自定設定
    4. 使用 16-位元 的顏色
  5. 執行 XFree86
    1. 使用的條件
    2. 感謝
  6. 翻譯

1. 介紹

X Window System 是 UNIX 系統上強大的 (有些人可能會說極龐大而且非常複雜的) 圖形化作業環境. 原本的 X Window System 程式碼是 MIT 所發展的; 從那時起商業販售者就已經使 X 成為UNIX 平台上的工業標準. 實際上, 在世界上每台 UNIX 工作站可以跑 X Window system 的各版本.

一個 MIT X Window System version 11, release 6 (X11R6) 在 80386/80486/Pentium UNIX systems 上免費,可重發行的移植版本已經在發展, 由原本 David Wexelblat [WWW] [email protected] 所領導的程式設計師團隊. 這個版本,叫作 XFree86, 可以取得給 System V/386, 386BSD, 和其他 x86 UNIX 實作,包括 Linux. 它包含所有需要的 binaries, 搭配檔案, libraries, 以及工具.

XFree86 的完整資料是可以取得在 [WWW] XFree86 的網站,

在本文件, 我們將一步步的描述如何在 Linux 安裝和設定 XFree86, 但你自己將必須靠讀 XFree86 本身公開的文件(這些文件以下會討論) 來充實某些細節. 然而, 使用和熟練 X Window System 是遠超出本文件範圍 --- 基於這個目的,你應該在眾多討論使用 X Window System 的好書中,取一本來看.

1.1. 其他資訊來源

如果你以前從未聽過 Linux, 那裏面有一些關於這系統[X Window System]的基本資料. 要找到這些資料的最好地方是在 Linux Documentation Project 的 home page 即 [WWW] http://sunsite.unc.edu/LDP. 你能在那找到該文件之最新, 最新的版本在 [WWW] http://sunsite.unc.edu/LDP/HOWTO/XFree86-HOWTO.html

1.2. 這文件的新版本

Linux XFree86 HOWTO 的新版本將會定期性地張貼在 [WWW] comp.os.linux.help[WWW] news:comp.os.linux.announce 以及 [WWW] news.answers. 他們也將會更新到各種 Linux WWW 和 FTP 站,包括 LDP home page.

你總是能見到本文件的最新版本在全球資訊網, 藉由這個 URL [WWW] http://sunsite.unc.edu/LDP/HOWTO/XFree86-HOWTO.html.

1.3. 回函與訂正

如果你對這文件有問題或評論, 請自在的寄封信給 Eric S. Raymond, [WWW] [email protected]. 我很歡迎任何建議或批評. 如果你在文件中找到錯誤. 請讓我知道,使得我能夠在下個版本修正它. 謝謝.

請 不要 寄信給我, 問些如何使你的顯示卡和顯示器能在 X 下, 正常運作的問題. 這個 HOWTO 的意圖是快速,輕易的指引給 一般 安裝, 它使用新的互動式設定器[interactive configurator]. 如果你發生問題,瀏覽一下 XFree86 Video Timings HOWTO, [WWW] http://sunsite.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html. 這是 XFree86's `Videomodes.doc' 檔案之最新的 HTML 版本.) 那文件記錄我所知道, 關於解決設定上困難的事情. 如果它不能幫得上你,那我也幫不上.

2. 硬體需求

在 XFree86 3.3版, 以下的顯示晶片組是被支援的. 這文件包括你的顯示介面卡 應該說明所使用的晶片組. 如果你在市場上拿到很新的顯示卡, 或買一台新機器而附有顯示卡, 應要求販售商正確的指出該顯示卡是哪家製造,型號, 及晶片組. 這可以要求販售商為你去打技術支援電話; 一般販售商會樂意這麼做. 大部分 PC 硬體販售商會說這個顯示卡是  在你的系統上. 解釋一下你的軟體 (提到 Linux 和 XFree86!) 並沒有支援所有顯示晶片組, 所以你必須要有詳細的資料.

你也能得知你的顯示卡藉由執行 SuperProbe 程式, 它包含於 XFree86 套件. 這在以下會有更詳盡的說明.

以下標準 SVGA 晶片組有被支援:

以下具有加速特性的 SVGA 晶片組也被支援:

使用這些晶片組的顯示卡有被支援所有匯流排型式[bus type],包括 VLB 和 PCI.

除了 Avance Logic, MX 和 Video 7 晶片組只有支援 256 色模式, 以上其他全都同時有支援 256 色和 單色模式. 若你的顯示卡裝有足夠的 DRAM, 以上晶片組很多都有支援每單位像素[pixel] 16 及 32 位元[bits] 模式 (特別是一些 Mach32, P9000, S3 和 Cirrus boards). 通常的設定是每單位像素 8 位元 (亦即 256 色).

單色的伺服程式[monochrome server]也支援 generic VGA cards, Hercules monochrome card, Hyundai HGC1280, Sigma LaserView, 和 Apollo monochrome cards. 在 Compaq AVGA 的部分, 只有 64k 顯示記憶體是有支援給單色伺服程式, 而 GVGA 還未對超過 64k 做測試.

這列表毫無疑問地將會隨時間而擴增. XFree86 目前版本的 release notes 應該會包含完整所支援顯示晶片組的列表.

XFree86 發展者所面臨的一個問題是, 某些顯示卡製造商為能定出驅動該卡所使用的時脈頻率,而使用非標準機制. 這些製造商中,有些要嘛就沒有公開,如何程式設計這張卡的規格; 要嘛他們就是要求發展者簽一張決不可洩露的聲明書,以取得該資料. 這明顯地限制 XFree86 軟體的自由散佈, 有些事是 XFree86 發展團隊所不樂意去做的. 有好長的一段時間,這是個問題發生在 Diamond 所製造的某些顯示卡上, 但當 XFree86 的 3.1 版時, Diamond 已經開始與這個發展團隊合作,而釋出免費的驅動程式給這些卡.

在 Linux 下 XFree86 所建議架設是一台 486 或更好, 而且至少搭配 8 megabytes RAM, 和具有上述所列出晶片組的顯示卡. 為了最好的表現, 我們建議使用加速卡, 像是張 S3-chipset card. 你應該檢查對於 XFree86 的文件, 而且在決定冒險一試的心態下,購買昂貴的硬體之前,請先檢查你的特定卡是有支援的.

一方面值得一提的是, Matt Welsh (這個 FAQ 的發起人) 的個人 Linux system 是一台 486DX2-66, 20 megabytes RAM, 裝配有 2 megabytes DRAM 的 VLB S3-864 chipset card. 他在該機器上跑 X benchmarks ,也有在 Sun Sparc IPX workstations 上跑. Linux system 大略是比 Sparc IPX 快 7 倍 (好奇的窺探, 在 Linux 下而用該顯示卡的 XFree86-3.1 大約跑出 171,000 xstones; Sparc IPX 則大約是 24,000). 一般而言, 在使用加速 SVGA 卡的 Linux system 下的 XFree86 比起建立在商業上的 UNIX workstations (它通常採用簡單的 framebuffers 來圖形顯示) 會有較佳的表現.

你的機器至少需要 4 megabytes 的 physical RAM, 和 16 megabytes 的 virtual RAM (舉例而言, 8 megs physical 和 8 megs swap). 記住你有的 physical RAM 越多,系統當發生記憶體短缺而要交換[swap]存取硬碟機會越少. 因為 交換 本質上是慢的(磁碟相較記憶體是蠻慢的), 要流暢地跑 XFree86 的話, 有 8 megabytes RAM 或更多是必要的. 16 megabytes 更好. 具有 4 megabytes 的 physical RAM 的系統可能比跑 8 megs 或更多的系統慢 許多 (甚至可高達 10 倍).

3. 安裝 XFree86

很有可能,你取得的 XFree86 是 Linux 發行套件的一部分, 在那種情形, 分開下載該軟體是沒有必要的. 在那情形下,你可以略過這一節.

XFree86 的 Linux 二元碼版本可以在許多 FTP 站找到. 在 [WWW] XFree86 站,

在做任何其它東西之前,首先下載且執行 `preinst.sh' 的 shell script. 這可以告訴你,在你繼續你的安裝之前,你需要在妥當位置有關的先決要素.

如果你直接下載 XFree86, 這個列表列出在 XFree86-3.3 軟體套件中的檔案.

以下 server 之一是必需的:

X338514.tgz

Server for 8514-based boards.

Server for AGX-based boards.

Server for the Number Nine Imagine 128.

Server for Mach32-based boards.

Server for Mach64-based boards.

Server for Mach8-based boards.

Server for monochrome video modes.

Server for P9000-based boards.

Server for S3-based boards.

Server for the S3 ViRGE and ViRGE/VX (considered beta)

Server for Super VGA-based boards.

Server for ET4000/W32-based boards.

如果你不知道要取哪一個,就取 VGA16 server,X33VGA16.tgz. 不管怎樣,你都要下載這一個,因為你將需要它在下個步驟去執行自動設定工具.

以下全部檔案都是必須的:

preinst.sh

Pre-installation script

Post-installation script

The rest of the X11R6 binaries.

Config files for xdm, xinit and fs.

Documentation.

Manual pages.

75dpi, misc and PEX fonts

Shared X libraries and support files.

XF86Setup utility

Server for VGA/EGA-based boards.

以下檔案是選擇性的:

X33f100.tgz

100dpi fonts

Cyrillic fonts

Other fonts (Chinese, Japanese, Korean, Hebrew)

Scalable fonts (Speedo and Type1)

Font server and config files

X header files, config files and compile-time libs

X server LinkKit

PC98 X server LinkKit

Nested X server

X print server

Virtual framebuffer X server

PostScript version of the documentation

HTML version of the documentation

那個 XFree86 目錄應該包含有目前版本的 release notes 在 RELNOTES. 對於安裝細節,可查閱於該文件[RELNOTES].

所要安裝 XFree86 的工作的是取得以上檔案, (以 root 身分) 建立 /usr/X11R6 目錄, 和從 /usr/X11R6 解開那些檔案如下列指令:

記住這些 tar 檔案是相對於 /usr/X11R6 目錄所包裝起來的, 所以很重要的是要在那裏解包包裝.

你需要確定 /usr/X11R6/bin 是有設在你的 path 中. 這可以藉由編輯你系統內定的 /etc/profile 或 /etc/csh.login (此乃根據你,或在你系統中的其他使用者,所使用的 shell 而定). 或者你可以簡單地修改 .bashrc 或 .cshrc (視你的 shell 而定) 來把該目錄加入你個人的 path .

你也需要確定 /usr/X11R6/lib 能被 runtime linker ld.so 找到. 為了這樣,加這行

到這個檔 /etc/ld.so.conf, 和以 root 身分去執行 /sbin/ldconfig,

4. 設定 XFree86

4.1. 一般設定

以前,要設定好 XFree86 以便能使用你的滑鼠, 鍵盤, 顯示器, 和顯示卡, 是辛苦的差事, 需要大量的親自動手去設定和嚐試調整[hand-hacking] 一個很複雜的設定檔案, 那可說是一種不可言傳的藝術. 現在不再需要了; 在3.2/3.3版後,使這個過程幾乎沒什意義了. 你所要做的是開啟 XF86Setup 程式.

這程式乃依賴現今所有新出貨而且搭配具 EGA/VGA 能力之顯示器的PC硬體情況而定. 它採用 VGA16 server 而且利用它以最低階共通性 640x480 模式來開啟 X. 然後它執行互動式程式,它帶你經過連續五個設定面板 -- mouse, keyboard, (video) card, monitor, 和 `other' (各式各樣的 server 選項). 全部過程相當簡單.

(如果你是用 Red Hat Linux, 你可以使用另一個叫作 xf86config 程式. 它的作用非常像是 XF86Setup ,但是其本身不是使用 X 介面與 VGA16 server.)

有一小點要記住的是,如果你像大多數人使用目前的PC, 你的鍵盤實際上是 XF86Setup 所呼叫的 Generic 102-key PC (intl)' 而不是預定的 Generic 101-key PC'. 如果你選擇預定的(101), 在你鍵盤[keyboard]的極右邊(數字及其相關 [numeric keypad and friends])上的按鍵群[key cluster]可能會沒有作用.

如果你不確定你顯示器的型式[monitor type],你可以連續試試它所列出的型式. 就依你的習慣由上往下試(較上面的選項所包含的是較低 dot-clock 速度, 而且對硬體要求也比較低). 如果發生了混亂或嚴重地扭曲變形[distorted]的圖形時, 請往回試[Back off]. 小部分的扭曲變形 (圖形稍太大,稍太小,或稍偏離中心) 不是什麼大問題; 你是可以馬上藉由微調[fine-tuning]此 mode 來修正.

再者, 當程式打開 xvidtune 允許你去調整[tweak]你的顯示模式[video mode], 別讓初始的警告視窗,使你感到緊張. 現在多頻顯示器[multisync monitors] (不像他們以前是用定頻的) 不會因為用這方式而就輕易損壞.

XF86Config 可以假設你的滑鼠裝置是在 /dev/mouse. 如果你發現這沒作用時,你可能需要連結 /dev/mouse 到滑鼠實際所在 /dev/ca[01] 那. 如果你發現當

正在執行,而 XFree86 給你一個 "mouse busy" 的錯誤訊息時, 那你則需要連結到 /dev/ttyS[01] 來取代.

設定的過程操作有選定符合你的顯示卡一般型態的 server (像是 XF86_VGA16, XF86_Mach64, or XF86_S3) 以及設定 XF86Config 檔案, 而 server 開始啟動時會讀取該檔中的你安裝時已指定的特殊參數. XF86Config 的所在位置會隨時你的 OS 不同而變, 但有個地方可找找看是在 /etc/X11.

在較早的 XFree86 版本, XF86Setup 會直接將 `X' 指令連接所選擇的 server. 在最近的版本, 取而代之的是將 `X' 連接到叫 Xwrapper 的 set-user-id wrapper 程式. 這想法是所有的 setuid root stuff 都落在 Xwrapper 之中, 所以 server 就不必在用 setuid root.

4.2. 解決困難

當你剛開始開啟 X server, 有些項目偶爾會沒有設定很正確. 這總是幾乎會由你的設定檔案中的一些問題所引起的. 通常在是顯示器的 timing values 不正確, 或顯示卡的 dot clocks 設定不正確. 少數問題可以藉由 xvidtune 來解決; 當螢幕上實在是混亂不清楚時,通常是表示 你需要回到 XF86Setup 而選擇功能比較低的顯示器型式[monitor type].

如果你的顯示好像捲曲[roll], 或邊邊模糊不清[fuzzy], 這很清楚地表示顯示器的 timing values 或 dot clocks 是錯的. 再者, 要確定你是正確地指出你的顯示卡晶片組, 在 XF86Config 中的 Device 段落之其它項目也是如此. 絕對要確定你是使用正確的 X server ,而且 /usr/X11R6/bin/X 有符號連結 [symbolic link]到這個 server.

如果發生其它所有失敗的情況, 試試 赤裸地[bare] 開啟 X; 也就是, 使用像這樣的指令:

然後你可以砍去 X server (使用 ctrl-alt-backspace 鍵的組合) 而且檢查 /tmp/x.out 的內容. X server 會報告任何警告及錯誤---舉例, 如果你的顯示卡沒有一個 dot clock 可相符合你顯示器所支援的模式.

記住你可以使用 ctrl-alt-numeric + 和 ctrl-alt-numeric - 來切換在 XF86Config 中的 Screen 段落的 Modes 行 所列出的顯示模式. 若最高解析度模式不能看起來很適當,試試切到較低的解析度. 這至少會讓你知道你的 X 設定這部分是正確的運作.

再者, 檢查一下你顯示器上的垂直與水平之大小/對準旋紐. 在很多情況下,當 X 剛開啟時, 這些是需要調整的. 舉個例子, 如果顯示器好像有點偏一邊時, 通常你能夠使用顯示器的控制來修正這個.

USENET 的 newsgroup comp.windows.x.i386unix 主要是在討論有關 XFree86, comp.os.linux.x 也是. 看一下 newsgroup 那些與你的顯示卡有關的文章也許是個好主意---你也許剛好看到某些人跟你有相同的問題.

4.3. 自定設定

如果你的顯示器能支援 1600x1200 -- 而用 XF86Setup 來安裝之最高所能夠支援的解析度是 1280x1024, 那麼你會需要親自動手去嘗試調整你的 X 之設定,以便取得最佳化的表現.

如果基於這個理由或其它理由, 而你想要親自動手去嘗試調整你的顯示設定, 去看一下 LDP 的 XFree86 Video Timings HOWTO, [WWW] http://sunsite.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html. (這就是 XFree86 的 `Videomodes.doc' 檔案之最新的 HTML 版本.)

4.4. 使用 16-位元 的顏色

根據內定的, X 使用 8-位元 色深[color depth]而有256色. 為避開這種限制, 很多應用程式配置他們自己的色彩對應圖[colormap],導致瞬間顏色轉換, 當游標在兩個各擁有自己的色彩對應圖之視窗移動時. Arena WWW 瀏覽器就是這樣子.

如果你想要使用先進的圖形化的應用程式,256色也許不足夠. 你可能需要有 16-位元 色深 (65,536 顏色). 但要注意的是, 不是所有應用程式都要工作在 16-位元 顏色下的.

你能簡單地使用 16-位元 的色深而有 65K 的不同色, 藉由開啟 X 時,用以下指令

或者將下列這行

擺進你的 .xserverrc 檔案內. 然而,為了使這使能正常工作, 你需要有

段落在你的 XF86Config 檔案中:

如果你使用 xdm,你可能需要改變 Xservers 檔案, 其大概位置是在 /etc/X11/xdm/. 典型的設定檔就只有一行, 看起來就像這樣

加上

到這 startup 選項:

再者,你會需要把色深 16 (bits)的顯示加入你的 X 設定檔的 `screen' 段落部分. 一般你可以直接複製 8-bit顯示部分,而改變色深大小.

較多顏色要你的顯示卡在相同的時間內能轉換成更多資料. 如果你的顯示卡不能應付, 那麼就是解析度[resolution]或是更新率[refresh rate]必須要降低. XFree 內定的是降低解析度. 如果你要保持解析度而降低更新率, 你必須新加入一行適當的 Modeline 到你的 XF86Config 檔案中, 其定義具有最低更新率下的解析度.舉個例子, 取代舊值

換成

這裏的魔術數字 75 和 65 是各個時脈率[clock rates], 那些是你找到 X 記錄在你的 .X.err 檔案裏的. 查詢一下在 XF86 文件的 monitors 檔案,有關在 16 位元色深下 最適合你的顯示卡能夠傳送最大時脈率的 Modelines.

5. 執行 XFree86

當你的 XF86Config 已設定, 你準備開啟 X server 試用一下, 請確定 /usr/X11R6/bin 有設在你的 path 中.

開啟 XFree86 的指令是 startx 這是 xinit 的前端介面[front-end](在其他 UNIX 系統,你會習慣使用 xinit).

這指令將會開始 X server 而且執行在你根目錄[home directory]下之 .xinitrc 檔案內所找到的指令. .xinitrc 只是個包含所要執行 X clients 的 shell script. 如果這個檔案不存在, 那麼系統內定的 /usr/X11R6/lib/X11/xinit/xinitrc 將會被使用.

一個標準 .xinitrc 檔案看起像這樣:

這個 script 將開啟兩個 xterm clients, 一個 oclock, 而且設定根視窗[root window](背景)的顏色成 深藍色[midnightblue]. 然後它開啟視窗管理程式 fvwm2. 注意 fvwm2 是用 shell 的 exec 述句[statement]所執行的; 這造成 xinit 程序[process]被 fvwm2 取代. 一旦 fvwm2 程序離開, X server 將關畢. 你可以使用 root 表單[menus] 來使 fvwm2 離開: 在桌面背景上放開 mouse 的第一個按鍵---這將出現下拉表單,那將讓你可以離開 Exit Fvwm2.

確定在 .xinitrc 中的最後面的指令是以 exec為開頭的, 而那不會被放在背景執行的 (而在那行後頭,沒有再接著什麼動作). 否則, X server 關畢瞬間, 將會再去執行 .xinitrc 檔案中的 client.

此外, 你亦可以按 ctrl-alt-backspace 之組合鍵而離開 X. 這會直接砍掉 X server, 離開視窗系統.

以上是非常,非常簡單的桌面設定. 要跑許多好程式及設定是可以在你的 .xinitrc 檔案中稍加修改即可做到.

如果你是新接觸 X Window System 作業環境; 我們強烈建議你選一本好書, 像是 Niall Manfield 著作的 The X Window System: A User's Guide(Addison-Wesley 1990). 使用與設定 X 實在是比較深入所以很難能涵蓋在這. 看一下 xterm, oclock, 和 fvwm2 的 man pages, 就從這資料開始吧.

5.1. 使用的條件

本文件 1996 年的版權歸屬於 Eric S. Raymond. 你可以自由地使用, 散布, 與複製, 只要你:

這限制目的是保障一些潛在的讀者, 避免看到的是舊有的或損壞的版本. 如果你認為你有例外的情況, 可以向我詢問一下.

5.2. 感謝

This document was originated by Matt Welsh in the dim and backward abysm of time. Thanks, Matt!

6. 翻譯

last edited 2004-12-25 08:45:57 by PingYeh