在配置 X11 之前, 您需要了解所安装的系统的下列信息:
显示器规格
显示卡的芯片类型
显示卡的显存容量
显示器的规格被 X11 用来决定显示的分辨率和刷新率。 这些规格通常可以从显示器所带的文档中, 以及制造商的网站找到。 需要知道两个数字范围: 垂直刷新率和水平刷新率。
显示卡的芯片类型将决定 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+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 中的 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) 来启动。
配置Intel i810芯片组的显示卡需要有针对 X11 的能够用来驱动显示卡的 agpgart AGP程序接口。 请参见 agp(4) 驱动程序的联机手册了解更多细节。
这也适用于其他的图形卡硬件配置。 注意如果系统没有将 agp(4) 驱动程序编译进内核,尝试用 kldload(8) 加载模块是无效的。 这个驱动程序必须编译进内核或者使用 /boot/loader.conf 在启动时加载进入内核。
这一节假定您了解一些关于高级配置的知识。 如果使用前面的标准配置工具不能产生可用的配置, 则在日志文件中提供的信息应该足以修正配置使其正确工作。 如果需要的话, 您应使用一个文本编辑器来完成这项工作。
目前的宽屏 (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>.