Xorg/Руководство
Xorg — это сервер оконной системы X Window server, который позволяет пользователю организовать для себя графическую рабочую среду. Это руководство объясняет что такое Xorg, как его установить и за что отвечают различные параметры конфигурации.
Что такое сервер оконной системы 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 необходимо включить путем внесения изменений в конфигурацию ядра. Смотрите руководство по конфигурации ядра, если вы не знаете как настроить ваше ядро.
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).
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.
Старые карты:
## (Установка ядра на использование прошивки 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, необязательно, если "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-флагов:
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:
## (Для мыши, клавиатуры и сенсорной панели 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
.
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-монитор расположен по правую руку пользователя.
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/. Пример для русской раскладки:
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, как его установить и за что отвечают различные параметры конфигурации.
- Xrandr — X 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.