Xorg/Руководство

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

Xorg — это сервер оконной системы X Window server, который позволяет пользователю организовать для себя графическую рабочую среду. Это руководство объясняет что такое Xorg, как его установить и за что отвечают различные параметры конфигурации.

См. также
Статьи Xorg и X server.

Что такое сервер оконной системы X Window?

Графический интерфейс против командной строки

Среднестатистический пользователь может быть встревожен мыслью о том, что ему придётся вводить команды. Почему бы ему не щёлкать мышью с той свободой, какую предоставляет Gentoo (и вообще Linux)? Конечно же, это возможно!

Linux предлагает широкий выбор бросающихся в глаза пользовательских интерфейсов, таких как оконные менеджеры и среды рабочего стола, которые можно установить поверх существующей установки.

Один из самых больших сюрпризов для новых пользователей Linux заключается в том, что графические интерфейсы — это ничего более, чем приложение (или иногда наборы приложений), запущенные на их системе. Это не часть ядра Linux или какой-либо внутренней части системы. Это мощное средство, раскрывающее графические возможности рабочей станции.

Стандарты важны, и стандарт для отрисовки и перемещения окон на экране, взаимодействующий с мышью, клавиатурой, и другим оборудованием, а также включающий иные важные аспекты, был создан и назван X Window System, обычно сокращенный до X11 или просто X. Он используется на Unix, Linux, и Unix-подобных операционных системах по всему миру.

Приложением, которое дает возможность пользователям Linux запускать графический интерфейс и использующее стандарт X11, является Xorg-X11, ответвление проекта XFree86. В XFree86 используется несовместимая с GPL лицензия; следовательно, рекомендуется использовать Xorg. Официальное дерево Portage больше не предоставляет пакеты XFree86.

Проект X.org

Проект X.org создан и поддерживается как свободно распространяемая реализация системы X11 с открытым исходным кодом. А также это основанная на X11 инфраструктура рабочего стола.

Xorg обеспечивает интерфейс между аппаратным обеспечением и графическим программным обеспечением. Помимо этого, Xorg умеет работать в сети, что позволяет запускать программу на одной системе, а смотреть на другой.

Установка

Перед установкой Xorg необходимо подготовить систему. Во-первых, настроим ядро для поддержки устройств ввода и видеокарт. Затем мы подготовим /etc/portage/make.conf так, чтобы были установлены нужные драйверы и пакеты Xorg.

Поддержка устройств ввода

Поддержку устройства событий (event interface) CONFIG_INPUT_EVDEV необходимо включить путем внесения изменений в конфигурацию ядра. Смотрите руководство по конфигурации ядра, если вы не знаете как настроить ваше ядро.

ЯДРО Включение поддержки evdev в ядре
Device Drivers --->
  Input device support --->
  <*>  Event interface

Установка режима в ядре

Современные видеодрайверы с открытым исходным кодом полагаются на поддержку Kernel Mode Setting (KMS). KMS предоставляет улучшенную графическую загрузку с меньшим мерцанием, более быстрым переключением пользователей, встроенной в кадровый буфер консолью, плавным переключением из консоли в Xorg, а также другие возможности.

Отключение устаревших кадровых буферов

Важно
KMS конфликтует со старыми драйверами кадрового буфера, которые должны быть отключены в конфигурации ядра.

Сначала подготовим ядро для KMS. На данном этапе не имеет значения, какой видеодрайвер Xorg будет использоваться.

ЯДРО Отключение поддержки старого кадрового буфера и включение вместо него поддержки основного кадрового буфера для консоли
Device Drivers --->
   Graphics support --->
      Frame Buffer Devices --->
         <*> Support for frame buffer devices --->
         ## (Отключите все драйвера, включая VGA, Intel, NVIDIA и ATI, оставьте поддержку кадрового буфера EFI, только если вы используете UEFI)
 
      ## (Ниже, включите кадровый буфер для консоли. Его использует KMS.)
      Console display driver support --->
         <*>  Framebuffer Console Support

