5.9 故障排除

如果鼠标不能工作,你需要在继续使用之前先配置它。在最新的 Xorg 版本中,xorg.conf 中的 InputDevice 部分被省略了,转而支持设备的自动检测。要恢复以前的方式,请在该文件的 ServerLayoutServerFlags 部分添加以下一行:

  1. Option "AutoAddDevices" "false"

然后可以像以前的版本一样配置输入设备,以及任何其他所需要的选项(例如,键盘布局切换)。

注意:

警告:

这一节包含了一些过时的内容。HAL 守护程序 (hald) 已经不再是 FreeBSD 桌面设置的一部分。

如前所述,默认情况下,hald 守护程序会自动检测你的键盘。某些情况下你的键盘布局或型号有可能没有被正确匹配,不过 GNOME、KDE 或 Xfce 等桌面环境提供了配置键盘的工具。然而,也可以通过 setxkbmap(1) 工具或者通过 hald 的配置规则直接设置键盘属性。

例如,如果想使用法式布局的 PC 102 键键盘,我们必须为 hald 创建一个名为 x11-input.fdi 的键盘配置文件,并保存在 /usr/local/etc/hal/fdi/policy 目录下。这个文件应该包含以下几行。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <deviceinfo version="0.2">
  3. <device>
  4. <match key="info.capabilities" contains="input.keyboard">
  5. <merge key="input.x11_options.XkbModel" type="string">pc102</merge>
  6. <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
  7. </match>
  8. </device>
  9. </deviceinfo>

如果这个文件已经存在,只需复制并添加到你的文件中有关键盘配置的行。

你需要重新启动你的机器,以让 hald 来读取这个文件。

也可以用下面的命令从 X 终端或脚本中进行同样的配置:

  1. % setxkbmap -model pc102 -layout fr

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

xorg.conf.new 配置文件现在可以根据你的需求进行微调。在文本编辑器中打开该文件,如 emacs(1)ee(1)。如果显示器是旧的或不寻常的型号,不支持同步频率的自动检测,那这些设置可以添加到 xorg.conf.new"Monitor" 部分中:

  1. Section "Monitor"
  2. Identifier "Monitor0"
  3. VendorName "Monitor Vendor"
  4. ModelName "Monitor Model"
  5. HorizSync 30-107
  6. VertRefresh 48-120
  7. EndSection

大多数显示器支持同步频率的自动检测,因此不需要手动输入这些值。对于少数不支持自动检测的显示器,只需输入制造商提供的数值,即可避免潜在的损害。

X 允许 DPMS(能源之星)功能与有线显示器一起使用。xset(1) 程序可以控制超时,并可以强制进入待机、休眠或关闭模式。如果你想为你的显示器启用 DPMS 功能,你必须在显示器部分添加以下一行。

  1. Option "DPMS"

xorg.conf.new 配置文件仍在编辑器中打开时,选择所需的默认分辨率和色深。这在 "Screen" 小节处定义:

  1. Section "Screen"
  2. Identifier "Screen0"
  3. Device "Card0"
  4. Monitor "Monitor0"
  5. DefaultDepth 24
  6. SubSection "Display"
  7. Viewport 0 0
  8. Depth 24
  9. Modes "1024x768"
  10. EndSubSection
  11. EndSection

DefaultDepth 关键字描述了默认运行的色深。可以用 Xorg(1)-depth 命令行开关来覆盖这个参数。Modes 关键字描述了在给定色深下运行的分辨率。注意,只有目标系统的图形硬件所定义的符合 VESA 标准的模式才被支持。在上面的例子中,默认的色深是每像素二十四位。在这种色深下,可接受的分辨率为 1024×768 像素。

最后,保存配置文件并使用上面给出的测试模式对其进行测试。

注意:

在故障排除过程中,Xorg 日志文件是可以帮助你的工具之一,它包含了 Xorg 服务器所连接的每个设备的信息。Xorg 日志文件名称的格式为 /var/log/Xorg.0.log。日志的确切名称可以从 Xorg.0.logXorg.8.log 等不同。

