Xorg/指南

From Gentoo Wiki
< Xorg
Jump to: navigation, search
This page is a translated version of the page Xorg/Guide and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

Xorg是X Window server ,它允许用户通过他们的指尖创造一个图形环境。本指南解释了什么是Xorg,如何安装它,以及各种配置选项。

X Window server 是什么?

图形VS命令行

一般来说,大多数用户可能都有点害怕敲命令。它为什么不能够按照自己的方式,比如用鼠标指向并点击?这难道不是Gentoo(和大多数的Linux发行版)提供的自由吗?嗯,当然,你可以做到这一点!Linux提供了许多优秀的用户界面和环境,你可以在现有的系统基础上进行安装。

Gentoo offers a wide variety of flashy graphical interfaces such as window managers and desktop environments which can be installed on top of an existing installation.

这是新用户感到的最大惊喜之一: 在您的系统上运行的图形界面只不过是一个应用程序,而且它“并非”是Linux 内核的一部分或任何其他的内部系统组件。它是你工作站的一个强大工具,并能使您拥有完全的图形化的操作能力。

标准是重要的,一个标准的绘图和移动窗口显示在屏幕上,需要通过鼠标,键盘和其他基本的东西来实现。用户交互的标准是重中之重,把他命名为“”X Window System',通常简称为X11或只是X。它被世界各地的Unix,Linux和Unix类操作系统广泛使用。

这个程序为Linux用户提供运行图形界面的能力,Xorg-X11使用X11的接口和标准,是XFree86项目的一个分支。 XFree86使用的许可证,可能无法与GPL许可兼容;因我们此建议使用Xorg。且官方的Portage树不再提供XFree86包。

X.org 项目

X.org 项目旨在创建和维护一个自由、可再发行的并且开源的 X11。它是一个开放源码,基于X11桌面所需要的基本软件。

Xorg在一个你想运行的硬件和图形软件之间提供了一个接口。除此之外,Xorg也是一个完全的Network-aware,这意味着你可以一个系统上运行一个应用程序,并且还能同时查看其他不同的系统。

安装

在安装Xorg之前,你需要为你的系统做一些准备。首先,我们将设置内核,使其支持输入设备和显卡。现在,我们准备配置/etc/portage/make.conf ,使驱动程序和Xorg包正确编译并安装。

输入驱动程序支持

您将需要通过对您的内核配置更改,来激活对事件接口(CONFIG_INPUT_EVDEV) 的支持。如果你不知道如何配置你的内核,请看内核配置指南

KERNEL 在内核开启evdev
Device Drivers --->
  Input device support --->
  <*>  Event interface

内核模块设置

现代开源的显卡驱动程序依赖于内核模块(KMS)的设置。 KMS提供了改进的图形化引导,更快的用户切换,内置framebuffer终端,便于从控制台Xorg的无缝切换和其他功能。

重要
KMS与传统的帧缓冲驱动程序冲突,必须在你的内核配置中保持disable

首先,准备为你的内核配置好KMS。你必须要做这一步,无论你正在使用哪个Xorg显卡驱动程序。

KERNEL 禁用传统帧缓冲支持,使基本的控制台支持FB
Device Drivers --->
   Graphics support --->
      Frame Buffer Devices --->
         <*> Support for frame buffer devices --->
         ## (禁用包括 VGA、 英特尔、 nVidia、 ATI所有的驱动程序.除了基于 EFI 的帧支持,只有如果你正在使用 UEFI的话)
 
    ## (再往下翻,使基本的控制台得到支持。 KMS使用他。)
    Console display driver support --->
      <*>  Framebuffer Console Support

接下来,配置内核使用正确的KMS驱动。Intel,NVIDIA和AMD / ATI是最常见的显卡,所以接下来请按照您自己的显卡来操作。

对于Intel显卡请看kernel section of the Intel article.

对于 NVidia 显卡:

