by Helmut Geyer (
[email protected])
with help from Dirk Hohndel (
[email protected])
and David E. Wexelblat (
[email protected])
此文件是描述如何获得、安装、构置(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 Engels 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, 所以可能会遇到执行时,出现
程式不存在的讯息。
5. X - 相关软体
目前有许多的x 相关的软体。在此我们提出两个在 X 方面有比较大影响力的
软体。
- xview3L5.1.tar.gz
这软体是源自 SUN(TM)s xview3.2 软体,而由 Kenneth Osterberg 修定
linux 版的。包含有xview toolkit, 一些 x 的扩充等等…
它会给你感觉到 Open Look(TM) 在 x 方面的扩充。
要安装它,首先 untar tarfile ,读取一些伴随的说明文件(像是 README
或是 install 等等…)之後执行 INSTALL 这个 script。要完全安装此软体
要有 25MB 的磁碟空间。
要执行 Xview 至少要有 8 MB 的 RAM,最好有 16 MB,另外 要在 XFree86-2.0
上跑 xview 则 ld.so 必须是 1.3 或以上的 版本。
- Motif(TM) to Linux.
这是一个商业版的软体,所以就要用钱去买了。从tsx-11:/pub/linux/advertisements.
可找到Metrolink 公司的广告。
这软体有提供不同的 window managers 。其它的一些的 window managers 程式
可从 sunsite:/pub/Linux/X11/Window-managers 找到。这些都有不同的设定。
所以要设定这些的 window manager 就必须详读他们各自的安装文件,以便能
正确安装。
当然有一些现成的x 应用软体可以从 sunsite.unc.edu 的 /pub/Linux/X11 目录
或tsx-11.mit.edu 的 /pub/linux/binaries 与 /pub/linux/sources 找到。
6. 有关 X 程式的编译
一般的x 原始应用程式都会伴随有一个 Imakefile 的档,取代一般的
Makefile ,那现在怎麽办呢?
在有 Imakefile 档的目录下执行 ""xmkmf""。如果在整个的目录阶层下,有几个
Imakefiles, 通常也只要在 最上层目录执行 xmkmf 就行了。此时 xmkmf 就会
自动帮我们 建立一个 Makefile ,我们这时候只要用 make 就能成功编译了。
此时就可用""make install""将执行档搬到 /usr/X386/bin 将manpages 用 make
""install.man"". 当然在你执行 xmkmf 之前,同样的,必须程式中伴随的说明
文件看清楚。
7. X 的程式设计
如果你想写有关 X 视窗的程式,你必须有本x 视窗程式设计的书。有些x 提供
的副程式在 manage 中,都有相关的文件在 /usr/X386/man/man3之下,但这
并不足够使用,如果你的x程度不是很好时。
OReilly写的""The definitive Guides to the X Window System"" 一系列的书
是很完整的一套书。我建议的有:
Volume 1, ""Xlib Programming Manual"",
Volume 4, ""X Toolkit Intrinsics Programming Manual""
8. 在网路上找x 相关的资料
有关一般的 X 问题,读者可以参考来自 comp.windows.x 新闻铺的 FAQ 和 Xt-FAQ
(或是用ftp 到底下找
from ftp.x.org in the directory /contrib or
from rtfm.mit.edu in /pub/usenet_by_hierarchy/comp/windows/x
ftp.edu.tw /USENET/...
如果有关 XFree86 的问题,而且在 xfree86 伴随的文件中 (XFree86, Xconfig
, XF86_* manpages , README files in /usr/X386/lib/X11/etc)找不到答案,
则可将问题贴上 comp.windows.x 这个新闻铺,看看别人是否可以回答。相关
的新闻铺有 comp.windows.x.i386unix 是特别给 xfree86 。当然在你贴上问题
之前,你必须详细描述你的问题和相关资料,不要只是说"" 救命啊 我的xfree
不能跑了"",这样就算是有心帮你,可也无从帮起。至少要有如下几个资料:
- 你使用的什麽系统和版本
- 使用的硬体(至少像是 bus type ISA/EISA/VLB, 影像卡种类等等…
- 简单切确的问题描述
- 伺服器启动时的详细输出,用输出重导的方式获得
- Xconfig 的设定情形,(不用全部的内容)
更进一步的话,你可描述自己所采取的处理方式。
其它与 x 相关的新闻铺有:
comp.windows.x.apps - 一般X 的应用程式
comp.windows.x.intrinsics - X intrinsic
comp.windows.x.motif - Motif 版的 X
comp.windows.open-look - OpenLook(TM)版的 X
有新闻铺会有定期的 faq 散播出来,当然也可以各地的 ftp 站取得。
但是注意不要将x 相关的问题贴到以comp.os.linux.* 开头的新闻铺中。
将问题贴到适当的新闻铺中会比较有更好的解答出现的。
附录:问题与解答
Q: 我用""X"" 指令来启动X,我只看到网状的背景,却没有看到视窗,我
是不是那□出错了。
A: 你这样只是启动伺服器,但没有启动 window-manager 和其它的应用程式
一般的启动方式是用 startx 指令。
Q: 我一直都是用 XS3 的, XFree86-2.0 是有什麽改变吗?
A: 关於XS3 的改变,在 README.XS3 档中有说明。
Q: 有支援 16-bit 或 24-bit 的彩色模式吗?
A: 此刻只有支援 1-bit, 4-bit and 8-bit 彩色模式。而且 4-bit 的伺服器
也是在实验阶,可能会有 BUG 存在。这些 bug 在 manpage 中有提到。
Q: I have a Logitech serial mouse but it does not work with the Logitech
keyword.
A: The Logitech keyword is for older Logitech serial mice, more recent
Logitech serial mice use the MouseMan or MicroSoft keyword.
Logitech serial mice plugged into a ps/2 port use the ps/2 keyword.
Q: 我的伺服器无法找到一些字型。
A: 首先检查你的目录/usr/X386/lib/X11/Xconfig 中的字型路径,是否有包含
这些路径。若有则执行 mkfontdir 可能会给你一些帮助。
Q: 我有一问题是当我结束x 时,字型有时无法恢复正常,萤幕会有奇怪的东
西出现。
A: 此问题尚未完全解决,不过有一些软体有时会有帮助,像
runx , restoretext,... 是在 svgalib 之中(sunsite:/pub/Linux/libs)
Q: 我有一正常的 SVGA 卡,是有1 MB 的 video RAM。用此卡我可以用到
1152x900 或 1024x1024 的虚拟解析度。但是用 s3 卡却是不能,why?
A: 最近的 s3 卡无法用 1152 的线长度,所以是用 1280 替代。而且 S3 伺
服器要 1K 给游标,所以 1MB 的虚拟解析度是无法运作的。
NOTE, 你需要一些卡上的记忆体做字型与图素的快取之用,才能有最大的
效应。所以这些记忆体并不是浪费的。在 1MB video RAM 的卡,我们的
建议是用 1024x768 和1152x800 。使用後项的话,所剩的供字型快取的记
忆体就有限了,也因此当使用比较大的字型时,performance 也有明显的差
别。一般是当字型的点数<18时,还是很正常。
Q: 我要用LinkKit 来configure XF86_S3 或 XF86_VGA16 伺服器,在
改过 sited.def 和 跑过 mkmf,make 时却失败了,why?
A: LinkKit 的 Imakefile 有一些bug,你可以改 Imakefile 的第 326 行
由
#if XF86SVGAServer || XF86MonoServer
改成
#if XF86SVGAServer || XF86MonoServer || XF86VGA16Server || XF86S3Server
或你也可以额外 configure XF86_Mono 或 XF86_SVGA 伺服器,然後就可以了。