5.4. Xorg 設定

Warren Block

5.4.1. 快速開始

Xorg supports most common video cards, keyboards, and pointing devices. These devices are automatically detected and do not require any manual configuration.

  1. If Xorg has been used on this computer before, move or remove any existing configuration files:

    # mv /etc/X11/xorg.conf ~/xorg.conf.etc
    # mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc
  2. Add the user who will run Xorg to the video or wheel group to enable 3D acceleration when available. To add user jru to whichever group is available:

    # pw groupmod video -m jru || pw groupmod wheel -m jru
  3. The TWM window manager is included by default. It is started when Xorg starts:

    % startx
  4. On some older versions of FreeBSD, the system console must be set to vt(4) before switching back to the text console will work properly. See 節 5.4.3, “核心模式設定 (Kernel Mode Setting, KMS)”.

5.4.2. 用來加速影像處理的使用者群組

Access to /dev/dri is needed to allow 3D acceleration on video cards. It is usually simplest to add the user who will be running X to either the video or wheel group. Here, pw(8) is used to add user slurms to the video group, or to the wheel group if there is no video group:

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

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

When the computer switches from displaying the console to a higher screen resolution for X, it must set the video output mode. Recent versions of Xorg use a system inside the kernel to do these mode changes more efficiently. Older versions of FreeBSD use sc(4), which is not aware of the KMS system. The end result is that after closing X, the system console is blank, even though it is still working. The newer vt(4) console avoids this problem.

Add this line to /boot/loader.conf to enable vt(4):


5.4.4. 設定檔 目錄

Xorg looks in several directories for configuration files. /usr/local/etc/X11/ is the recommended directory for these files on FreeBSD. Using this directory helps keep application files separate from operating system files.

Storing configuration files in the legacy /etc/X11/ still works. However, this mixes application files with the base FreeBSD files and is not recommended. 單檔或多檔

It is easier to use multiple files that each configure a specific setting than the traditional single xorg.conf. These files are stored in the xorg.conf.d/ subdirectory of the main configuration file directory. The full path is typically /usr/local/etc/X11/xorg.conf.d/.

Examples of these files are shown later in this section.

The traditional single xorg.conf still works, but is neither as clear nor as flexible as multiple files in the xorg.conf.d/ subdirectory.

5.4.5. 顯示卡


3D acceleration is supported on most Intel® graphics up to Ivy Bridge (HD Graphics 2500, 4000, and P4000), including Iron Lake (HD Graphics) and Sandy Bridge (HD Graphics 2000).

Driver name: intel

For reference, see https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units.

AMD® Radeon

2D and 3D acceleration is supported on Radeon cards up to and including the HD6000 series.

Driver name: radeon

For reference, see https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units.


Several NVIDIA drivers are available in the x11 category of the Ports Collection. Install the driver that matches the video card.

For reference, see https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units.

Hybrid Combination Graphics

Some notebook computers add additional graphics processing units to those built into the chipset or processor. Optimus combines Intel® and NVIDIA hardware. Switchable Graphics or Hybrid Graphics are a combination of an Intel® or AMD® processor and an AMD® Radeon GPU.

Implementations of these hybrid graphics systems vary, and Xorg on FreeBSD is not able to drive all versions of them.

Some computers provide a BIOS option to disable one of the graphics adapters or select a discrete mode which can be used with one of the standard video card drivers. For example, it is sometimes possible to disable the NVIDIA GPU in an Optimus system. The Intel® video can then be used with an Intel® driver.

BIOS settings depend on the model of computer. In some situations, both GPUs can be left enabled, but creating a configuration file that only uses the main GPU in the Device section is enough to make such a system functional.

Other Video Cards

Drivers for some less-common video cards can be found in the x11-drivers directory of the Ports Collection.

Cards that are not supported by a specific driver might still be usable with the x11-drivers/xf86-video-vesa driver. This driver is installed by x11/xorg. It can also be installed manually as x11-drivers/xf86-video-vesa. Xorg attempts to use this driver when a specific driver is not found for the video card.

x11-drivers/xf86-video-scfb is a similar nonspecialized video driver that works on many UEFI and ARM® computers.

Setting the Video Driver in a File

To set the Intel® driver in a configuration file:

範例 5.1. 在單檔中選擇 Intel® 影像驅動程式


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

If more than one video card is present, the BusID identifier can be uncommented and set to select the desired card. A list of video card bus IDs can be displayed with pciconf -lv | grep -B3 display.

To set the Radeon driver in a configuration file:

