14.2. 优化 X 配置

X.Org 是 X 窗口系统的开放源代码实施。X.Org Foundation 对 X.Org 进行了进一步开发,它还负责开发 X 窗口系统的新技术和标准。

要以最佳方式使用可用的硬件(包括鼠标、图形卡、监视器和键盘),可以手工优化配置。下面介绍这种优化的一些方面。有关配置 X 窗口系统的详细信息,请查看目录 /usr/share/doc/packages/Xorg 中的各个文件和 manxorg.conf

[Warning]警告

配置 X 窗口系统时要非常仔细。在完成配置前,切勿启动 X 窗口系统。错误配置的系统可能会对您的硬件造成不可修复的损坏(此情况尤其针对于固定频率的监视器)。本书的作者和 SUSE Linux 不对这种损坏负任何责任。这里提供的信息已经仔细斟酌,但并不能保证所提供的所有方法均正确且不会对您的硬件造成任何损坏。

默认情况下,程序 SaX2 和 xorgconfig 在 /etc/X11 中创建文件 xorg.conf。这是 X 窗口系统的主配置文件。请在此查找与图形卡、鼠标和监视器有关的所有设置。

下面小节介绍配置文件 /etc/X11/xorg.conf 的结构。它由多个部分组成,每个部分处理配置的某个特定方面。每个部分都以关键字 Section <designation> 开头,以 EndSection 结尾。这些部分的格式为:

Section designation
  entry 1
  entry 2
  entry n
EndSection
 

表 14.1 “/etc/X11/xorg.conf 中的部分” 中列出了可用的部分类型。

表 14.1. /etc/X11/xorg.conf 中的部分

类型

含义

Files

此部分描述用于字体和 RGB 颜色表的路径。

ServerFlags

在这里设置通用开关。

InputDevice

此部分配置输入设备,如键盘和特殊输入设备(触摸板、游戏杆等)。此部分的重要参数有 Driver 以及定义 ProtocolDevice 的选项。

Monitor

描述所用的监视器。此部分的各个元素是名称(稍后在 Screen 定义中引用)、bandwidth 和同步频率限制(HorizSyncVertRefresh)。以 MHz、kHz 和 Hz 为单位提供设置。通常,服务器拒绝不符合监视器规格的任何方式行。这样可防止意外地将过高的频率发送到监视器。

Modes

这里储存了特定屏幕分辨率的方式行参数。可以根据用户给出的值由 SaX2 计算出这些参数,并且通常无需更改这些参数。您可以在此时进行手工干预,例如当要连接固定频率监视器时。HOWTO 文件 /usr/share/doc/howto/en/html/XFree86-Video-Timings-HOWTO 中提供了各个数字值含义的详细信息。

Device

此部分定义特定的图形卡。系统通过其描述性名称来引用图形卡。

Screen

此部分将 MonitorDevice 放在一起以组成 X.Org 所需的设置。在 Display 子部分中,指定虚拟屏幕 (Virtual)、ViewPort 和与此屏幕一起使用的 Modes 的大小。

ServerLayout

此部分定义单头配置或多头配置的布局。此部分将输入设备 InputDevice 和显示设备 Screen 绑定在一起。

下面详细介绍 MonitorDeviceScreenX.Orgxorg.conf 的手册页提供了有关其它部分的详细信息。

xorg.conf 中可以存在多个不同的 MonitorDevice 部分。甚至可以存在多个 Screen 部分。随后的 ServerLayout 部分确定使用哪个部分。

14.2.1. Screen 部分

Screen 部分将 Monitor 部分与 Device 部分结合起来并确定要使用的分辨率和颜色深度。Screen 部分与 例 14.1 “文件 /etc/X11/xorg.conf 的 Screen 部分” 类似。

例 14.1. 文件 /etc/X11/xorg.conf 的 Screen 部分


Section "Screen"
  DefaultDepth  16
  SubSection "Display"
    Depth       16
    Modes       "1152x864" "1024x768" "800x600"
    Virtual     1152x864
  EndSubSection
  SubSection "Display"
    Depth       24
    Modes       "1280x1024"
  EndSubSection
  SubSection "Display"
    Depth       32
    Modes "640x480"
  EndSubSection
  SubSection "Display"
    Depth        8
    Modes       "1280x1024"
  EndSubSection
  Device        "Device[0]"
  Identifier    "Screen[0]"
  Monitor       "Monitor[0]"
EndSection

Identifier(这里是 Screen[0])为此部分指定一个定义的名称,在随后的 ServerLayout 部分中可以使用此名称唯一引用这个部分。行 DeviceMonitor 指定属于此定义的图形卡和监视器。这些行仅仅是通过 DeviceMonitor 部分的相应名称或标识符指向这些部分的链接。下面详细讨论这些部分。

