Linux中文HOW TO 4---XFree86(1)

尼雅
-------------------------
CRH  在技术学院 管理研究所 资管学程
m8109009@cs.ntit.edu.tw
-------------------------
The Linux XFree86 HOWTO, version 1.6
------------------------------------------------------------------------------
by Helmut Geyer (geyer@kalliope.iwr.uni-heidelberg.de)
with help from Dirk Hohndel (hohndel@informatik.uni-wuerzburg.de)
and David E. Wexelblat (dwex@aib.com)
此文件是描述如何获得、安装、构置(configure) linux系统的XFree86[TM]
2.0 版。XFree86 是x视窗11r5 的加强版,主要是在支援各种以intel i386/486 为硬
体平台的unix系统,当然这也包括了linux。目前它支援相当多的影像硬体,并且它也
修正了许多mit 标准版x视窗的bugs。
此文件的目的是企图帮助 Linux 使用者如何安装与构置 XFree86 2.0 版,更进一步
的目的是回答一些有关於 x 的使用和程式设计的问题。
请先阅读此文件和相关的文件之後,再开始安装与启动 xfree86,如此可避免不小
心所造成可能的硬体损害。
要看完整的有关 xfree86 的文件,请参考在目录: /usr/X386/lib/X11/etc
/usr/X386/man 下的东东。其它重要的文件与目录,在此说明中也会陆续提到。
另外,这文件并不是一个完整的有关设定 XFree86 ,但是我们会提供相关的资料
,主要的文件则请参考: xf86-doc-2.0.tar.gz。
其它有关X11R5 的manpage 则在: xf86-man-2.0.tar.gz中。要看这些 manpage
可用 groff -man ***.man |more 或直接设定 MANPATH 到此目录,之後直接用
man 指令就可以。
内容:
0. 简介 - 什麽是 X11R5 和 XFree86?
1. 所支援的硬体
2. 在那□可取得 XFree86 ,而且需要什麽才能跑?
3. 构置 XFree86
4. tinyX - a package for systems with low memory
5. X 相关的软体
6. 编译使用到 X 的程式
7. x 的程式设计
8. 在网路上找寻 X 的相关资讯
附录: 一些问题和解答
0. 简介 - 什麽是 X11R5 和 XFree86?
X11R5 是针对unix系统的视窗系统。x 视窗是mit Consortium 所提出,并且有很
自由的版权,它允许任何原始程式的被使用,只要将原来的版权注意事项包含进
去即可。
因为x是unix做业系统的标准视窗系统,所以也就有相当多的应用程式使用x视窗
这中包含有免费与商业版体。
XFree86 也是 X11R5 的一支,主要是支援几个 Intel-为准的 unix 和类似unix
的作业系统。XFree86 伺服器部分是源自 x386 1.2 版(它是随x11r5一起公诸於
世的x伺服器),但是xfree86 大部分是新开发的。从xfree86-1.3之後,最重要
的变更是加速伺服器,这是一个全新的。这个版本有许多新的特徵、效率的改良
以及一些bug 的改良。
1. 所支援的硬体
这是一个常问的问题,在此先做简单的说明。目前的 2.0 版在 XF86_SVGA
伺服器有支援如下的一些硬体:
非加速卡:
Tseng ET3000, ET4000AX, ET4000/W32
Western Digital/Paradise PVGA1
Western Digital WD90C00, WD90C10, WD90C11, WD90C30
Genoa GVGA
Trident TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000
ATI 28800-4, 28800-5, 28800-a
NCR 77C22, 77C22E
Cirrus Logic GLGD5420, CLGD5422, CLGD5424, CLGD6205, CLGD6215,
CLGD6225, CLGD6235
Compaq AVGA (cf the question in the appendix)
OAK OTI067, OTI077
加速卡:
Cirrus CLGD5426, CLGD5428
Western Digital WD90C31
NOTE WD90C33 在 XFree86-2.0 无法运作。
这些卡都是支援 256 色(XF86_SVGA)而在单色模式(XF86_Mono) 除了
ATI 和 Cirrus 的卡之外(这两种卡只支援 256 色)。另外在 ET4000/W32
也只有像 ET4000 的功能,加速的功能并没有支援。
单色的伺服器也支援一般的 VGA 卡(使用 64k 影像记忆体)、 Hercules 卡
和 Hyundai HGC-1280 卡。但是这些驱动程式并不在 XF86_Mono 伺服器之
中。所以如果你要用这些的话,那你必须用 LinkKit 重新构置你的 XF86_Mono
伺服器。 附录中有谈到 Hercules mono 卡的构置方法。
有一个实验性质的伺服器是用於一般 VGA 卡的硬体上叫: XF86_VGA16 是一个
16 色的伺服器。
XFree86-2.0 有不同的伺服器,支援如下的几种硬体:
S3 86C911, 86C924, 86C801, 86C805, 86C928 supported by
the XF86_S3 server
ATI mach8 supported by the XF86_Mach8 server
ATI mach32 supported by the XF86_Mach32 server
IBM 8514/a and true clones supported by the XF86_8514 server
其他的硬体就都没有支援了,如 Weitek P9000、 TIGA、 IIT AGX、
Microfield、 the new MGA 等等…都没有支援。在未来的版本中,将
会支援这些硬体的。不过像 TIGA 与 Microfield 可都不会支援,因为
版权与文件的问题。
有关各种卡的说明可在 /usr/X386/lib/X11/etc 目录下的 README 档中
都有各种选项与设定的说明。
2. 到何处取得 XFree86 ,并需做什麽才能跑它?
此节主要针对 Linux 的可执行的软体而言。
可执行的 XFree86-2.0 for Linux 可由 ftp 到底下地方取得:
tsx-11.mit.edu:/pub/linux/packages/X11/XFree86-2.0
or
sunsite.unc.edu:/pub/Linux/X11/XFree86-2.0
这此软体都是以gzip压缩的 tarfiles 。
XF86_8514.tar.gz IBM8514 卡的伺服器
XF86_Mach32.tar.gz Mach32 卡的伺服器
XF86_Mach8.tar.gz Mach8 卡的伺服器
XF86_Mono.tar.gz 单色卡的伺服器
XF86_S3.tar.gz S3 卡的伺服器
XF86_SVGA.tar.gz SVGA 卡的伺服器
XF86_VGA16.tar.gz 16 vga卡的伺服器
xf86-svr-2.0.tar.gz 所有以上的卡的伺服器
xf86-bin-2.0.tar.gz 一些常用的用户程式
xf86-cfg-2.0.tar.gz XDM configuration files and chooser
xf86-fnt-2.0.tar.gz 字型(all of them)
xf86-kit-2.0.tar.gz Linkkit 用以建置 X 伺服器
xf86-lib-2.0.tar.gz Dynamic libraries, bitmaps and minimal fonts
xf86-man-2.0.tar.gz Manual pages (both client + programmer)
xf86-pex-2.0.tar.gz PEX libraries and sample clients
xf86-prg-2.0.tar.gz Static libs, dynamic stubs, configs and
include files
xf86-doc-2.0.tar.gz Documentation and release notes for XFree86 2.0
xf86-doc2-2.0.tar.gz This file contains the manpage for Xconfig that
has mistakenly been left out of the -doc- file.
另需要 libc 4.4.1 或更新的版本才能跑Free86-2.0。用加速版本伺服器的人
则至少需要 Linux 0.99pl13 或 更新的版本。
其它SVGA, VGA16 and Mono 等伺服器则需 Linux 0.99pl12 或更新版本。
而且你必须安装有install David Engel's shared dynamic linker ld.so
1.3 或更新版本,这可以从如下的地方找到:
mirrors of tsx-11 in the /pub/linux/packages/GCC directory.
记忆体的需求是至少 8 MB 和 虚拟记体 16 MB (SWAP file)。其实你若能小心
管理记忆体使用,4 MB 也是可以跑的。我们的建议是至少有 8 MB 的记忆体,
因为用 swap 方式真的会很伤 performance 的。
若是要跑很吃记忆体的程式,像是 gcc ;那麽你至少应该有 16 MB 记忆和
16MB 的 swap.
不安装 LinkKit 至少要有 17 MB 的磁碟空间,完全的话,则需21 MB 空间。
如果去掉不需要的 其它伺服器 应该也可以节省几 MB 的空间。详细的磁碟
需求,则请参考 Simon Cooper 在 00README 档中的描述。
安装之前,请备份你已变更过的档案,以备不时之需。
安装的步骤如下:(请以 root 身份在 / 目录下处理)
permission right you should use umask 022.
gzip -dc tarfilename | tar xvvof -
WARNING: 这动作将会盖过你的旧的XFree86 版本。
安装之後,你必须正确的设定你的系统。请看第三节的描述。
2.1 如果我想自己编译,那我该如何做呢?
在这伴随的 INSTALL, README and README.Linux 的几个档中都有说明。
除非你有一些特殊的变更,才需要如此做。若你要变更伺服器的构置,
那你应该用 Link Kit, 因为这样会简单的多了。
要加SVGA 伺服器的驱动程式的话,那你需要 Link Kit。 Link Kit
你可在 目录 /usr/X386/lib/Server/VGADriverDoc.中找到。
3. Configuring XFree86
从2.0 版开始,所有的 XFree86 文件都放在一起,用 tar 将其结合成一个档:
xf86-doc-2.0.tar.gz. 你首先就必须取得这个档,并详读这些文件之後,才会
正确的构置 XFree86 。 底下的一些步骤,就是有关这些文件的一些导论:
README.Config 此档可说是有关构置 XFree86 的一个简介,先看此档,并依
其指示一步一步做。
再来是必须用 man 指令查 Xconfig, XFree86 和有关的伺服器 的使用说明
(可能的伺服器有 XF86_SVGA, XF86_Mono, XF86_VGA16, XF86_S3, XF86_Mach8
, XF86_Mach32 or XF86_8514). 只看 manpage 第一节即可(man 1 Xconfig)
如果你无法确定使用的影像卡是那一种的话,你可以用 SuperProbe 程式来检
查你的影像卡种类。不过若你有影像卡的手册,那当然是依据你手册的说明来
做。
要注意的是 SuperProbe 不一定能正确的检查出影像卡种类,当然在这情形下
XFree86 的伺服器很难正确运作。而且 SuperProbe 所能检查出的卡种类是比
XFree86 伺服器所支援的种类数目还多。
在 AccelCards 此档中 有列出一些可以在 XFree86-2.0 版下正常运作的影像
加速卡。看看你的卡是否有列在其中。当然有一些卡可能没有名列其中,不过
却也能正常运作。
若你是使用 XS3, 那你该看看 README.XS3, 因为当初要加入 XS3 伺服器
时,有稍做一些改变。
有几个人曾指出一些 XFree86 构置的问题,是可以用变更 shadowing 的 BIOS
设定和 cacheable 区域来解决。由於这些方法中,有一些矛盾;所以在此我只
提一些可能是 BIOS 设定会出现的问题。如果你的问题,还是无法由底下所提
的文件中找到答案的话,则当然问题可能也不是bios 设定的问题。
在构置时你将需要如下的资讯:
1. 萤幕规格(像是水平和垂直的频率,频宽等等…),这是最重要的事了。
2. 卡的名称。有些公司会用"s3" 当成"accelerated" 的同义字。
3. 你的卡所提供的影像记忆体有多少。
4. 你的卡可用的 dot-clocks 有那些,或是直接是 programmable 的
此部分是最难设定的。在 README.config 中有描述如何得到这些资料。
NOTE: WD90C3x 的卡在 clock probing 时会有问题。
请先用 XFree86-1.3 伺服器执行测得 clocks 然後将其记录在
Xconfig 档中,之後就可以跑 2.0 版的伺服器了。
NOTE: 若你的 RAMDAC 处理 pixel clocks 比 110MHz 高的话,
那可能是新近的高档的 RAMDACs. 因为这些都是使用比较特殊的方式
才有可能做到,这些 RAMDACs 应该不可以在高过 85 MHz 的 Clock 跑
。下个版本应该就会支援这些的硬体了。若你以目前的模式,用高速来
操你的 RAMDAC ,你将会搞坏它的。你有这样的硬体的话,请用不高过
85MHz 的速度。
5. mouse使用的协定和连接的 device。在 Xconfig 的manpage 中有列出
可用的 mouse 协定。底下是一些 mouse 连接的 device 名称:
/dev/atibm ATI XL busmouse (NOTE: ATI GU busmouse
事实上就是 logitech busmouse)
/dev/logibm for the Logitech busmouse (NOTE: this uses the
busmouse protocol, NOT the Logitech protocol)
/dev/inportbm for the microsoft busmouse
/dev/psaux for a ps/2 or quickport mouse
NOTE: 上列的名称是新的名称,也许在旧的版本中都还是使用旧的名称。
new old major minor device number
atibm: bmouseatixl 10 3
logibm: bmouselogitec 10 0
inportbm: bmousems 10 2
psaux: bmouseps2 or ps2aux 10 1
其它的mouse 就属於 serial mouse 所以也都连上一些的 serial ports
像是 /dev/ttyS? 或 /dev/ttyS?? 。
busmouse 有时并不容易看出是连接上那一个device,要判别的话就是
将所有的 drivers 放到 kernel 中,并在 开机时看看开机时的讯息
,它会告诉你它所侦测到的 busmouse 是那一种。此时你就知道了,它
是连上那一个device。
现在就看 README.Config 这个档。若你的萤幕不在 modeDB.txt 档中,
你应该选一个一般的模式。并确定所选的模式规格是在你的萤幕规格之中。
你若想调整或换一个模式,则请先详读 VideoModes.doc,并依其指示去.
设定。
WARNING: 别人的 Xconfig 档不一定适合你用,因为各人的硬体设备不尽相同。
特别是萤幕模式的设定,必定要确定是你的萤幕的规格所有的,以避免不必
要的硬体损坏。
3.1 Configuring the keyboard for non-US-layout
若你不变更原先标准的设定的话,伺服器会自动启动 US-american 键盘模式
。你若要不同的设定,请看 xmodmap 的 manpage 说明。
在 sunsite.unc.edu:/pub/Linux/X11/misc 有 Xmodmaps 关於几个语言键盘
的设定实例。
另外有几个特别键,你可以定义新的对应。在 Xconfig 档中,完全的设定利
用。这方面请参考 XFree86kbd(1) manpage。
4. tinyX - 一个以XFree86为基准,适合 ram 比较少的机器的x 视窗系统
如果你的 ram 不是足够到跑 XFree86 时,也许你可以试试这个东东。
它是以 XFree86为基准,所以构置或设定的方式与 xfree86 是相同的。
而要跑 tinyX 则至少要有4 MB RAM 和至少 8 MB swap 空间。目前的
tinyX 有几个版本,伺服器程式可依前面的 xfree86-2.0 的说明去选
择。软体的名称如下:
tinyX-YYY-2.0.tar.gz, YYY 代表 伺服器名称
此软体的取得可由就近的ftp 站取得。取得之後先 untar 然後设定 Xconfig
档,在 readme 目录下也可以找到一些 tinyX 的相关文件,先看完这文件之
後再设定 Xconfig 档。
tinyX 的文件也包括一些有用的节省记忆体技巧。至少遵行一些建议,则跑
tinyX 时也可以减少一些 swapping 的次数。如果执行时超过已有记忆体的
容量,则系统也就会完全锁住(换句话说就是类似当掉,就大部分的情形是只有
关机重新开机或 按 reset,这都是很危险的),因此在重新启动x 前
请务必详读那此文件,
由於 tinyX 并不包含完全的 XFree86-2.0, 所以可能会遇到执行时,出现
程式不存在的讯息。

你是我们最后的希望