範例 5.2. 在單檔中選擇 Radeon 影像驅動程式


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

To set the VESA driver in a configuration file:

範例 5.3. 在單檔中選擇 VESA 影像驅動程式


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

To set the scfb driver for use with a UEFI or ARM® computer:

範例 5.4. 在單檔中選擇 scfb 影像驅動程式


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

5.4.6. 顯示器

Almost all monitors support the Extended Display Identification Data standard (EDID). Xorg uses EDID to communicate with the monitor and detect the supported resolutions and refresh rates. Then it selects the most appropriate combination of settings to use with that monitor.

Other resolutions supported by the monitor can be chosen by setting the desired resolution in configuration files, or after the X server has been started with xrandr(1).

Using xrandr(1)

Run xrandr(1) without any parameters to see a list of video outputs and detected monitor modes:

% 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)

This shows that the DVI-0 output is being used to display a screen resolution of 1920x1200 pixels at a refresh rate of about 60 Hz. Monitors are not attached to the DisplayPort-0 and HDMI-0 connectors.

Any of the other display modes can be selected with xrandr(1). For example, to switch to 1280x1024 at 60 Hz:

% xrandr --mode 1280x1024 --rate 60

A common task is using the external video output on a notebook computer for a video projector.

The type and quantity of output connectors varies between devices, and the name given to each output varies from driver to driver. What one driver calls HDMI-1, another might call HDMI1. So the first step is to run xrandr(1) to list all the available outputs:

% 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)

Four outputs were found: the built-in panel LVDS1, and external VGA1, HDMI1, and DP1 connectors.

The projector has been connected to the VGA1 output. xrandr(1) is now used to set that output to the native resolution of the projector and add the additional space to the right side of the desktop:

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

--auto chooses the resolution and refresh rate detected by EDID. If the resolution is not correctly detected, a fixed value can be given with --mode instead of the --auto statement. For example, most projectors can be used with a 1024x768 resolution, which is set with --mode 1024x768.

xrandr(1) is often run from .xinitrc to set the appropriate mode when X starts.

Setting Monitor Resolution in a File

To set a screen resolution of 1024x768 in a configuration file:

範例 5.5. 在單檔中設定螢幕解析度


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

The few monitors that do not have EDID can be configured by setting HorizSync and VertRefresh to the range of frequencies supported by the monitor.

範例 5.6. 手動設定顯示器頻率


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

5.4.7. 輸入裝置 鍵盤

Keyboard Layout

The standardized location of keys on a keyboard is called a layout. Layouts and other adjustable parameters are listed in xkeyboard-config(7).

A United States layout is the default. To select an alternate layout, set the XkbLayout and XkbVariant options in an InputClass. This will be applied to all input devices that match the class.

This example selects a French keyboard layout with the oss variant.

範例 5.7. 設定鍵盤配置


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

範例 5.8. 設定多個鍵盤配置

Set United States, Spanish, and Ukrainian keyboard layouts. Cycle through these layouts by pressing Alt+Shift. x11/xxkb or x11/sbxkb can be used for improved layout switching control and current layout indicators.


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

Closing Xorg From the Keyboard

X can be closed with a combination of keys. By default, that key combination is not set because it conflicts with keyboard commands for some applications. Enabling this option requires changes to the keyboard InputDevice section:

範例 5.9. 開啟鍵盤離開 X 功能


Section	"InputClass"
	Identifier	"KeyboardDefaults"
	Driver		"keyboard"
	MatchIsKeyboard	"on"
	Option		"XkbOptions" "terminate:ctrl_alt_bksp"
EndSection 滑鼠與指標裝置

Many mouse parameters can be adjusted with configuration options. See mousedrv(4) for a full list.

Mouse Buttons

The number of buttons on a mouse can be set in the mouse InputDevice section of xorg.conf. To set the number of buttons to 7:

範例 5.10. 設定滑鼠按鍵編號


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

5.4.8. 手動設定

In some cases, Xorg autoconfiguration does not work with particular hardware, or a different configuration is desired. For these cases, a custom configuration file can be created.

A configuration file can be generated by Xorg based on the detected hardware. This file is often a useful starting point for custom configurations.

Generating an xorg.conf:

# Xorg -configure

The configuration file is saved to /root/xorg.conf.new. Make any changes desired, then test that file with:

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

After the new configuration has been adjusted and tested, it can be split into smaller files in the normal location, /usr/local/etc/X11/xorg.conf.d/.

本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。

關於本文件的問題,請洽詢 <doc@FreeBSD.org>。