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
<[email protected]> 所领导的程式设计师团队.
这个版本,叫作 XFree86, 可以取得给 System V/386, 386BSD, 和其他 x86 UNIX
实作,包括 Linux. 它包含所有需要的 binaries, 搭配档案, libraries, 以及工具.
XFree86 的完整资料是可以取得在 XFree86 的网站,
http://www.XFree86.org.
在本文件, 我们将一步步的描述如何在 Linux 安装和设定 XFree86,
但你自己将必须靠读 XFree86 本身公开的文件(这些文件以下会讨论)
来充实某些细节. 然而, 使用和熟练 X Window System
是远超出本文件□围
--- 基於这个目的,你应该在众多讨论使用 X Window System 的好书中,取一本来看.
如果你以前从未听过 Linux, 那□面有一些关於这系统[X Window System]的基本资料.
要找到这些资料的最好地方是在 Linux Documentation Project 的
home page 即
http://sunsite.unc.edu/LDP.
你能在那找到该文件之最新, 最新的版本在
http://sunsite.unc.edu/LDP/HOWTO/XFree86-HOWTO.html
Linux XFree86 HOWTO 的新版本将会定期性地张贴在
comp.os.linux.help 和
news:comp.os.linux.announce 以及
news.answers. 他们也将会更新到各种 Linux WWW 和 FTP 站,包括
LDP home page.
你总是能见到本文件的最新版本在全球资讯网,
藉由这个 URL
http://sunsite.unc.edu/LDP/HOWTO/XFree86-HOWTO.html.
如果你对这文件有问题或评论, 请自在的寄封信给 Eric S. Raymond,
[email protected].
我很欢迎任何建议或批评. 如果你在文件中找到错误.
请让我知道,使得我能够在下个版本修正它. 谢谢.
请 不要 寄信给我, 问些如何使你的显示卡和显示器能在 X 下, 正常运作的问题.
这个 HOWTO 的意图是快速,轻易的指引给 一般
安装, 它使用新的互动式设定器[interactive configurator].
如果你发生问题,浏览一下 XFree86 Video Timings HOWTO,
http://sunsite.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html.
这是 XFree86\s `Videomodes.doc\ 档案之最新的 HTML 版本.)
那文件记录我所知道, 关於解决设定上困难的事情.
如果它不能帮得上你,那我也帮不上.
在 XFree86 3.3版, 以下的显示晶片组是被支援的. 这文件包括你的显示介面卡
应该说明所使用的晶片组. 如果你在市场上拿到很新的显示卡,
或买一台新机器而附有显示卡, 应要求贩售商正确的指出该显示卡是哪家制造,型号,
及晶片组. 这可以要求贩售商为你去打技术支援电话; 一般贩售商会乐意这麽做.
大部分 PC 硬体贩售商会说这个显示卡是 ``标准 SVGA 卡\\, 它 \\应该能正常运作\\
在你的系统上. 解释一下你的软体 (提到 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 倍).
很有可能,你取得的 XFree86 是 Linux 发行套件的一部分,
在那种情形, 分开下载该软体是没有必要的. 在那情形下,你可以略过这一节.
XFree86 的 Linux 二元码版本可以在许多 FTP 站找到.
在 XFree86 站, 它是在
ftp://ftp.xfree86.org/pub/XFree86/current/binaries/Linux-ix86
( 当笔者在写的时候, 目前的版本是 3.2A; 最新版本则定期地释出).
在做任何其它东西之前,首先下载且执行 `preinst.sh\ 的 shell script.
这可以告诉你,在你继续你的安装之前,你需要在妥当位置有关的先决要素.
如果你直接下载 XFree86, 这个列表列出在 XFree86-3.3 软体套件中的档案.
以下 server 之一是必需的:
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.
以下全部档案都是必须的:
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.
以下档案是选择性的:
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
解开那些档案如下列指令:
gzip -dc X33bin.tgz | tar xfB -
/usr/X11R6
目录所包装起来的,
你需要确定 /usr/X11R6/bin
是有设在你的 path 中.
这可以藉由编辑你系统内定的 /etc/profile
或 /etc/csh.login
(此乃根据你,或在你系统中的其他使用者,所使用的 shell 而定).
或者你可以简单地修改 .bashrc
或 .cshrc
(视你的 shell 而定) 来把该目录加入你个人的 path .
你也需要确定 /usr/X11R6/lib
能被 runtime linker ld.so
找到.
为了这样,加这行
/usr/X11R6/lib
/etc/ld.so.conf
, 和以 root
身分去执行
/sbin/ldconfig
,
以前,要设定好 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] 那. 如果你发现当
gpm
设定的过程操作有选定符合你的显示卡一般型态的 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.
当你刚开始开启 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 > /tmp/x.out 2>&1
ctrl-alt-backspace
键的组合)
/tmp/x.out
的内容. X server 会报告任何警告及错误---举例,
记住你可以使用 ctrl-alt-numeric +
和 ctrl-alt-numeric -
来切换在 XF86Config
中的 Screen
段落的 Modes
行
所列出的显示模式. 若最高解析度模式不能看起来很适当,试试切到较低的解析度.
这至少会让你知道你的 X 设定这部分是正确的运作.
再者, 检查一下你显示器上的垂直与水平之大小/对准旋纽.
在很多情况下,当 X 刚开启时, 这些是需要调整的. 举个例子,
如果显示器好像有点偏一边时, 通常你能够使用显示器的控制来修正这个.
USENET 的 newsgroup comp.windows.x.i386unix
主要是在讨论有关 XFree86,
comp.os.linux.x
也是. 看一下 newsgroup
那些与你的显示卡有关的文章也许是个好主意---你也许刚好看到某些人跟你有相同的问题.
如果你的显示器能支援 1600x1200 -- 而用 XF86Setup
来安装之最高所能够支援的解析度是 1280x1024,
那麽你会需要亲自动手去尝试调整你的 X 之设定,以便取得最佳化的表现.
如果基於这个理由或其它理由, 而你想要亲自动手去尝试调整你的显示设定,
去看一下 LDP 的 XFree86 Video Timings HOWTO,
http://sunsite.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html.
(这就是 XFree86
的 `Videomodes.doc\ 档案之最新的 HTML 版本.)
根据内定的, X 使用 8-位元 色深[color depth]而有256色. 为避开这种限制,
很多应用程式配置他们自己的色彩对应图[colormap],导致瞬间颜色转换,
当游标在两个各拥有自己的色彩对应图之视窗移动时.
Arena WWW 浏览器就是这样子.
如果你想要使用先进的图形化的应用程式,256色也许不足够.
你可能需要有 16-位元 色深 (65,536 颜色). 但要注意的是,
不是所有应用程式都要工作在 16-位元 颜色下的.
你能简单地使用 16-位元 的色深而有 65K 的不同色,
藉由开启 X 时,用以下指令
startx -- -bpp 16
或者将下列这行
exec X :0 -bpp 16
摆进你的 .xserverrc 档案内. 然而,为了使这使能正常工作, 你需要有
screen
DefaultColorDepth 16
如果你使用 xdm,你可能需要改变 Xservers 档案, 其大概位置是在
/etc/X11/xdm/. 典型的设定档就只有一行, 看起来就像这样
:0 local /usr/X11R6/bin/X
加上
-bpp 16
:0 local /usr/X11R6/bin/X -bpp 16
再者,你会需要把色深 16 (bits)的显示加入你的 X 设定档的 `screen\ 段落部分.
一般你可以直接复制 8-bit显示部分,而改变色深大小.
较多颜色要你的显示卡在相同的时间内能转换成更多资料. 如果你的显示卡不能应付,
那麽就是解析度[resolution]或是更新率[refresh rate]必须要降低.
XFree 内定的是降低解析度. 如果你要保持解析度而降低更新率,
你必须新加入一行适当的 Modeline 到你的 XF86Config 档案中,
其定义具有最低更新率下的解析度.举个例子, 取代旧值
Modeline \"1024x768\" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
Modeline \"1024x768\" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync.