5.4. Xorg设定

Warren Block

5.4.1. 快速开始

Xorg支持大多数常见的显卡、键盘以及指标装置。

提示:

显卡、显示器以及输入装置会自动侦测,无须任何手动设置。除非自动设置失败,否则请勿建立xorg.conf或执行-configure步骤。

  1. Xorg曾经在电脑使用过,可先将现有的配置文件重新命名或移除:

    # mv /etc/X11/xorg.conf ~/xorg.conf.etc
    # mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc
  2. 加入要执行Xorg的使用者到videowheel群组,以便在可用时能开启3D加速。要加入使用者jru到任一个可用的群组:

    # pw groupmod video -m jru || pw groupmod wheel -m jru
  3. 预设内含TWM视窗管理程序,启动Xorg时便会启动该视窗管理程序:

    % startx
  4. 在部份较旧版的FreeBSD,在切换回文字Console前系统Console必须设为vt(4)才可正常运作,请参考第 5.4.3 节 “核心模式设定(Kernel Mode Setting,KMS)”

5.4.2. 可加速图像处理的使用者群组

要存取/dev/dri需要允许显卡的3D加速功能,这通常只需要将要执行X的使用者加入videowheel群组。此处使用pw(8)来将使用者slurms加入video群组,若没有video则会加入wheel群组:

# pw groupmod video -m slurms || pw groupmod wheel -m slurms

5.4.3. 核心模式设定(Kernel Mode Setting,KMS

当电脑显示从Console切换到高屏幕分辨率供X使用时,必须设定图像输出模式。最近版本的Xorg使用了核心内部的系统来让切换模式更有效率。较旧版的FreeBSD使用的sc(4)并不知到KMS系统的存在,这会导致关闭X之后即始仍在运作但系统Console却呈现空白。较新版的vt(4) Console可避免这个问题。

加入此行到/boot/loader.conf来开启vt(4)

kern.vty=vt

5.4.4. 配置文件

通常不需要做手动设置,除非自动设置无法运作,否则请不要手动建立配置文件。

5.4.4.1. 目录

Xorg会查看数个目录来寻找配置文件,在FreeBSD较建议使用/usr/local/etc/X11/来存放这些配置文件,使用这个目录可以帮助将应用程序档案与操作系统档案分离。

储存配置文件在传统的/etc/X11/仍可运作,但并不建议将应用程序档案与基础FreeBSD档案混合在一起存放。

5.4.4.2. 单档或多档

使用多档,每一个档案只设定一个指定项目会较传统使用单一xorg.conf设定来的简单。这些档案会存放在主配置文件目录下的xorg.conf.d/子目录,完整路径通常为/usr/local/etc/X11/xorg.conf.d/

于本节稍后会有这些档案的示例。

传统单一xorg.conf的方式仍可运作,但比起在xorg.conf.d/子目录中的多档设定方式较不明了且没有弹性。

5.4.5. 显卡

随着 FreeBSD 的发展,最近几个版本的 FreeBSD 可以使用 Ports 和 pkg 安装图形驱动,用户可以从 graphics/drm-kmod 中选择要安装的驱动。

Intel KMS 驱动, Radeon KMS 驱动, AMD KMS 驱动

Radeon显卡支持2D及3D加速,最新到HD6000系列。

驱动程序名称:intel

Radeon显卡支持2D及3D加速,最新到HD6000系列。

驱动程序名称:radeon

Radeon显卡支持2D及3D加速,最新到HD6000系列。

驱动程序名称:radeon

参考文献请至https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units

Intel®

3D加速在大多数Intel®显示芯片都有支持,最新到Ivy Bridge(HD Graphics 2500,4000,及P4000)包含Iron Lake(HD Graphics)与Sandy Bridge(HD Graphics 2000)。

驱动程序名称:intel

参考文献请至https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units

AMD® Radeon

Radeon显卡支持2D及3D加速,最新到HD6000系列。

驱动程序名称:radeon

参考文献请至https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units

NVIDIA

有数个NVIDIA驱动程序可于Port套件集中的x11分类取得,请安装其中与显卡相符的驱动程序。

参考文献请至https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units

混合组合绘图芯片

部份笔记型电脑加入了额外绘图处理单元到那些内置晶片组或处理。Optimus结合了Intel®及NVIDIA的硬件,Switchable GraphicsHybrid Graphics则是结合了Intel®或AMD®处理器与AMD® Radeon GPU

这些混合绘图系统的实作方式均不同,FreeBSD的Xorg尚无法驱动所有的混合绘图系统版本。

部份电脑提供了BIOS的选项可以关闭其中一个绘图界面卡或选择discrete模式,可用使用其中一种标准显卡驱动程序来驱动。例如,有时关闭Optimus系统中的NVIDIA GPU是可能让Intel®显示芯片可用Intel®驱动程序驱动。

BIOS设定会依电脑的型号有所不同,在某些情况下,可以同时开启两个GPU,而在建立的配置文件中的Device节只使用主要的GPU便能让系统运作。

其他显卡

较不常见的显卡驱动程序可在Port套件集的x11-drivers目录找到。

若没有特定的驱动程序可以支持显卡,仍可能可用x11-drivers/xf86-video-vesa驱动程序来驱动。该驱动程序可使用x11/xorg安装,也可使用x11-drivers/xf86-video-vesa手动安装。当没有指定驱动程序时Xorg会尝试使用这个驱动程序来驱动显卡。

x11-drivers/xf86-video-scfb也是不特定显卡的驱动程序,可在许多UEFIARM®的电脑上运作。

在档案中设定图像驱动程序

要在配置文件设定使用Intel®驱动程序:

例 5.1. 在单档中选择Intel®图像驱动程序

/usr/local/etc/X11/xorg.conf.d/driver-intel.conf

Section "Device"
	Identifier "Card0"
	Driver     "intel"
	# BusID    "PCI:1:0:0"
EndSection

若有多张显卡,可取消注释BusID identifier然后设定为想要的显卡,显卡的Bus ID清单可以使用pciconf -lv | grep -B3 display取得。


要在配置文件设定使用Radeon驱动程序:

例 5.2. 在单档中选择Radeon图像驱动程序

/usr/local/etc/X11/xorg.conf.d/driver-radeon.conf

Section "Device"
	Identifier "Card0"
	Driver     "radeon"
EndSection

要在配置文件设定使用VESA驱动程序:

例 5.3. 在单档中选择VESA图像驱动程序

/usr/local/etc/X11/xorg.conf.d/driver-vesa.conf

Section "Device"
	Identifier "Card0"
	Driver     "vesa"
EndSection

要设定UEFIARM®电脑使用scfb驱动程序:

例 5.4. 在单档中选择scfb图像驱动程序

/usr/local/etc/X11/xorg.conf.d/driver-scfb.conf

Section "Device"
	Identifier "Card0"
	Driver     "scfb"
EndSection

5.4.6. 显示器

几乎所有显示器都支持延伸显示辨识数据标准(Extended Display Identification Data,EDID),Xorg会使用EDID与显示器通信并侦测支持的分辨率与更新频率,然后选择最适合的设定组合使用该显示器。

其他显示器支持的分辨率可透过在配置文件中设定想要的分辨率来选择,或者在X服务器启动之后使用xrandr(1)

使用xrandr(1)

执行xrandr(1)不加任何参数可检查图像输出及已侦测到的显示器模式清单:

% xrandr
Screen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192
DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis) 495mm x 310mm
   1920x1200     59.95*+
   1600x1200     60.00
   1280x1024     85.02    75.02    60.02
   1280x960      60.00
   1152x864      75.00
   1024x768      85.00    75.08    70.07    60.00
   832x624       74.55
   800x600       75.00    60.32
   640x480       75.00    60.00
   720x400       70.08
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)

这个结果显示DVI-0输出被用来显示分辨率为1920x1200像素于更新频率约60 Hz的画面,未有显示器连接到DisplayPort-0HDMI-0接头。

可使用xrandr(1)来选择任何其他的显示模式。例如要切换为1280x1024于60 Hz:

% xrandr --mode 1280x1024 --rate 60

在笔记型电脑使用外部显示输出到投影机是常见的作业。

不同装置间输出接头的类型与数量也不同,给每个输出的名称在不同驱动程序间也不同。在某些驱动程序称为HDMI-1的输出在其他驱动程序则可能称为HDMI1。因此第一个步骤是执行xrandr(1)列出所有可用的输出:

% xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1366x768      60.04*+
   1024x768      60.00
   800x600       60.32    56.25
   640x480       59.94
VGA1 connected (normal left inverted right x axis y axis)
   1280x1024     60.02 +  75.02
   1280x960      60.00
   1152x864      75.00
   1024x768      75.08    70.07    60.00
   832x624       74.55
   800x600       72.19    75.00    60.32    56.25
   640x480       75.00    72.81    66.67    60.00
   720x400       70.08
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

已找到四个输出:内置面板的LVDS1,外接的VGA1HDMI1以及DP1接头。

投影机已连接至VGA1输出,现在使用xrandr(1)来设定该输出到投影机(原始分辨率)并加入额外的空间到桌面的右侧:

% xrandr --output VGA1 --auto --right-of LVDS1

--auto会选择使用EDID侦测到的分辨率与更新频率。若未正确侦测分辨率,可替换--auto--mode然后给予固定值。例如大部份的投影机可使用1024x768分辨率为,则可设定--mode 1024x768

xrandr(1)通常会在.xinitrc执行以在X启动时设定适合的模式。

在档案中设定屏幕分辨率

在配置文件设定屏幕分辨率为1024x768:

例 5.5. 在单档中设定屏幕分辨率

/usr/local/etc/X11/xorg.conf.d/screen-resolution.conf

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	SubSection "Display"
	Modes      "1024x768"
	EndSubSection
EndSection

少数显示器没有EDID,可设定HorizSyncVertRefresh为显示器支持的频率范围。

例 5.6. 手动设定显示器频率

/usr/local/etc/X11/xorg.conf.d/monitor0-freq.conf

Section "Monitor"
	Identifier   "Monitor0"
	HorizSync    30-83   # kHz
	VertRefresh  50-76   # Hz
EndSection

5.4.7. 输入装置

5.4.7.1. 键盘

键盘配置

键盘上标准按键的位置称做配置(Layout)。配置与其他可调整的参数列于xkeyboard-config(7)

预设为United States配置,要选择其他的配置可在InputClass设定XkbLayoutXkbVariant选项。这会套用所有符合该类别的输入装置。

这个例子选择French键盘配置使用oss变体。

例 5.7. 设定键盘配置

/usr/local/etc/X11/xorg.conf.d/keyboard-fr-oss.conf

Section	"InputClass"
	Identifier	"KeyboardDefaults"
	Driver		"keyboard"
	MatchIsKeyboard	"on"
	Option		"XkbLayout" "fr"
	Option		"XkbVariant" "oss"
EndSection

例 5.8. 设定多个键盘配置

设定United States,Spanish与Ukrainian键盘配置,并可按Alt+Shift来切换这些配置。可使用x11/xxkbx11/sbxkb来加强配置切换控制与目前配置的指示。

/usr/local/etc/X11/xorg.conf.d/kbd-layout-multi.conf

Section	"InputClass"
	Identifier	"All Keyboards"
	MatchIsKeyboard	"yes"
	Option		"XkbLayout" "us, es, ua"
EndSection

从键盘关闭Xorg

X可以使用组合键来关闭,预设并未设定组合键,因为该组合键与部份应用程序的键盘指令冲突。要开启这个选项需要更改键盘InputDevice节:

例 5.9. 开启键盘离开X功能

/usr/local/etc/X11/xorg.conf.d/keyboard-zap.conf

Section	"InputClass"
	Identifier	"KeyboardDefaults"
	Driver		"keyboard"
	MatchIsKeyboard	"on"
	Option		"XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

5.4.7.2. 鼠标与指标装置

有许多鼠标参数可使用设定选项来调整,请参考mousedrv(4)来取得完整清单。

鼠标按键

鼠标的按键数可在xorg.conf的鼠标InputDevice节设定,例如要设定按键数为7:

例 5.10. 设定鼠标按键数

/usr/local/etc/X11/xorg.conf.d/mouse0-buttons.conf

Section "InputDevice"
	Identifier  "Mouse0"
	Option      "Buttons" "7"
EndSection

5.4.8. 手动配置

在某些情况Xorg的自动设定无法在特定硬件上运作,或需要使用不同的设定。针对这些情况会建立自定义的配置文件。

警告:

非必要请勿手动建立配置文件,非必要的手动设置会造成运作不正常。

配置文件可由Xorg根据侦测到的硬件产生,这个档案对一开始自定义设定很有帮助。

产生xorg.conf

# Xorg -configure

配置文件会储存至/root/xorg.conf.new,做任何更改后,然后使用以下指令测试该配置文件(使用-retro标签,这样可以在后台看到):

# Xorg -retro -config /root/xorg.conf.new

在新配置文件调整与测试过后,便可分开成较小的档案放置到正常的位置/usr/local/etc/X11/xorg.conf.d/

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

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

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