当前位置:Linux教程 - Xwindow - XWindow配置

XWindow配置



         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 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, 所以可能会遇到执行时,出现
    程式不存在的讯息。

    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程度不是很好时。

    O\Reilly写的\"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 伺服器,然後就可以了。
    发布人:Crystal 来自:无锡linux