鸟哥的 Linux ADSL 私房菜


简易 X-Window 设定
最近更新日期:2003/02/12
X-Window的架构
  XFree86 的历史演进与版本
  X server, X client 与 Window manager
  XFree86 的主要设定档案
使用设定工具XFdrake, Xconfigurator
使用XFree86提供的工具设定:xf86cfg, xf86config
手动修改XFree86设定档
启动X-Window
更新显示卡驱动程序范例:以Geforce2 MX 说明
本章习题练习

X-Window的架构
在Unix-Like包括Linux等作业底下的图形界面通常被我们简称为X-Window啰,这个X-Window怎么来的?他目前的版本是怎样?还有,X-Window主要是主从架构的(Server, Client),那么这些主从架构是怎么回事呢?我们底下就来谈一谈这些东西吧!

使用设定工具:XFdrake, Xconfigurator:
好了,如果你的X-Window本来就没有问题,那么底下的数据就可以不要看啦!但是,如果你的X-Window一直怪怪的,那 么底下的设定方式就得给他瞧一瞧!目前使用上面较为方便的,还是以各家distribution提供的小工具来设定我们的 /etc/X11/XF86Config-4这个档案较为方便,而设定的内容不外乎:
  1. 键盘的格式;
  2. 鼠标的格式;
  3. 屏幕的格式,包含分辨率、水平、垂直更新频率等等;
  4. 显示卡的主要驱动程序,也就是所谓的X server最主要的内容啦!
  5. 显示的分辨率:
上面那个显示的分辨率还得要了解一下,我们在设定屏幕的分辨率时,指的是『我的屏幕能够负荷的最高分辨率』,而在第五项的显示的分辨率,是我们进入X-Window并且使用Window manager来操作主机之后,那个桌面的支持的分辨率啦!因此,第三项屏幕的分辨率当然就可以设定的比较高啰!
 
目前最流行的两套Linux:Mandrake与Red Hat均提供不错的软件来设定XF86Config-4,那就是: 这两个套件设定的项目几乎都是一模一样啦。好了,请记得备份你的XF86Config-4这个档案吧。 很简单吧,这就是使用工具软件来设定的方法。底下我们来提一提,那么正统的设定XFree86该怎么玩?


使用XFree86提供的工具设定:xf86cfg, xf86config
基本上,XFree86 已经提供了两支相当好用的程序来帮我们设定 XF86Config-4 了!那就是 xf86cfg 及 xf86config 这两个!
 
那个 xf86cfg 会自动的侦测我们的主机信息,并且直接将新的 XF86Config.new 档案放置在设定者的家目录之下,相当的方便!只要使用者在启动 X-Window 之前,将自己家目录的 XF86Config.new 复制到 /etc/X11/XF86Config-4 这个档案,那么就完成设定啦!但是,由于 xf86cfg 主要是自动帮我们捉取数据的,除非您使用 man xf86cfg 来查询他的参数,否则常常无法捉到自己喜欢的模式!使用的方法是直接在指令列模式下,下达 xf86cfg 即可!
 
相对于 xf86cfg 的主动侦测数据,这个 xf86config 则显的较为老态龙钟,因为他的所有设定都需要使用者给予呢!包括键盘、鼠标、屏幕、分辨率等等的问题。不过,因为他都是经由使用者设定的,所以自然也就有 办法直接提供使用者一个喜好的环境设定啰!底下我们就针对 xf86config 来谈一谈吧!
 
[root @test root]# xf86config
Step 1: 准备备份与是否进行?
This program will create a basic XF86Config file, based on menu selections you make.
Before continuing with this program, make sure you know what video card
you have, and preferably also the chipset it uses and the amount of video
memory on your video card. SuperProbe may be able to help with this.
Press enter to continue, or ctrl-c to abort.   <==这里按下Enter开始设定

Step 2: 设定鼠标:
First specify a mouse protocol type. Choose one from the following list:
 1.  Microsoft compatible (2-button protocol)
 2.  Mouse Systems (3-button protocol)
 3.  Bus Mouse
 4.  PS/2 Mouse
 5.  Logitech Mouse (serial, old type, Logitech protocol)
 6.  Logitech MouseMan (Microsoft compatible)
 7.  MM Series
 8.  MM HitTablet
 9.  Microsoft IntelliMouse
