FreeBSD 使用手册
上一页 | 第6章 　X Window 系统 | 下一页

# 6.4 配置 X11

Contributed by Christopher Shumway.

## 6.4.1 开始之前

在配置 X11 之前， 您需要了解所安装的系统的下列信息：

- 显示器规格

- 显示卡的芯片类型

- 显示卡的显存容量

显示器的规格被 X11 用来决定显示的分辨率和刷新率。 这些规格通常可以从显示器所带的文档中， 以及制造商的网站找到。 需要知道两个数字范围： 垂直刷新率和水平刷新率。

显示卡的芯片类型将决定 X11 使用什么模块来驱动图形硬件。 尽管系统能自动检测出绝大多数的硬件， 但事先了解在自动检测出错的时候还是很有用处的。

显示卡的显存大小决定了系统支持的分辨率和颜色深度。 了解这些限制非常重要。

## 6.4.2 配置 X11

对于 Xorg 7.3 这个版本， 可以不需要任何的配置文件就能运行，在提示符下键如下命令：

    % startx

从 Xorg 7.4 开始， 可以使用 HAL 自动检测键盘和鼠标。Ports `sysutils/hal` 和 `devel/dbus` 将被作为 `x11/xorg` 所依赖的包安装进系统。 并且需要在 `/etc/rc.conf` 文件中启用：

    hald_enable="YES"
    dbus_enable="YES"

在更深入的配置 Xorg 以前， 需要运行这些服务 (手工启动或者重启机器)。

自动配置对于某些硬件可能不起作用或者无法做到期望的配置。 在这种情况下就有必要做一些手工配置。

> 注意: 诸如 GNOME， KDE 或 Xfce 之类的桌面环境， 大多都提供了一些允许用户非常易用的工具， 来设置像分辨率这样的显示参数。 所以如果你觉得默认的配置并不适合， 而且你打算安装一个这样的桌面环境， 那么就请继续完成桌面环境的安装， 并使用适合的显示设置工具。

配置 X11 需要一些步骤。 第一步是以超级用户的身份建立初始的配置文件：

    # Xorg -configure

这会在 `/root` 中生成一个叫做 `xorg.conf.new` 的配置文件 (无论您使用 su(1) 或直接登录， 都会改变默认的 `$HOME` 目录变量)。 X11 程序将尝试探测系统中的图形硬件，并将探测到的硬件信息写入配置文件， 以便加载正确的驱动程序。

下一步是测试现存的配置文件， 以确认 Xorg 能够同系统上的图形设备正常工作。 对于 Xorg 7.3 或者之前的版本， 键入：

    # Xorg -config xorg.conf.new

从 Xorg 7.4 和更高的版本开始， 这个测试将显示出一个黑色的屏幕，对于判断 X11 是否能正常工作会造成一些困扰。 可以通过 `retro` 选项使用旧的模式：

    # Xorg -config xorg.conf.new -retro

如果看到黑灰的格子以及 X 型鼠标指针， 就表示配置成功了。 要退出测试， 需要同时按下 Ctrl+Alt+F`n` 来切换到用于启动 X 的虚拟控制台 (F1 表示第一个虚拟控制台) 之后按 Ctrl+C。

> 注意: 在Xorg 7.3 以及更早期的版本中， 应使用 Ctrl+Alt+Backspace 组合键来强制退出 Xorg。 如果需要在 7.4 和之后的版本中启用这个组合键， 可以在任意 X 终端模拟器中输入下面的命令：

>     % setxkbmap -option terminate:ctrl_alt_bksp

> 或者为 hald 创建一个叫作 `x11-input.fdi` 的键盘配置文件并保存至 `/usr/local/etc/hal/fdi/policy` 目录。 这个文件需包含以下这些：

>     <?xml version="1.0" encoding="iso-8859-1"?>
>     <deviceinfo version="0.2">
>       <device>
>         <match key="info.capabilities" contains="input.keyboard">
>     	  <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge>
>         </match>
>       </device>
>     </deviceinfo>

