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/Руководство
Xorg — это сервер оконной системы X Window server, который позволяет пользователю организовать для себя графическую рабочую среду. Это руководство объясняет что такое Xorg, как его установить и за что отвечают различные параметры конфигурации.
Что такое сервер оконной системы X Window?
Графический интерфейс против командной строки
An average user may be frightened at the thought of having to type in commands. Why wouldn't they be able to point and click their way through the freedom provided by Gentoo (and Linux in general)? Well, of course you are able to do this! Linux offers a wide variety of flashy user interfaces and environments which you can install on top of your existing installation.
Это один из огромных сюрпризов для новых пользователей: графический интерфейс ничего более, чем приложение, запущенное на их системе. Это не часть ядра 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 конфликтует со старыми драйверами кадрового буфера, которые должны оставаться в состоянии disabled в настройке ядра.
Начальная подготовка ядра для 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 смотрите kernel section of the Intel article.
Для видеокарт nVidia:
Device Drivers ---> Graphics support ---> <M/*> Nouveau (nVidia) cards
For newer AMD/ATI cards (RadeonHD 2000 and up), emerge sys-kernel/linux-firmware (the package includes radeon and amdgpu; the separate package x11-drivers/radeon-ucode doesn't exist anymore). Once one of these packages has been installed, make the Radeon driver a module in the kernel or, optionally, configure the kernel as detailed in the firmware section of the Radeon article or, for newer AMD graphics cards (GCN1.1+), the firmware section of article AMDGPU:
## (Установка ядра на использование прошивки 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)
## (Настройки ядра для использования прошивок amdgpu) 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
Старые карты Radeon (серия X1900 и старше) не нуждаются в дополнительных прошивках или какой-либо настройке прошивок. Для них достаточно включить DRM и поддержку ATI Radeon modesetting.
Ядро Linux >= 3.9 не имеет опции Enable modesetting on radeon by default, поскольку она уже установлена. Не пугайтесь, если не найдете этой опции в новых версиях ядра.
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
Когда ядро подготовлено, две важные переменные в файле /etc/portage/make.conf должны быть определены перед установкой Xorg.
Первая переменная VIDEO_CARDS. Она используется для установки видео драйвера, который вы намереваетесь использовать и который обычно совпадает с используемой вами видеокартой. Наиболее используемые значения это nouveau
для карт nVidia и radeon
для ATI. Оба драйвера являются активно разрабатывающимися, хорошо поддерживаемыми драйверами с открытым исходным кодом. Если у вас более новая видеокарта AMD (Southern Islands и новее), вы можете попробовать новый драйвер с открытым исходным кодом amdgpu
. Более подробную информацию смотрите в статье AMDGPU.
Вы также можете попробовать проприетарные драйверы от nVidia и AMD/ATI,
nvidia
и fglrx
соотвественно. Однако, настройка этих драйверов выходит за рамки этого руководства. Пожалуйста, смотрите руководство Gentoo Linux по nvidia-drivers и Gentoo Linux ATI FAQ. Если вы не знаете, какие драйверы выбрать, обратитесь к этим руководствам за информацией.intel
может быть использован для персональных и планшетных компьютеров с встроенными графическими чипами от Intel.
Переменная VIDEO_CARDS может содержать несколько значений, разделенных символом пробела.
Вторая переменная INPUT_DEVICES используется для определения драйверов, которые будут собраны для устройств ввода.
make.defaults по умолчанию использует Libinput в качестве драйвера для устройств ввода.
Чтобы проверить, что на данный момент задействовано, запустите:
user $
portageq envvar INPUT_DEVICES
В случае необходимости использования других устройств ввода (например сенсорная панель Synaptics), добавьте их в переменную INPUT_DEVICES в файле /etc/portage/make.conf:
## (Для мыши, клавиатуры и тачпада) 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-x11 и x11-base/xorg-server одинаковы, однако x11-base/xorg-x11 содержит больше пакетов, которые, вероятно, не требуются для большинства систем. Дополнительные пакеты включают большой ассортимент шрифтов для многих языков. В них нет необходимости для работы X11.
Когда установка завершена, некоторые переменные окружения необходимо заново инициализировать перед тем, как продолжать. Используйте команду:
root #
env-update
root #
source /etc/profile
Пользователи NVidia
Для пользователей NVidia имеется возможность запустить nvidia-xconfig с целью генерации файла xorg.conf для выбранной видеокарты. Без этого шага xorg.conf необходимо создать вручную как описано ниже. Отсутствующий xorg.conf иногда будет выводить ошибку "No screens found" при попытке выполнить startx.
Драйвер NVidia будет работать только после перезагрузки, так что сделайте это после выполнения nvidia-xconfig.
root #
nvidia-xconfig
Возможно и рекомендуется установить для OpenGL аппаратный рендеринг вместо программного:
root #
eselect opengl set nvidia
Конфигурация
X server разработан для работы «из коробки», поэтому нет необходимости вручную редактировать файлы настройки. Сервер сам должен определить и настроить устройства - мониторы, клавиатуры и мыши.
Попробуйте использовать startx без предварительного редактирования файлов настройки. Если Xorg не запустится, или будут другие проблемы, тогда необходима ручная настройка Xorg. Она приводится в следующем разделе.
Если изменения были сделаны в ядре, то не забудьте перезапустить систему до использования 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 session; то есть он запускает 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
Если отсутствует оконный менеджер, появится черный экран. Так как это также может быть признаком того, что что-то пошло не так, пакеты x11-wm/twm и x11-terms/xterm могут быть установлены для проверки X.
Когда программы будут установлены, снова запустите startx. Компактное окно xterm должно появится, упрощая проверку корректной работы X server. Удовлетворившись результатами, удалите x11-wm/twm и x11-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 запустится с 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
Настройка клавиатуры
Для установки многоязычной клавиатуры X создайте подходящий файл в /etc/X11/xorg.conf.d/. Пример для чешской раскладки:
/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" (terminate:ctrl_alt_bksp
) дает возможность пользователю убить сессию X используя комбинацию Ctrl+Alt+Backspace. Однако, так завершать работу X безобразно - пользователи должны избегать этого. Это может быть полезно, когда программы полностью «заморозили» дисплей, или при тонкой настройке окружения Xorg. Будьте осторожны, когда останавливаете рабочий стол этой комбинацией клавиш - некоторым программам не нравится такое завершение. Информация, не записанная на диск, будет потеряна.
Завершение
Запустите startx и порадуйтесь результату. Поздравляем, вы теперь (надеемся) обладаете рабочим Xorg! Следующим шагом является установка полезного оконного менеджера или окружения рабочего стола, например KDE, GNOME или Xfce. Информация об установке этих рабочих столов может быть найдена здесь на вики.
Смотрите также
- Wayland - Оконный протокол следующего поколения для Linux.
- X (Security Handbook) - Статья Security Handbook о безопасности X сервера.
Внешние ресурсы
Создание и редактирование файлов настройки
man xorg.conf и man evdev содержат краткие, еще не завершенные источники о синтаксисе, используемом в их файлах настройки. Удостоверьтесь, что они открыты в терминале, когда редактируете конфигурационные файлы Xorg!
Есть еще множество онлайн ресурсов о редактировании файлов настройки в /etc/X11/. Только немногие приведены здесь; используйте ваш предпочтительный поисковой движок для того, что бы найти больше.
Другие ресурсы
Больше информации об установке и настройке разных окружений рабочего стола и приложений можно найти в разделе нашей документации.
Когда обновляетесь до xorg-server 1.9 или выше, почитайте migration guide.
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.