Enter a protocol number: 4  <==主要是2或4,目前大多使用ps/2鼠标,所以选4就对了!

Do you want to enable Emulate3Buttons? n <==是否模拟三键?我们已经是三键,当然不模拟!

Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.
Mouse device:  <==这里要设定鼠标的装置代号,通常使用默认值即可,所以按下Enter!

Step 3: 设定键盘格式:
  1  Generic 101-key PC
  2  Generic 102-key (Intl) PC
  3  Generic 104-key PC
  4  Generic 105-key (Intl) PC
  5  Dell 101-key PC
  6  Everex STEPnote
  7  Keytronic FlexPro
  8  Microsoft Natural
Enter a number to choose the keyboard.
<==选择键盘的形式,如果不知道你的键盘格式,选择 1 或 3 即可!

  1  U.S. English
  2  U.S. English w/ ISO9995-3
  3  U.S. English w/ deadkeys
  4  Albanian
Enter a number to choose the country.
Press enter for the next page
1   <==选择键盘按键,我们键盘上面有的是英文呀!所以当然选择 1 英文按键!

Please enter a variant name for 'us' layout. Or just press enter
for default variant
  <==选择这个键盘的名称,预设称为 us ,不用搞特殊,Enter即可!

Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)? n  <==是否需要额外的XKB选项,不需要啦!按 n !

Step 4:设定屏幕
Now we want to set the specifications of the monitor. 
The valid range for horizontal sync and vertical sync should be documented
in the manual of your monitor. If in doubt, check the monitor database
/usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.
Press enter to continue, or ctrl-c to abort.  <==准备设定屏幕,按Enter开始

    hsync in kHz; monitor type with characteristic modes
 1  31.5; Standard VGA, 640x480 @ 60 Hz
 2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
 3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
 4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
 5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
 6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
 7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
 8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
 9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11  Enter your own horizontal sync range
Enter your choice (1-11): 7 <==目前的屏幕选择 7 应该都吃的下啦!
当然,如果你的屏幕比较好,可以考虑选择 8~10 的选择!

the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).
 1  50-70
 2  50-90
 3  50-100
 4  40-150
 5  Enter your own vertical sync range
Enter your choice: 2  <==目前屏幕选择 2 也应该都没有问题啦!

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.
The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition: MyMonitor<==这里要写一下你的屏幕的代号,
随便写没有关系啦!因为这个是在XF86Config里面的代号而已!

Step 5: 设定显示卡
Do you want to look at the card database? y <==是否要选择显示卡?当然是要啰!

468  SiS 5597                                          SiS5597
469  SiS 5598                                          SIS5598
470  SiS 620                                           SIS620
471  SiS 6326                                          SiS6326
472  SiS SG86C201                                      SIS86C201
Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.
471<==这里接着下来会让你选择你的显示卡数据,由于我们的数据库相当庞大,所以
      如果该页没有你要的数据时,可以按下Enter到下一页去选择!那么如果你的厂商
      是比较小牌的怎么办?没关系,果真如此,那么选择不同厂商但是同样芯片的
      数据就可以了!由于我是使用Sis 6326,所以就选择471这个号码啰!

Your selected card definition:
Identifier: SiS 6326
Chipset:    SiS6326
Driver:     sis
Do NOT probe clocks or use any Clocks line.
Press enter to continue, or ctrl-c to abort.  <==这里再按Enter即可!

How much video memory do you have on your video card:
 1  256K
 2  512K
 3  1024K
 4  2048K
 5  4096K
 6  Other
Enter your choice: 6 <==设定你的显示卡内存,目前的主流已经提升到 64MB了,
                        所以自然要选择 6 来自定了!记得 RAM 的算法:
                        32M = 32*1024= 32768K 才对喔!

Amount of video memory in Kbytes: 1024 <==我的卡只有 1M 而已….

The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:  <==这里按下 Enter 使用默认值即可!

Step 6:设定屏幕分辨率:
"640x480" "800x600" "1024x768" for 8-bit
"640x480" "800x600" for 16-bit
"640x480" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

 1  Change the modes for 8-bit (256 colors)
 2  Change the modes for 16-bit (32K/64K colors)
 3  Change the modes for 24-bit (24-bit color)
 4  The modes are OK, continue.

Enter your choice: <==预设的情况下会有上面的那些模式,那么我通常喜欢一种模式而已,
                         所以就按下 3 来修改该模式,设定为我喜欢的 1024x768 那个模式。

