This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

Xorg/指南

From Gentoo Wiki (test)
< Xorg
Jump to:navigation Jump to:search
This page is a translated version of the page Xorg/Guide and the translation is 95% complete.
Outdated translations are marked like this.
Other languages:

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

X Window server 是什么?

图形VS命令行

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

这是新用户感到的最大惊喜之一: 在您的系统上运行的图形界面只不过是一个应用程序,而且它“并非”是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包正确编译并安装。

输入驱动程序支持

默认情况下,Xorg 使用 evdev,它是一个通用的输入驱动程序。您将需要通过对您的内核配置更改,来激活对evdev 的支持。如果你不知道如何配置你的内核,请看内核配置指南

KERNEL 在内核开启evdev
'"`UNIQ--pre-00000001-QINU`"'

内核模块设置

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

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

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

KERNEL 禁用传统帧缓冲支持,使基本的控制台支持FB
'"`UNIQ--pre-00000004-QINU`"'

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

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

对于 NVidia 显卡:

KERNEL nVidia 设置
'"`UNIQ--pre-00000007-QINU`"'

对于新的 AMD/ATI 显卡(RadeonHD 2000 and up),emerge x11-drivers/radeon-ucodesys-kernel/linux-firmware。一旦其中的某个包被安装,就需要在firmware section 关于 Radeon article配置详细的内核参数:

KERNEL AMD/ATI 设置
'"`UNIQ--pre-0000000A-QINU`"'
KERNEL AMDGPU settings
## (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 甚至更老) 不需要安装x11-drivers/radeon-ucode 包或进行其他任何配置。 只需启用直接渲染管理(DRM)和ATI Radeon模块即可。
附注
Linux kernel >= 3.9 没有 Enable modesetting on radeon by default 这个选项,因为它默认已经开启了。如果您发现该选项在新内核丢失,请不要惊慌。
Note
Linux kernel >= 4.15 does include Display Core (DC) which is required for AMDGPU to work. This newer driver was written for GCN5.0 Vega and DCN1.0 Raven Ridge (APU), but also adds additional functionality for older Radeon graphics cards starting with GCN1.1 Southern Islands and newer. It is planned to make this additional support for older Radeon cards the standard, so do not be alarmed if you find this option missing in newer kernels.

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

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

make.conf

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

第一个变量是VIDEO_CARDS。这是用于设置你打算使用的显卡驱动程序,它通常是根据你的显卡来选择。对于NVIDIA显卡最常用的配置是:nouveau ;对于ATI(AMD)显卡常用的配置是:radeon 。在支持开源驱动程序方面,NVIDIA和AIT都有积极的发展。

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

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

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

第二个变量设置是: INPUT_DEVICES ,它用于确认构建哪些输入设备驱动程序。在大多数情况下设置成libinput或者 evdev应该就可以了。 如果您使用有其他输入设备,例如笔记本电脑的Synaptics touchpad(触摸板),一定要将它添加到INPUT_DEVICES中。

make.defaults has Libinput as the default input device driver.

To check what is presently activated, run:

user $portageq envvar INPUT_DEVICES

选择使用的驱动程序,然后增加必要的配置到这个文件:/etc/portage/make.conf

CODE make.conf 文件样板
## (对于鼠标、键盘和Synaptics touchpad的支持)
INPUT_DEVICES="evdev 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

root #nano -w /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的显示器在右侧屏幕:

root #nano -w /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/。在这个例子我们使用一个捷克键盘布局:

root #nano -w /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), Joshua Saddler (nightmorph)
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.