KERNEL nVidia 设置
Device Drivers --->
   Graphics support --->
      <M/*>  Nouveau (nVidia) cards

对于较新的AMD/ATI显卡(RadeonHD 2000及以上),安装sys-kernel/linux-firmware(包中包括radeonamdgpu;单独的包x11-drivers/radeon-ucode已经不存在了)。一旦其中的某个包被安装,将Radeon驱动设置为内核中的一个模块,或者,设成可选的。配置内核的详细信息见Radeon文章中的固件部分,或者对于较新的AMD显卡(GCN1.1+),文章AMDGPU中的固件部分:

KERNEL AMD/ATI Radeon设置
## (设置内核使用 radeon-ucode 固件)
 Device Drivers --->
   Generic Driver Options --->
   [*]  Include in-kernel firmware blobs in kernel binary
  ## #  ATI卡有关详细信息,包括固件,请参阅Radeon页面
   (radeon/<CARD-MODEL>.bin ...)
  ## # 指定的根目录
   (/lib/firmware/) External firmware blobs to build into the kernel binary
 
## (开启 Radeon KMS 支持)
Device Drivers --->
   Graphics support --->
   <M/*>    ATI Radeon
   [*]      Enable modesetting on radeon by default
   [ ]      Enable userspace modesetting on radeon (DEPRECATED)
KERNEL AMDGPU 设置
## (Setup the kernel to use the amdgpu firmware)
Device Drivers --->
   Generic Driver Options --->
   [*]  Include in-kernel firmware blobs in kernel binary
  ## # AMD card specific, (see AMDGPU page for details which firmware files to include)
   (amdgpu/<CARD-MODEL>.bin ...)
  ## # Specify the root directory
   (/lib/firmware/) External firmware blobs to build into the kernel binary
 
## (Enable Radeon KMS support)
Device Drivers --->
   Graphics support --->
   <M/*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
   <M/*> AMD GPU
         [ /*] Enable amdgpu support for SI parts
         [ /*] Enable amdgpu support for CIK parts 
         [*]   Enable AMD powerplay component  
         ACP (Audio CoProcessor) Configuration  ---> 
             [*] Enable AMD Audio CoProcessor IP support (CONFIG_DRM_AMD_ACP)
         Display Engine Configuration  --->
             [*] AMD DC - Enable new display engine
             [ /*] DC support for Polaris and older ASICs
             [ /*] AMD FBC - Enable Frame Buffer Compression
             [ /*] DCN 1.0 Raven family
   <M/*> HSA kernel driver for AMD GPU devices
附注
老的 Radeon 显卡 (X1900 series 甚至更老) 不需要安装其他固件或进行其他任何配置。 只需启用直接渲染管理(DRM)和ATI Radeon模块即可。
附注
Linux kernel >= 3.9 没有 Enable modesetting on radeon by default 这个选项,因为它默认已经开启了。如果您发现该选项在新内核丢失,请不要惊慌。
附注
Linux内核 >= 4.15确实包括AMDGPU工作所需的Display Core (DC)。这个较新的驱动程序是为GCN5.0 Vega和DCN1.0 Raven Ridge(APU)编写的,但也为GCN1.1 Southern Islands及更新版本开始的旧Radeon显卡增加了额外的功能。计划将旧Radeon卡的这种额外支持作为标准,因此如果您在较新的内核中发现此选项丢失,请不要惊慌。

退出内核配置 重建内核,并重新启动.

现在KMS已经被设置,继续准备下一节,修改 /etc/portage/make.conf

make.conf

现在内核已经配置好了,但是两个重要的变量必须在你安装Xorg之前,在/etc/portage/make.conf中进行配置。

第一个变量是VIDEO_CARDS。这是用于设置你打算使用的显卡驱动程序,它通常是根据你的显卡来选择。对于NVIDIA显卡最常用的配置是:nouveau ;对于ATI(AMD)显卡常用的配置是:radeon 。在支持开源驱动程序方面,NVIDIA和AIT都有积极的发展。如果您有更新的AMD视频卡(Southern Islands及更高版本),您也可以尝试使用新的开源amdgpu驱动程序。有关更多详细信息,请参阅AMDGPU文章。

附注
你也可以试试NVidia 或AMD/ATI各自的闭源驱动: NVIDIA:nvidia ;AMD:fglrx 。 然而,如何设置闭源驱动不在本指南的范围之内,请阅读Gentoo Linux nVidia GuideGentoo Linux ATI FAQ。如果你不知道该挑选哪个闭源驱动,请仔细阅读这些指南以获得更多信息。

intel 驱动程序可用于台式机或笔记本电脑常见的英特尔集成显卡芯片组。

附注
VIDEO_CARDS 这个变量可以含有多个值,只要用空格隔开它们即可。

第二个变量设置是: INPUT_DEVICES ,它用于确认构建哪些输入设备驱动程序。

make.defaultsLibinput 作为默认输入设备驱动程序。

要检查当前激活的内容,请运行:

user $portageq envvar INPUT_DEVICES

如果需要替代输入设备,例如用于笔记本电脑的Synaptics触摸板,请务必将它们添加到 /etc/portage/make.conf文件的INPUT_DEVICES中:

CODE make.conf 文件样板
## (对于鼠标、键盘和Synaptics touchpad的支持)
INPUT_DEVICES="libinput synaptics"
## (对于 NVidia 显卡)
VIDEO_CARDS="nouveau"
## (对于 AMD/ATI 显卡)
VIDEO_CARDS="radeon"

如果推荐设置不起作用,安装x11-base/xorg-drivers(请参阅下面的步骤)。检查所有可用的选项,并选择适用于该系统的那些选项。这个例子是用于使用键盘,鼠标,Synaptics触摸板,以及Radeon显卡的系统配置。

root #emerge --ask --verbose x11-base/xorg-drivers
 
These are the packages that would be merged, in order:
 
Calculating dependencies... done!
[ebuild   R   ]  x11-base/xorg-drivers-1.9  INPUT_DEVICES="evdev synaptics
-acecad -aiptek -elographics% -fpit% -joystick -keyboard -mouse -penmount -tslib
-virtualbox -vmmouse -void -wacom"
VIDEO_CARDS="radeon -apm -ark -ast -chips -cirrus -dummy -epson -fbdev -fglrx
(-geode) -glint -i128 (-i740) (-impact) -intel -mach64 -mga -neomagic (-newport)
-nouveau -nv -nvidia -r128 -rendition -s3 -s3virge -savage -siliconmotion -sis
-sisusb (-sunbw2) (-suncg14) (-suncg3) (-suncg6) (-sunffb) (-sunleo) (-suntcx)
-tdfx -tga -trident -tseng -v4l -vesa -via -virtualbox -vmware (-voodoo) (-xgi)"
0 kB

设置好所有必需的变量后,我们可以安装Xorg了:

root #emerge --ask x11-base/xorg-server
附注
可以安装软件包组x11-base/xorg-x11,而不是轻量化的x11-base/xorg-server。在功能上x11-base/xorg-x11x11-base/xorg-server 它们是一样的。然而,x11-base/xorg-x11附带更多的包,涵盖大多数系统可能非必须的功能。他的附加软件包,包括各式各样的语言字体包,它们不是X11工作框架所必需的。

当安装完成后,在继续之前重新初始化一些环境变量。更新profile配置文件命令:

root #env-update
root #source /etc/profile

NVidia 用户

为了运行xorg.conf 文件指定的显卡,执行nvidia-xconfig ,这对于NVidia用户是有用的。如果你没有这个文件:xorg.conf,那么你需要手动创建详情如下。如果缺失 xorg.conf这个文件,当你试图startx,有时会在终端产生"No screens found" 的错误提示。

当然 NVidia 驱动只有在重启计算机后才会启用运行,确保在重启系统前执行nvidia-xconfig:。

root #nvidia-xconfig

如果可能的话,建议设置使用OpenGL渲染硬件渲染器,而非软件渲染器:

root #eselect opengl set nvidia

配置

X server 被设计为开箱即用,即无需手动编辑Xorg配置文件。它“应该”能检测和配置例如显示器,键盘和鼠标这些设备。

试试using startx而非直接编辑配置文件。如果Xorg无法启动,那么可能有其他问题,此时,你将需要再去手动编辑Xorg配置。这在下面的部分进行说明。

附注
如果改变了内核配置,不要忘记在重启系统 之前执行 startx 来使用新构建的内核。 如果内核被更新到新版本,这一般需要更新引导启动程序的配置文件。

xorg.conf.d 目录

重要
xorg.conf.d的配置文件,应该被视为最后的设置选项。如果可能的话,直接运行没有任何其他特殊设置的Xorg。

大部分Xorg的配置文件存储在 /etc/X11/xorg.conf.d/。 每个文件的名字都是独一无二的并且以.conf为扩展名。 Xorg配置目录中的文件名会按字母顺序读取。例如,10-evdev.conf会在20-synaptics.conf之前被读取; a-evdev.conf 会在b-synaptics.conf之前被读取…… 此目录中的文件不需要编号,但是如果编号,那么会帮助他们有组织化。组织化有助于调试错误的配置文件。

附注
Xorg提供了示例配置:/usr/share/doc/xorg-server-${version}/xorg.conf.example.bz2。这些可以用来自定义配置文件/etc/X11/xorg.conf.d/man xorg.conf 这些例子有详细的注释,但如果需要有关具体详细的操作说明, 始终可用。其他的例子可以在本指南最后的其他资源看到。

使用 startx

试试startx来运行 X serverstartx即执行一个'X会话'脚本;这个脚本x11-apps/xinit生成. 也就是说,它启动了X服务器并在它上面的一些图形应用程序。它使用下面的方式来判断该运行哪些应用程序:

  • 如果一个叫做.xinitrc的文件存在于主目录(home)中,它会执行里面列出的命令。
  • 否则,它会从/etc/env.d/90xsession读取 XSESSION 这个变量的值,并且将执行一个与之相对应的会话。XSESSION的值可以在/etc/X11/Sessions/文件中进行配置。例如,设置系统默认会话,以root身份运行:
root #echo XSESSION="Xfce4" > /etc/env.d/90xsession
这将创建文件:90xsession,然后设置默认X会话Xfce。 记得在90xsession修过后,执行命令env-update
user $startx

如果你没有安装窗口管理器,那么将会出现一个纯黑色的屏幕,此后这也可以说明,哪些东西发生了错误。x11-wm/twmx11-terms/xterm 包可以用来测试X是否正常配置。

程序安装后,再次执行 startx。 一些 xterm 窗口将会出现,因此很容易验证X server是否正常工作。如果一切正常卸载 x11-wm/twmx11-terms/xterm,如果按上面的步骤,那么你要删除测试软件包。因为我们要安装一个合适的桌面环境,而接下来并不需要它们。

会话(程序启动)也被指定为参数startx:

user $startx /usr/bin/startfluxbox

您也可以通 X11 服务器选项,通过前面他们带的双破折号 ︰

user $startx -- vt7

调整 X 设置

设置屏幕分辨率

如果屏幕分辨率看起来不正确,你需要检查你的xorg.conf.d 配置的两个部分。首先, 'Screen' 部分会列出你的 X server 所有可用分辨率选项。这一节可能不会列出所有的分辨率信息,甚至一个都没有。如果是这种情况,Xorg将根据第二部分中的信息:“Monitor”估算分辨率。

现在让我们来更改分辨率。在下一个示例中的 /etc/X11/xorg.conf.d/40-monitor.conf, 我们添加进去 PreferredMode 这一行,以便我们 X server,在分辨率 1440 x 900 的默认情况下启动。Device 部分中的 Option 必须与您的显示器 (DVI-0)的名字一致,可以通过运行 xrandr 的名称相匹配。安装xrandr. Install xrandr (emerge xrandr)只是使有足够长的时间来获取此信息。(在 Device 部分中) 的显示器名称后面的参数必须匹配Monitor 节的 Identifier

FILE /etc/X11/xorg.conf.d/40-monitor.conf
Section "Device"
  Identifier  "RadeonHD 4550"
  Option      "Monitor-DVI-0" "DVI screen"
EndSection
Section "Monitor"
  Identifier  "DVI screen"
  Option      "PreferredMode" "1440x900"
EndSection

运行 X (startx)来看看它所使用的分辨率。

多显示器

可以在/etc/X11/xorg.conf.d/中配置多个显示器。给每个显示器,写出它的唯一标识符,然后列出它的物理位置,如另一台显示器是"RightOf"或"Above"。下面的例子展示了如何配置,一个DVI和VGA显示器,另外附带一个VGA的显示器在右侧屏幕:

FILE /etc/X11/xorg.conf.d/40-monitor.conf
Section "Device"
  Identifier "RadeonHD 4550"
  Option     "Monitor-DVI-0" "DVI screen"
  Option     "Monitor-VGA-0" "VGA screen"
EndSection
Section "Monitor"
  Identifier "DVI screen"
EndSection
Section "Monitor"
  Identifier "VGA screen"
  Option     "RightOf" "DVI screen"
EndSection

配置键盘

设置X使用国际键盘需要在创建适当的配置文件: /etc/X11/xorg.conf.d/。在这个例子我们使用一个捷克键盘布局:

FILE /etc/X11/xorg.conf.d/30-keyboard.conf
Section "InputClass"
  Identifier "keyboard-all"
  Driver "evdev"
  Option "XkbLayout" "us,cz"
  Option "XkbModel" "logitech_g15"
  Option "XkbRules" "xorg"
  Option "XkbOptions" "grp:alt_shift_toggle,grp:switch,grp_led:scroll,compose:rwin,terminate:ctrl_alt_bksp"
  Option "XkbVariant" ",qwerty"
  MatchIsKeyboard "on"
EndSection

有关切换键盘布局,看Keyboard layout switching .

"终止"命令 (terminate:ctrl_alt_bksp) 允许用户通过使用Ctrl+Alt+Backspace 组合键来结束X会话。不过,这样退出不怎么好 -- 用户应该尽量避免这样做。但它在程序完全卡死或配置和调整 Xorg环境时很有用。请谨慎使用,通过该组合键结束桌面 — — 大多数程序真的不喜欢以这种方式结束。一些文件,比如尚未写入磁盘(比如存储在“已打开的文档”中的信息)中的数据,将丢失。

即将完成

运行startx,如果您对结果感到高兴。恭喜你,你现在 (希望如此) 拥有一个正常 Xorg!下一步是安装可用的窗口管理器或桌面环境,例如GNOMEKDEXfce。在 wiki 上,你可以找到有关安装这些桌面环境的更多信息。

参考

  • Wayland - 下一代Linux窗口协议。

+

外部资源

创建和编辑配置文件

man xorg.confman evdev提供了快速而又完整的参考,关于这些配置文件所使用的具体使用的语法。当你编辑 Xorg 配置文件的时候,一定要在终端上打开他们!

在编辑配置文件中的也有许多在线资源:/etc/X11/。只有少数列出在这里;可以选择你最喜爱的搜索引擎来找到更多指导。

其他资源

关于安装和配置的各种图形桌面环境和应用程序更多信息,可以在我们的文档部分中找到: .

当升级到xorg-server 1.9或更高版本,务必阅读migration guide

除了我们这些文档,在他们自己的网站上,X.org还提供许多FAQs


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Sven Vermeulen (SwifT),
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.