Select modes from the following list:
 1  "640x400"
 2  "640x480"
 3  "800x600"
 4  "1024x768"
 5  "1280x1024"
 6  "320x200"
 7  "320x240"
 8  "400x300"
 9  "1152x864"
 a  "1600x1200"
 b  "1800x1400"
 c  "512x384"
Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.

Which modes? <==选择我要的呦!

Please answer the following question with either 'y' or 'n'.
Do you want a virtual screen that is larger than the physical screen? n
上面的设定在说明,是否需要虚拟桌面?我才不要呢!所以选择 n 啰!

 1  Change the modes for 8-bit (256 colors)
 2  Change the modes for 16-bit (32K/64K colors)
 3  Change the modes for 24-bit (24-bit color)
 4  The modes are OK, continue.

Enter your choice:  4  <==这样就 OK 了!

Please specify which color depth you want to use by default:

  1  1 bit (monochrome)
  2  4 bits (16 colors)
  3  8 bits (256 colors)
  4  16 bits (65536 colors)
  5  24 bits (16 million colors)
Enter a number to choose the default depth.
<==预设是哪一个色彩度登入呢?选择你要的喔!我要的是 5 那个色彩度!

Step 7: 写入设定档
Shall I write it to /etc/X11/XF86Config? y <==勇敢一点!给他 y 写入吧!反正已经备份了!

 
这样就设定完成了,但是比较麻烦的是,这个指令在设定XF86Config,所以你必需将他复制成为XF86Config-4才可以呢!然后就可以测试一下X-Window是否成功啰!

手动修改XFree86设定档
好了,既然知道前面几个咚咚都是在设定XF86Config-4这个档案,那么我们岂不是也可以自行去修改这个档案呢?说的好!没错!所以我们就来修修改改这个档案吧!首先,这个档案里面将很多的段落分成这种模样:
 
Section “section name”
……..
……..
EndSection
 
开头由 Section 接着该段落的内容项目,然后结束以 EndSection 来结束,我们直接在档案内容进行说明吧!请参考一下底下的内容啰:
 
[root @test X11]# vi /etc/X11/XF86Config-4
Section "Module"
        Load  "dbe"
        Load  "dri"
        Load  "extmod"
        Load  "glx"
        Load  "record"
        Load  "xie"
        Load  "freetype"
        Load  "type1"
        Load "v4l"
EndSection
上面的数据在加载驱动X-Window的时候,需要的模块项目!通常这些项目都给他加载进去吧!另外,模块的数据可以在/usr/X11R6/lib/modules这个目录中找到!

Section "Device"
        Identifier  "Card0"
        Driver      "nv"
        VendorName  "NVidia"
        BoardName   "GeForce2 MX"
        BusID       "PCI:1:0:0"
        Option "X-KXCONFIG-VideoRam" "32768"
        Option "X-KXCONFIG-MaxClock" "350"
EndSection
这个项目在设定你的显示卡驱动程序!以我的卡为例,这个例子中,使用的是 Geforce 2 MX,
所以当然就是使用 nv 这个预设的 Nvidia 驱动程序啦!还有Option里面的VideoRam设定的是显示卡内存容量,记得填对!至于其它的项目就没有这么重要!

Section "Files"
        RgbPath "/usr/X11R6/lib/X11/rgb"
        FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
        FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
        FontPath "/usr/X11R6/lib/X11/fonts/TrueType"
        FontPath "/usr/X11R6/lib/X11/fonts/Type1"
        FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
        FontPath "/usr/X11R6/lib/X11/fonts/ghostscript"
EndSection
这个项目在设定字型与颜色,那个RgbPath是设定色彩,而FontPath则是设定字型的地方!
这里告诉我们另一个信息,那就是字型通常是摆在/usr/X11R6/lib/X11/fonts里面喔!

Section "ServerFlags"
        Option "AllowMouseOpenFail" “false”
EndSection
这里可以设定X-Window的另一个整体化参数!上面那个 AllowMouseOpenFail 的设定中,
若设定为 “false” 那么没有找到并驱动鼠标,就不能登入X-Window啰!

Section "InputDevice"
        Driver          "keyboard"
        Identifier      "keyboard"
        Option          "XkbRules"      "xfree86"
        Option          "XkbModel"      "pc104"
        Option          "XkbLayout"     "us_group3"