> 你可能需要重启你的机器来使得 hald 重新读取这个文件。

> 此外， 还需要在 `xorg.conf.new` 中的 `ServerLayout` 或 `ServerFlags` 小节中添加：

>     Option	"DontZap"	"off"

如果鼠标无法正常工作， 在继续深入之前需要先配置它。 参阅 FreeBSD 安装一章中的 第 2.10.10 节。 另外， 从 7.4 版本开始， `xorg.conf` 中的 `InputDevice` 部分将被忽略， 这有助于自动检测硬件设备。 可以在这个文件中的 `ServerLayout` 或者 `ServerFlags` 加入以下选项使用旧的模式：

    Option "AutoAddDevices" "false"

输入设备连同其他需要的选项 (比如， 键盘布局切换) 就可以像在之前的版本中的那样配置了。

> 注意: 正如前面所提到的， 自版本 7.4 开始 hald 守护进程默认自动检测你的键盘。 可能检测出你的键盘布局或型号有差异， 在桌面环境中， 比如 GNOME， KDE 或者 Xfce 提供了工具来配置键盘。 另一方面， 也可在 setxkbmap(1) 工具的帮助下或者通过 hald 的配置文件来直接设置键盘的属性。

> 举例来说， 如果某人想要使用一个 PC 102 键法语布局的键盘， 我们就需要为 hald 创建一个配置文件， 叫作 `x11-input.fdi` 并保存入 `/usr/local/etc/hal/fdi/policy` 目录。 这个文件需要包含如下这些：

>     <?xml version="1.0" encoding="iso-8859-1"?>
>     <deviceinfo version="0.2">
>       <device>
>         <match key="info.capabilities" contains="input.keyboard">
>     	  <merge key="input.x11_options.XkbModel" type="string">pc102</merge>
>     	  <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
>         </match>
>       </device>
>     </deviceinfo>

> 如果这个文件已经存在， 只要把键盘配置相关的部分拷贝加入即可。

> 你需要重启你的机器使 hald 读入此文件。

> 也可以在 X 模拟终端或一个脚本中使用以下的命令达到相同的效果:

>     % setxkbmap -model pc102 -layout fr

> `/usr/local/share/X11/xkb/rules/base.lst` 列出了各种不同的键盘， 布局和可用的选项。

接下来是调整 `xorg.conf.new` 配置文件并作测试。 用文本编辑器如 emacs(1) 或 ee(1) 打开这个文件。 要做的第一件事是为当前系统的显示器设置刷新率。 这些值包括垂直和水平的同步频率。 把它们加到 `xorg.conf.new` 的 `"Monitor"` 小节中：

    Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "Monitor Model"
            HorizSync    30-107
            VertRefresh  48-120
    EndSection

在配置文件中也有可能没有 `HorizSync` 和 `VertRefresh`。 如果是这样的话， 就只能手动添加， 并在 `HorizSync` 和 `VertRefresh` 后面设置合适的数值了。 在上面的例子中， 给出了相应的显示器的参数。

X 能够使用显示器所支持的 DPMS (能源之星) 功能。 xset(1) 程序可以控制超时时间， 并强制待机、挂起或关机。 如果希望启用显示器的 DPMS 功能， 则需要把下面的设置添加到 monitor 节中：

            Option       "DPMS"

关闭 `xorg.conf.new` 之前还应该选择默认的分辨率和色深。 这是在 `"Screen"` 小节中定义的：

    Section "Screen"
            Identifier "Screen0"
            Device     "Card0"
            Monitor    "Monitor0"
            DefaultDepth 24
            SubSection "Display"
                    Viewport  0 0
                    Depth     24
                    Modes     "1024x768"
            EndSubSection
    EndSection

`DefaultDepth` 关键字描述了要运行的默认色深。 这可以通过 Xorg(1) 的 `-depth` 命令行开关来替代配置文件中的设置。 `Modes` 关键字描述了给定颜色深度下屏幕的分辨率。 需要说明的是， 目标系统的图形硬件只支持由 VESA 定义的标准模式。 前面的例子中， 默认色深是使用 24位色。 在采用这个色深时， 允许的分辨率是 1024x768。