Далее настройте ядро для использования подходящего драйвера KMS для видеокарты. Intel, NVIDIA и AMD/ATI являются распространенными видеокартами, поэтому смотрите соответствующие настройки ниже для каждой видеокарты.

Intel

Для видеокарт Intel см. раздел «Ядро» в статье Intel.

NVIDIA

Для видеокарт NVIDIA доступно два варианта. Для систем с полностью открытым исходным кодом рекомендуется использовать открытый драйвер Nouveau. Вторым вариантом является использование пропиетарного драйвера NVIDIA, который официально поддерживается NVIDIA. В статье рекомендуется использовать драйвер Nouveau, однако следует помнить, что для определённых карт драйвер с открытым кодом не обеспечивает полную функциональность.

В дополнение к драйверу в ядре, некоторым картам требуется прошивка с закрытым кодом, встроенная в ядро Linux. В зависимости от выбранного драйвера, следует ознакомиться с соответствующей статьёй, чтобы узнать требуется ли для определённой карты прошивка (из sys-kernel/linux-firmware).

ЯДРО Ядро с поддержкой NVIDIA
Device Drivers --->
   Graphics support --->
      <M/*>  Nouveau (NVIDIA) cards

AMD/ATI

Для новых карт AMD/ATI (RadeonHD 2000 и выше) установите пакет sys-kernel/linux-firmware (пакет включает прошивки для драйверов radeon и amdgpu). Когда один из этих пакетов будет установлен, сделайте драйвер Radeon модулем ядра. Или, по желанию, настройте ядро как описано в разделе о прошивке из статьи о Radeon или, для более новых карт от AMD (GCN1.1+), в разделе о прошивке статьи AMDGPU.

Старые карты:

ЯДРО Настройка AMD/ATI Radeon
## (Установка ядра на использование прошивки radeon-ucode, необязательно, если "ATI Radeon" ниже настроен как модуль)
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/*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
   <M/*>    ATI Radeon
   [*]      Enable modesetting on radeon by default
   [ ]      Enable userspace modesetting on radeon (DEPRECATED)

Новые карты:

ЯДРО Настройки AMDGPU
## (Настройки ядра для использования прошивок amdgpu, необязательно, если "AMD GPU" ниже установлен как модуль)
Device Drivers --->
   Generic Driver Options --->
   [*]  Include in-kernel firmware blobs in kernel binary
  ## # Для карт AMD (см. страницу AMDGPU для более детальной информации какой файл прошивки (firmware) включить)
   (amdgpu/<CARD-MODEL>.bin ...)
  ## # Определяет корневой каталог прошивок
   (/lib/firmware/) External firmware blobs to build into the kernel binary
 
## (Включение поддержки Radeon KMS)
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
Заметка
В системах x86/amd64 старые карты Radeon (серии X1900 и ниже) не нуждаются в дополнительных прошивках или какой-либо настройке прошивок. Для них в ядре достаточно только включить Direct Rendering Manager (DRM) и поддержку ATI Radeon modesetting.
Заметка
Ядра Linux >= 3.9 не имеют параметра Enable modesetting on radeon by default, поскольку она уже установлена. Не пугайтесь, если не найдёте этого параметра в новых версиях ядра.
Заметка
Ядро Linux >= 4.15 включает «Display Core» (DC), что необходимо для работы AMDGPU. Этот новый драйвер был написан для GCN5.0 «Vega» и DCN1.0 «Raven Ridge» (APU), но также добавляет функционал для более старых графических карт Radeon, начиная с GCN1.1 «Southern Islands» и новее. Планируется, что дополнительная поддержка старых карт Radeon станет стандартной, поэтому не пугайтесь, если в более новых версиях ядра вы не найдёте этого параметра.

Выйдите из конфигурации ядра, пересоберите ядро и перезагрузитесь.

Сейчас, когда KMS настроен, продолжите подготовку /etc/portage/make.conf в следующем разделе.

Когда ядро подготовлено, перед установкой Xorg необходимо установить несколько переменных в файле /etc/portage/make.conf.

make.conf

В Portage существует USE-флаг X, включающий поддержку X в других пакетах (он включён по умолчанию в профилях desktop). Убедитесь, что этот USE-флаг добавлен в список включённых USE-флагов:

ФАЙЛ /etc/portage/make.conf
USE="X"

Первая переменная VIDEO_CARDS. Она используется для установки видеодрайвера, который планируется использовать и который обычно совпадает с используемой видеокартой. Наиболее распространённые значения — nouveau для карт NVIDIA и radeon для ATI. Оба варианта активно разрабатываются и являются хорошо поддерживаемыми драйверами с открытым исходным кодом. Для новых видеокарт AMD (Southern Islands и новее), можно попробовать новый драйвер с открытым исходным кодом amdgpu. Более подробная информация доступна в статье AMDGPU.

Заметка
Также можно попробовать проприетарные драйверы от NVIDIA и AMD/ATI, nvidia и fglrx соответственно. Однако настройка этих драйверов выходит за рамки этого руководства. Обратитесь к Руководство Gentoo Linux по NVIDIA и Gentoo Linux ATI FAQ. Прочтите эти статьи, чтобы понять, какой именно драйвер выбрать.

intel может быть использован для персональных и планшетных компьютеров с встроенными графическими чипами от Intel. См. Драйверы X для Intel для более детальной информации.

Заметка
Переменная VIDEO_CARDS может содержать несколько значений, разделенных символом пробела.

Вторая переменная — INPUT_DEVICES, которая используется для определения драйверов, необходимых для работы устройств ввода.

make.defaults по умолчанию использует Libinput в качестве драйвера для устройств ввода.

Чтобы проверить, что на данный момент установлено, запустите:

user $portageq envvar INPUT_DEVICES

В случае необходимости использования других устройств ввода (например сенсорная панель Synaptics), добавьте их в переменную INPUT_DEVICES в файле /etc/portage/make.conf:

КОД Простая настройка make.conf
## (Для мыши, клавиатуры и сенсорной панели Synaptic)
INPUT_DEVICES="libinput synaptics"
## (Для карт NVIDIA)
VIDEO_CARDS="nouveau"
## (Для карт AMD/ATI)
VIDEO_CARDS="radeon"

Если предложенные настройки не работают, то установите пакета x11-base/xorg-drivers (смотрите следующий пример). Проверьте все доступные варианты и выберите те, которые применимы к системе. Этот пример для системы с клавиатурой, мышью, Synaptics тачпадом и видеокартой Radeon.

root #emerge --pretend --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.20-r1::gentoo  INPUT_DEVICES="libinput synaptics -elographics -evdev -joystick -keyboard -mouse -vmmouse -void -wacom" VIDEO_CARDS="nouveau radeon -amdgpu -ast -dummy -fbdev (-freedreno) (-geode) -glint -i915 -i965 -intel -mga -nv -nvidia (-omap) -qxl -r128 -radeonsi -siliconmotion (-tegra) (-vc4) -vesa -via -virtualbox -vmware" 0 KiB

USE-флаги имеют следующие значения:

USE flags for x11-base/xorg-server X.Org X servers

+elogind Use elogind to get control over framebuffer when running as regular user
+udev Enable virtual/udev integration (device discovery, power and storage device support, etc)
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
minimal Install a very minimal build (disables, for example, plugins, fonts, most drivers, non-critical features)
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
suid Enable setuid root program(s)
systemd Enable use of systemd-specific libraries and features like socket activation or session tracking
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
unwind Enable libunwind usage for backtraces
xcsecurity Build Security extension
xephyr Build the Xephyr server
xnest Build the Xnest server
xorg Build the Xorg X server (HIGHLY RECOMMENDED)
xvfb Build the Xvfb server

Заметка
USE-флаг suid по умолчанию выключен, что допустимо; согласно рекомендациям, X запускается совместно с реализациями logind, например elogind или systemd. USE-флаг suid должен быть включен в /etc/portage/package.use/xorg-server в случае, если не используется никакая реализация logind, и X запускается с правами обычного пользователя, то есть через запуск startx. См. также статью из новостей репозитория. Установка suid поможет устранить ошибки прав доступа к /dev/tty0 или виртуальной консоли 7.

Emerge

После настройки всех необходимых переменных и USE-флагов можно приступать к установке Xorg:

root #emerge --ask x11-base/xorg-server

После завершения установки может потребоваться обновить некоторые переменные окружения перед тем, как продолжать. Используйте команду:

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

Конфигурация

X server разработан для работы «из коробки», поэтому нет необходимости вручную редактировать файлы настройки. Сервер сам должен определить и настроить устройства — мониторы, клавиатуры и мыши.

Попробуйте использовать startx без предварительного редактирования файлов настройки. Если Xorg не запустится, или будут другие проблемы, тогда необходима ручная настройка Xorg. Она приводится в следующем разделе.

Для запуска Xorg с правами непривилегированного пользователя или включите использование провайдера logind (см. Non root Xorg), или установите USE-флаг suid (см. замечание выше).

Заметка
Если изменения были сделаны в ядре, то не забудьте перезапустить систему до использования startx. Если ядро было обновлено до более новой версии, скорее всего потребуется обновление файлов настройки системного загрузчика.

Каталог xorg.conf.d

Важно
К настройке файлов в xorg.conf.d следует прибегать в последнюю очередь. Если возможно, то желательно запустить Xorg без каких-либо настроек.

Большинство конфигурационных файлов для Xorg находится в /etc/X11/xorg.conf.d/. Если этого каталога не существует — создайте его. Каждый файл обладает уникальным именем и оканчивается на .conf. Имена файлов в этом каталоге читаются в буквенно-цифровом порядке. Например, 10-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 server. startx — это сценарий (устанавливается из пакета x11-apps/xinit), запускающий сеанс X; иными словами, он запускает X server и некоторые графические приложения вместе с ним. Он решает, какие приложения запустить, основываясь на следующей логике:

  • Если в домашнем каталоге существует файл с названием .xinitrc, будут выполнены команды из него.
  • В противном случае считывается значение переменной XSESSION из файла /etc/env.d/90xsession и выполняется соответствующий сеанс. Значения для XSESSION доступны в /etc/X11/Sessions/. Для установки сеанса по умолчанию на уровне системы необходимо выполнить:
root #echo XSESSION="Xfce4" > /etc/env.d/90xsession
Эта команда создаст файл 90xsession и установит сеанс по умолчанию Xfce. Не забудьте запустить env-update после внесения изменений в 90xsession.
user $startx

Если отсутствует оконный менеджер, появится чёрный экран. Так как это также может быть признаком того, что что-то пошло не так, для проверки X можно установить пакеты x11-wm/twm и x11-terms/xterm.

После установки программ снова запустите startx. Должно появиться несколько окон xterm, что является простой проверкой корректной работы сервера X. Удовлетворившись результатами, удалите x11-wm/twm и x11-terms/xterm. Они больше не понадобятся для установки необходимого окружения рабочего стола.

Сеанс также может быть передан в качестве аргумента для startx:

user $startx /usr/bin/startfluxbox

В дополнение к этому, параметры можно передать серверу X, прописав перед ними два дефиса:

user $startx -- vt7

Тонкая настройка X

Установка разрешения экрана

Если разрешение экрана установлено неправильно, необходимо проверить два раздела в конфигурации xorg.conf.d. Во-первых, есть раздел Screen со списком разрешений, с которыми может запуститься сервер X. Этот раздел вовсе может не содержать никаких записей о разрешениях. В этом случае Xorg рассчитает характеристики разрешений исходя из информации во втором разделе — Monitor.

Теперь давайте изменим разрешение. В следующем примере из /etc/X11/xorg.conf.d/40-monitor.conf мы добавим строку PreferredMode, так что наш сервер X запустится с разрешением 1440x900 по умолчанию. Пункт Option в разделе Device должен совпадать с именем монитора (DVI-0), которое может быть получено через xrandr. Установите xrandr (emerge xrandr) просто для того, чтобы получить эту информацию. Аргумент после имени монитора (в Device) должен совпадать с Identifier в разделе Monitor.

ФАЙЛ /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-монитор расположен по правую руку пользователя.

ФАЙЛ /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

Настройка клавиатуры

См. статью Keyboard layout switching для определения методов переключения раскладки клавиатуры.

Заметка
Оставшаяся часть данного раздела может не понадобиться, если следовать статье Keyboard layout switching.

Для установки многоязычной клавиатуры X создайте подходящий файл в /etc/X11/xorg.conf.d/. Пример для русской раскладки:

ФАЙЛ /etc/X11/xorg.conf.d/30-keyboard.conf
Section "InputClass"
  Identifier "keyboard-all"
  Driver "evdev"
  MatchProduct "AT Translated Set 2 keyboard"    # применяется к устройствам, имеющим данную подстроку
  MatchIsKeyboard "true"                         # применяется только к устройствам типа "клавиатура"
  Option "XkbLayout" "us,ru"
  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

Команда «terminate» (terminate:ctrl_alt_bksp) дает возможность пользователю убить сеанс X используя комбинацию Ctrl+Alt+Backspace. Однако, это аварийно завершит работу X — следует этого избегать. Это может быть полезно, когда программы полностью «заморозили» экран, или при тонкой настройке окружения Xorg. Будьте осторожны, когда останавливаете рабочий стол этой комбинацией клавиш — большинству программ не нравится, когда их завершают подобным образом. Почти вся информация, не записанная на диск (хранящаяся в «открытых документах»), будет потеряна.

Ввиду того, что драйвер «evdev» может управлять несколькими устройствами (даже не являющимися клавиатурами), может понадобиться ввести ограничение раздела только на некоторые устройства, чтобы остальные работали корректно. Используйте директиву MatchProduct для сопоставления имени устройства, сверившись с man xorg.conf.

За дополнительной информацией о XkbModel и XkbOptions можно обратиться к /usr/share/X11/xkb/rules/base.lst и man xkeyboard-config.

Завершение

Запустите startx и порадуйтесь результату. Поздравляем, вы теперь (надеемся) обладаете рабочим Xorg! Следующим шагом является установка полезного оконного менеджера или окружения рабочего стола, например KDE, GNOME или Xfce. Информация об установке этих рабочих столов может быть найдена здесь на вики.

Смотрите также

  • Non root Xorg — describes how an unprivileged user can run Xorg without using suid.
  • Wayland — a replacement for the X11 window system protocol and architecture with the aim to be easier to develop, extend, and maintain
  • X (Security Handbook) — статья Security Handbook о безопасности X сервера.
  • Xorg — an open source implementation of the X server.
  • Xorg/Guide — объясняет что такое Xorg, как его установить и за что отвечают различные параметры конфигурации.
  • XrandrX protocol extension and its CLI tool xrandr are used to manage screen resolutions, rotation and screens with multiply displays in X
  • X server — the main component of the X Window system which abstracts the hardware and provides the foundation for most graphical user interfaces, like desktop environments or window managers, and their applications.

Внешние ресурсы

Создание и редактирование файлов настройки

man xorg.conf и man evdev содержат краткие, но исчерпывающие сведения о синтаксисе, используемом в их конфигурационных файлах. Удостоверьтесь, что они открыты в терминале, когда редактируете конфигурационные файлы Xorg!

Пример конфигураций можно найти в /usr/share/doc/xorg-server-*/xorg.conf.example.bz2.

Есть ещё множество онлайн ресурсов о редактировании конфигурационных файлов в /etc/X11/. Только немногие приведены здесь; используйте ваш любимый поисковик для того, чтобы найти больше.

Другие ресурсы

Больше информации об установке и настройке разных окружений рабочего стола и приложений можно найти в разделе Gentoo desktop resources нашей документации.

При обновлении xorg-server 1.9 или выше прочтите руководство по миграции.

X.org располагает материалами на своем веб-сайте FAQ, в дополнение к другой документации.


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.