EndSection
Section "InputDevice"
        Driver          "mouse"
        Identifier      "mouse"
        Option          "Protocol"      "IMPS/2"
        Option          "Device"        "/dev/psaux"
        Option "ZAxisMapping"  "4 5"
EndSection
这个是在设定周边输入接口,有键盘及鼠标两种设定,注意上面黑体的地方,keyboard设定的是键盘的格式(XkbModel与 XkbLayout),而鼠标则是设定接口(Protocol)较为重要!

Section "ServerLayout"
        Identifier      "Default layout"
        Screen          0 "Screen0" 0 0
        InputDevice     "mouse" "CorePointer"
        InputDevice     "usbmice" "SendCoreEvents"
        InputDevice     "keyboard" "CoreKeyboard"
EndSection
这个地方在设定整个画面的输出呢!重点在 Screen 那个项目的设定喔!那个 0 0 指的是桌面左上角为 0 0 的意思!

Section "Monitor"
        Identifier "Generic Monitor"
        VendorName "Typical Monitors"
        ModelName "1280x1024, 60Hz"
        HorizSync 31-64
        VertRefresh 50-90
        ModeLine "1024x768/70Hz" 75    1024 1048 1184 1328   768  771  777  806 -HSync -VSync
        ModeLine "640x480" 25.175 640 664 760 800 480 491 493 525
EndSection
这个项目则是设定屏幕的细项,包括分辨率、更新频率等等的设定值喔!

Section "Screen"
    Identifier  "Screen0"
    Device      "Card0"
    Monitor     "Generic Monitor"
    DefaultDepth 16
    Subsection "Display"
        Depth       32
        Modes "1024x768/70Hz" "640x480"
                Virtual 0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes "1024x768/70Hz" "640x480"
                Virtual 0 0
    EndSubsection
    Subsection "Display"
        Depth       8
        Modes "1024x768/70Hz" "640x480"
                Virtual 0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes "1024x768/70Hz"
                Virtual 0 0
    EndSubsection
EndSection
重点来了!这个就是设定你进 入X-Window的时候,显示的分辨率啰!预设有支持的项目都会写进来,但是,像比较龟毛的我,就是不喜欢有这么多的项目存在,所以我可以将上面的资 料,只剩下粗体字,其它的都删除,那么进入X-Window就只有一种显示模式!比较方便啦!当然啰,你也可以藉由修改DefaultDepth那个项目 来控制登入X-Window时的设定值啰!

 
这样就设定完成啦!而如果你曾经选错了『虚拟桌面,Virtual desktop』时,那么就修改Section Screen 那个项目,将里面的 Virtual 改成 0 0 即可啰!一般而言,我们在设定X-Window时,通常会先以各家Linux distribution提供的软件来设定,如果不能成功,就改以xf86cfg来自动设定,还不能成功,就以xf86config来设定,再不成功,唉~只好使用手动的方式修改设定档啰!

启动X-Window
好了,设定好了XF86Config-4之后,自然就是要启动X-Window试试看啰!那么该如何启动X-Window呢?如果在开机流程简介那一篇有仔细的瞧过的话,应该会知道,我们的开机进入模式有多种,但是基本上正常登入则有run-level 3的文字接口登入及run-level 5的图形接口登入!如果是run-level 5的话,那么表示您目前应该已经是在X-Window的环境下了,如果是在run-level 3要转到X-Window的画面下,那么就直接给他:
startx
就可以啦!这个时候就会主动的来将我们刚刚设定的内容给他驱动看看,如果可以的话,自然就会进入窗口桌面啰!如果不能进入,再次的给他设定吧! ^_^

更新显示卡驱动程序范例:以Geforce2 MX 说明
那么万一我的显示卡并不被我的XFree86所支持呢?例如最新的Geforce4这些芯片组的显示卡?没有关系,能不能驱动硬 体是跟硬件发展的厂商有关系的,所以只要硬件开发商能够提供驱动程序的话,那么自然就可以没有问题的给他驱动啰!底下我们以目前最常见的Nvidia的显 示卡来进行说明,让大家了解一下如何更新这个驱动程序吧!

本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )

2003/02/12:第一次完成

2003/02/12 以来统计人数


Designed by VBird during 2001-2004.  Aerosol Lab.