最后就是将配置文件存盘， 并使用前面介绍的测试模式测试一下。

> 注意: 在发现并解决问题的过程中， 包含了与 X11 服务器相关的各个设备的信息的 X11 日志文件会为您发现和排除问题有所帮助。 Xorg 日志的文件名是 `/var/log/Xorg.0.log` 这样的格式。 实际的日志文件名可能是 `Xorg.0.log` 到 `Xorg.8.log` 等等。

如果一切准备妥当， 就可以把配置文件放到公共的目录中了。 您可以在 Xorg(1) 里面找到具体位置。 这个位置通常是 `/etc/X11/xorg.conf` 或 `/usr/local/etc/X11/xorg.conf`。

    # cp xorg.conf.new /etc/X11/xorg.conf

现在已经完成了 X11 的配置全过程。 Xorg 可以通过 startx(1) 工具来启动。 除此之外， X11 服务器也可以用 xdm(1) 来启动。

## 6.4.3 高级配置主题

### 6.4.3.1 配置 Intel® i810 显示芯片组

配置Intel i810芯片组的显示卡需要有针对 X11 的能够用来驱动显示卡的 `agpgart` AGP程序接口。 请参见 agp(4) 驱动程序的联机手册了解更多细节。

这也适用于其他的图形卡硬件配置。 注意如果系统没有将 agp(4) 驱动程序编译进内核，尝试用 kldload(8) 加载模块是无效的。 这个驱动程序必须编译进内核或者使用 `/boot/loader.conf` 在启动时加载进入内核。

### 6.4.3.2 添加宽屏平板显示器

这一节假定您了解一些关于高级配置的知识。 如果使用前面的标准配置工具不能产生可用的配置， 则在日志文件中提供的信息应该足以修正配置使其正确工作。 如果需要的话， 您应使用一个文本编辑器来完成这项工作。

目前的宽屏 (WSXGA、 WSXGA+、 WUXGA、 WXGA、 WXGA+， 等等) 支持 16:10 和 10:9 或一些支持不大好的显示比例。 常见的一些 16:10 比例的分辨率包括：

- 2560x1600

- 1920x1200

- 1680x1050

- 1440x900

- 1280x800

有时， 也可以简单地把这些分辨率作为 `Section "Screen"` 中的 `Mode` 来进行配置， 类似下面这样：

    Section "Screen"
    Identifier "Screen0"
    Device     "Card0"
    Monitor    "Monitor0"
    DefaultDepth 24
    SubSection "Display"
    	Viewport  0 0
    	Depth     24
    	Modes     "1680x1050"
    EndSubSection
    EndSection

Xorg 能够自动地通过 I2C/DDC 信息来自动获取宽屏显示器的分辨率信息， 并处理显示器支持的频率和分辨率。

如果驱动程序没有对应的 `ModeLines`， 就需要给 Xorg 一些提示了。 使用 `/var/log/Xorg.0.log` 能够提取足够的信息， 就可以写一个可用的 `ModeLine` 了。 这类信息如下所示：

    (II) MGA(0): Supported additional Video Mode:
    (II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
    (II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
    (II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
    (II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz

这些信息称做 EDID 信息。 从中建立 `ModeLine` 只是把这些数据重新排列顺序而已：

    ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

如此， 本例中的 `Section "Monitor"` 中的 `ModeLine` 应类似下面的形式：

    Section "Monitor"
    Identifier      "Monitor1"
    VendorName      "Bigname"
    ModelName       "BestModel"
    ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
    Option          "DPMS"
    EndSection

经过简单的编辑步骤之后， X 就可以在您的宽屏显示器上启动了。

上一页 | 起始页 | 下一页
安装 X11 | 上一级 | 在 X11 中使用字体

本文档和其它文档可从这里下载：ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读文档，如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.