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/haldevel/dbus 将被作为 x11/xorg 所依赖的包安装进系统。 并且需要在 /etc/rc.conf 文件中启用:

hald_enable="YES" dbus_enable="YES"

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

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

注意:

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

配置 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+Fn 来切换到用于启动 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 中的 ServerLayoutServerFlags 小节中添加:

Option "DontZap" "off"

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

Option "AutoAddDevices" "false"

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

注意:

正如前面所提到的, 自版本 7.4 开始 hald 守护进程默认自动检测你的键盘。 可能检测出你的键盘布局或型号有差异, 在桌面环境中, 比如 GNOMEKDE 或者 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

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

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.logXorg.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 就可以在您的宽屏显示器上启动了。

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

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.