如果一切顺利,配置文件需要安装在 Xorg(1) 可以找到的常规位置。这通常是 /etc/X11/xorg.conf/usr/local/etc/X11/xorg.conf

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

Xorg 的配置过程现在已经完成。现在可以用 startx(1) 工具来启动 Xorg。Xorg 服务器也可以通过使用 xdm(8) 来启动。

5.9.1 配置英特尔® i810 图形芯片组

Intel® i810 集成芯片组的配置需要 Xorg 的 agpgart AGP编程接口来驱动该卡。更多信息请参见 agp(4) 驱动手册页面。

这将允许将硬件配置成任何其他图形显卡。注意,在没有把 agp(4) 驱动编译进内核的系统上,使用 kldload(8) 来加载模块将不起作用。该驱动必须在启动时编译加载进内核或使用 /boot/loader.conf 加载进内核。

5.9.2 添加宽屏幕平板显示器到设定文件

本节需要用到一些较为复杂的配置知识。如果使用上述标准配置工具没有达到要求,在日志文件中有足够的信息可以用来使设置更有效。这需要用到文本编辑器。

问题可能由目前的宽屏(WSXGA、WSXGA+、WUXGA、WXGA、WXGA+等)标准所支持的 16:10 和 10:9 格式或纵横比导致。一些常见的 16:10 纵横比的屏幕分辨率有:

  • 2560x1600
  • 1920x1200
  • 1680x1050
  • 1440x900
  • 1280x800

在某些情况下,在 Section "Screen" 中添加这些分辨率中的一种作为可能的 Mode 就可以解决:

  1. Section "Screen"
  2. Identifier "Screen0"
  3. Device "Card0"
  4. Monitor "Monitor0"
  5. DefaultDepth 24
  6. SubSection "Display"
  7. Viewport 0 0
  8. Depth 24
  9. Modes "1680x1050"
  10. EndSubSection
  11. EndSection

Xorg 足够聪明,它通过 I2C/DDC 信息标准从宽屏显示器上获取分辨率信息,因此它知道显示器能处理何种频率和分辨率。

如果这些 ModeLines 不存在于驱动中,我们可能需要给 Xorg 一点提示。使用 /var/log/Xorg.0.log,可以提取足够的信息来手动创建一个可以工作的ModeLine。只要寻找类似这样的信息就可以了:

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

这些信息被称为 EDID 信息。要从这些信息中创建一个 ModeLine,只是需要把数字按正确顺序放置:

  1. ModeLine &lt;name&gt; &lt;clock&gt; &lt;4 horiz. timings&gt; &lt;4 vert. timings&gt;

因此,本例中 Section "Monitor" 中的 ModeLine 看起来像这样:

  1. Section "Monitor"
  2. Identifier "Monitor1"
  3. VendorName "Bigname"
  4. ModelName "BestModel"
  5. ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
  6. Option "DPMS"
  7. EndSection

现在完成这些简单的编辑步骤后,X 就可以在你的新宽屏显示器上顺利启动了。

5.9.3 排除 Compiz Fusion 的故障

5.9.3.1 我已经安装了 Compiz Fusion,在运行你提到的命令后,我的窗口没有标题栏和按钮。这是哪里出了问题?

你可能缺少了 /etc/X11/xorg.conf 中的设置。仔细查看这个文件,特别是检查 DefaultDepthAddARGBGLXVisuals 的设置。

5.9.3.2 当我运行命令启动 Compiz Fusion 时,X 服务器崩溃了,我回到了控制台。这是哪里出了问题?

如果你检查 /var/log/Xorg.0.log,你可能会发现 X 启动时的错误信息。最常见的是:

  1. (EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
  2. (EE) NVIDIA(0): log file that the GLX module has been loaded in your X
  3. (EE) NVIDIA(0): server, and that the module is the NVIDIA GLX module. If
  4. (EE) NVIDIA(0): you continue to encounter problems, Please try
  5. (EE) NVIDIA(0): reinstalling the NVIDIA driver.

这通常是在你升级 Xorg 时出现的情况。你需要重新安装 x11/nvidia-driver 软件包,以便让glx 重新编译。