除非启动服务器时就使用特定的颜色深度,否则请使用 DefaultDepth 设置来选择服务器应使用的颜色深度。每个颜色深度都有一个 Display 子部分。关键字 Depth 指派对此子部分有效的颜色深度。Depth 的可能值包括 8、15、16 和 24。并非所有 X 服务器模块都支持所有这些值。

在颜色深度后,在 Modes 部分中设置分辨率列表。X 服务器从左到右检查此列表。对于每个分辨率,X 服务器均会在 Modes 部分中搜索合适的 ModelineModeline 取决于监视器和图形卡的功能。Monitor 设置确定最终的 Modeline

找到的第一个分辨率是 Default mode。使用 Ctrl-Alt-+(在数字小键盘上)向右切换到列表中的下一个分辨率。使用 Ctrl-Alt-(在数字小键盘上)向左切换。这使您能够在 X 运行时改变分辨率。

包含 Depth 16Display 子部分的最后一行指出了虚拟屏幕的大小。虚拟屏幕的最大可能大小取决于图形卡中安装的内存量和所需的颜色深度,而不取决于监视器的最大分辨率。因为目前的图形卡都具有大量视频内存,所以您可以创建非常大的虚拟桌面。但是,如果您将大部分视频内存用于虚拟桌面,则可能不能再使用 3D 功能。例如,如果图形卡有 16 MB 视频内存,则当采用 8 位颜色深度时,虚拟屏幕最多可以有 4096x4096 个像素。但建议不要将所有内存用于虚拟屏幕,因为图形卡上的内存还要用于多种字体和图形超速缓存,对于加速卡而言尤其如此。

14.2.2. Device 部分

Device 部分描述特定的图形卡。您可以在 xorg.conf 中包含任意多个设备项,前提是要使用关键字 Identifier 对这些项的名称进行区分。规则上,如果您安装了多个图形卡,则简单地依次对这些部分进行编号。第一个设备称为 Device[0],第二个设备称为 Device[1],依此类推。以下文件是从安装有 Matrox Millennium PCI 图形卡的计算机的 Device 部分摘出的一段:

Section "Device"
  BoardName     "MGA2064W"
  BusID         "0:19:0"
  Driver        "mga"
  Identifier    "Device[0]"
  VendorName    "Matrox"
  Option        "sw_cursor"
EndSection

如果您使用 SaX2 进行配置,则 Device 部分应与上面的示例类似。DriverBusID 均取决于计算机上安装的硬件并由 SaX2 自动检测。BusID 定义安装图形卡的 PCI 或 AGP 插槽。它与使用命令 lspci 显示的 ID 相匹配。X 服务器需要采用十进制形式的详细信息,但 lspci 以十六进制形式显示这些信息。

通过 Driver 参数,指定要用于此图形卡的驱动程序。如果此卡是 Matrox Millennium,则将驱动程序模块称为 mga。然后,X 服务器通过 drivers 子目录的 Files 部分中定义的 ModulePath 进行搜索。在标准安装中,这是目录 /usr/X11R6/lib/modules/drivers。然后将 _drv.o 添加到名称中。因此,对于 mga 驱动程序,将装载驱动程序文件 mga_drv.o

还可以通过其他选项影响 X 服务器或驱动程序的行为。在 Device 部分中设置的选项 sw_cursor 就是这方面的一个示例。此选项取消激活硬件鼠标光标并使用软件显示鼠标光标。根据驱动程序模块,有不同的选项可用,它们位于目录 /usr/X11R6/lib/X11/doc 中驱动程序模块的说明文件中。通常还可以在手册页(man xorg.confman X.Org)中查看有效的选项。

14.2.3. Monitor 部分和 Modes 部分

Device 部分类似,MonitorModes 部分分别描述一个监视器。配置文件 /etc/X11/xorg.conf 可以包含任意多个 Monitor 部分。服务器布局部分指定相关的 Monitor 部分。

只有有经验的用户才可以设置监视器定义。方式行组成了 Monitor 部分的重要部分。方式行设置相应分辨率的水平定时和垂直定时。Monitor 部分储存有监视器属性(特别是所允许的频率)。

[Warning]警告

除非您对监视器和图形卡功能有深入了解,否则不要更改方式行中的任何内容,因为这可能会对监视器造成严重损坏。

如果您要创建自己的监视器描述,则应非常熟悉 /usr/X11/lib/X11/doc 中的文档。介绍视频方式的内容非常值得专门阅读一下。它详细介绍了硬件的工作原理和如何创建方式行。

现在,很少需要手工指定方式行。如果您使用的是最新的多频同步监视器,则通常由 X 服务器通过 DDC 直接从监视器中读取允许的频率和最佳分辨率,如 SaX2 配置一节所述。如果由于某种原因无法执行此操作,请使用 X 服务器中包括的一个 VESA 方式。这种方式可用于几乎所有图形卡和监视器组合。