Сервер X.Org

редактировать
бесплатный сервер отображения с открытым исходным кодом для X Window System

Сервер X.Org
Логотип сервера X.Org
Разработчик (и) X.Org Foundation
Первоначальный выпуск6 апреля 2004 г.; 16 лет назад (2004-04-06)
Стабильный выпуск 1.20.8 / 29 марта 2020 г.; 7 месяцев назад (2020-03-29)
Репозиторий Отредактируйте это в Викиданных
Написано наC
Операционная система Межплатформенность
Размер 3,7 МиБ
Доступно наанглийском языке
Тип Сервер отображения
Лицензия Лицензия MIT
Веб-сайтwww.x.org

X.Org Server - это бесплатная реализация с открытым исходным кодом X Window System дисплейный сервер под управлением X.Org Foundation.

Доступны реализации клиентской стороны протокола, например в форме Xlib и XCB.

Службы, с которыми X.Org Foundation поддерживает X Server, включают упаковку выпусков; сертификация (платно); оценка улучшений кода; разработка веб-сайта и распределение денежных пожертвований. Релизы кодируются, документируются и упаковываются глобальными разработчиками.

Содержание
  • 1 Архитектура программного обеспечения
    • 1.1 Device Independent X (DIX)
    • 1.2 Device Dependent X (DDX)
      • 1.2. 1 Драйвер 2D-графики
        • 1.2.1.1 Архитектура ускорения
        • 1.2.1.2 Glamour
        • 1.2.1.3 Виртуализация
      • 1.2.2 Входной стек
      • 1.2.3 Другие компоненты DDX
    • 1.3 IPC
    • 1.4 Многопользовательская конфигурация
  • 2 Принятие
  • 3 История
    • 3.1 Релизы
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Архитектура программного обеспечения

X. Org Server реализует на стороне сервера базовый протокол X Window System версии 11 (X11) и его расширения, например RandR.

Версия 1.16.0 объединяет поддержку запуска и управления на основе systemd, что повысило производительность и надежность загрузки.

Device Independent X (DIX)

Независимый от устройства X (DIX) - это часть сервера X.Org, которая взаимодействует с клиентами и реализует программный рендеринг. Основной цикл и доставка событий являются частью DIX.

X-сервер имеет огромное количество функций, которые необходимо реализовать для поддержки протокола X core. Сюда входят кодовые таблицы, растеризация и кеширование глифов, XLFD и основной API рендеринга, который рисует графические примитивы.

Зависимый от устройства X (DDX)

Зависимый от устройства X (DDX) - это часть x-сервера, которая взаимодействует с оборудованием. В исходном коде сервера X.Org каждый каталог под «hw» соответствует одному DDX. Оборудование включает графические карты, а также мышь и клавиатуру. Каждый драйвер зависит от оборудования и реализован как отдельный загружаемый модуль.

Драйвер 2D-графики

По историческим причинам сервер X.Org все еще содержит драйверы графических устройств, поддерживающие некоторую форму ускорения 2D-рендеринга. В прошлом установка режима выполнялась драйвером графического устройства X-сервера, специфичным для некоторого оборудования видеоконтроллера (например, GPU ). К этой функции настройки режима была добавлена ​​дополнительная поддержка 2D-ускорения, когда это стало доступным для различных графических процессоров. Функциональность установки режима была перемещена в DRM и предоставляется через интерфейс установки режима DRM, новый подход называется «установка режима ядра» (KMS). Но ускорение 2D-рендеринга осталось.

В Debian драйверы 2D-графики для сервера X.Org упакованы индивидуально и называются xserver-xorg-video- *. После установки файл драйвера для 2D-графики находится в / usr / lib / xorg / modules / drivers /. Пакет xserver-xorg-video-nouveau устанавливает nouveau_drv.soразмером 215 КБ, проприетарный драйвер Nvidia GeForce устанавливает файл размером 8 МБ с именем nvidia_drv. поэтомуи Radeon Software устанавливает fglrx_drv.soразмером около 25 МБ.

Доступные бесплатные драйверы графических устройств с открытым исходным кодом разрабатываются в рамках проекта Mesa 3D. Хотя их можно перекомпилировать по мере необходимости, разработка проприетарных драйверов 2D-графики DDX значительно упрощается, если сервер X.Org поддерживает стабильный API / ABI во многих своих версиях.

В версии 1.17 был поддержан общий метод настройки режима. Пакет xf86-video-modesetting, пакет Debian назывался xserver-xorg-video-modesetting, был удален, а общий DDX для установки режимов был перемещен в серверный пакет чтобы стать DDX с поддержкой KMS по умолчанию, поддерживающим подавляющее большинство графических процессоров AMD, Intel и NVidia.

7 апреля 2016 года сотрудник AMD Мишель Дэнзер выпустил xf86-video-atiверсию 7.7.0 и xf86-video-amdgpuверсию 1.1.0, последнюю включая поддержку их микроархитектуры Polaris.

Архитектуры ускорения

Существуют (как минимум) XAA (XFree86 Acceleration Architecture), EXA, UXA и SNA.

XAA - это API-интерфейс между Device-Independent-X (DIX) и Device-Dependent-X (DDX), драйвером 2D-графики, здесь, например, с ядром Linux.

. В X Window System, XFree86 Acceleration Architecture (XAA ) - это архитектура драйвера для создания 2D-изображения видеокарты. аппаратное ускорение, доступное для X-сервера. Он был написан в 1996 году и впервые выпущен в XFree86 версии 3.3. Он был полностью переписан для XFree86 4.0. Он был снова удален из X.Org Server 1.13.

Большинство драйверов реализуют ускорение с помощью модуля XAA. XAA включен по умолчанию, хотя ускорение отдельных функций может быть отключено при необходимости в файле конфигурации сервера (XF86Configили xorg.conf).

Драйвер был исходной платформой разработки для XAA.

В выпуске X.Org Server 6.9 / 7.0, EXA был выпущен в качестве замены XAA, поскольку XAA почти не дает преимущества в скорости для текущих видеокарт. EXA рассматривается как промежуточный шаг к преобразованию всего X-сервера на использование OpenGL.

Glamour

Glamour - это универсальный аппаратно-независимый драйвер 2D-ускорения для X-сервера, который переводит примитивы визуализации X в операции OpenGL, используя любые существующие 3D-драйверы OpenGL. В этом смысле он функционально аналогичен Quartz Extreme и QuartzGL (ускорение 2D-производительности) для Apple Quartz Compositor.

Конечная цель GLAMOUR состоит в том, чтобы устареть и заменить все драйверы графических устройств DDX 2D и архитектуры ускорения, тем самым избегая необходимости писать специальные драйверы X 2D для каждого поддерживаемого графического набора микросхем. Для Glamour требуется 3D-драйвер с поддержкой шейдеров..

Настройка производительности Glamour была принята для Google Summer of Code 2014. Glamour поддерживает Xephyr и DRI3 и может повысить производительность некоторых операций на 700–800%. С момента включения в версию 1.16 сервера X.Org, разработка Glamour была продолжена, и были опубликованы исправления для выпуска 1.17.

Виртуализация

Для экземпляров сервер X.Org, работающий в гостевой системе в виртуализированной среде : xf86-video-qxl, драйвер для «видеоустройства QXL». SPICE использует этот драйвер, хотя работает и без него.

В репозиториях Debian он называется xserver-xorg-video-qxl, см. https://packages.debian.org/buster/xserver-xorg-video-qxl

Стек ввода

В Debian драйверы, относящиеся к вводу, находятся в / usr / lib / xorg / modules / input /. Такие драйверы называются, например, evdev_drv.so, mouse_drv.so, synaptics_drv.soили wacom_drv.so.

С версией 1.16 сервер X.Org получил поддержку для библиотеки libinput в виде оболочки с именем xf86-input-libinput. На XDC 2015 в Торонто libratbag была представлена ​​как универсальная библиотека для поддержки настраиваемых мышей. xserver-xorg-input-joystick- это модуль ввода для сервера X.Org для управления классическими джойстиками и геймпадами, которые не предназначен для игр под X, а для управления курсором с помощью джойстика или геймпада.

Другие компоненты DDX

XWayland
XWayland - это серия патчей для X.Org серверная кодовая база, реализующая X-сервер, работающий по протоколу Wayland. Патчи разрабатываются и поддерживаются разработчиками Wayland для совместимости с приложениями X11 во время перехода на Wayland и были поддержаны в версии 1.16 сервера X.Org в 2014 году. Когда пользователь запускает приложение X из Weston, он обращается к XWayland для обслуживания запроса.
XQuartz
XQuartz представляет собой серию патчей от Apple Inc. для интеграции поддержки протокола X11 в свои Quartz Compositor, аналогично тому, как XWayland интегрирует X11 в композиторы Wayland.
Xspice
Xspice - это драйвер устройства для сервера X.Org. Он поддерживает устройство кадрового буфера QXL и включает сценарий оболочки, который позволяет запускать сервер X.Org, отображение которого экспортируется по протоколу SPICE. Это позволяет использовать SPICE в среде удаленного рабочего стола без необходимости виртуализации KVM.
Xephyr
Xephyr - это реализация X-on-X. Начиная с версии 1.16.0, Xephyr служит основной средой разработки для новой подсистемы ускорения 2D (Glamour), обеспечивая быструю разработку и тестирование на одной машине.
RandR
RandR (изменение размера и rotate) - это протокол связи, написанный как расширение протокола X11. XRandR предоставляет возможность изменять размер, вращать и отражать корневое окно экрана. RandR отвечает за установку частоты обновления экрана. Он позволяет управлять несколькими мониторами.

IPC

Сервер X.Org и любой x-клиент работают как отдельные процессы. В Unix / Linux процесс ничего не знает о других процессах. Чтобы он мог взаимодействовать с другим процессом, он полностью полагается на ядро, которое управляет обменом данными через доступные механизмы межпроцессного взаимодействия (IPC). Доменные сокеты Unix используются для связи с процессами, запущенными на одном компьютере. Вызов специальных функций сокета является частью интерфейса системного вызова. Хотя сокеты интернет-домена можно использовать локально, сокеты домена Unix более эффективны, так как они не имеют служебных данных протокола (контрольные суммы, порядок байтов и т. Д.).

Сервер X.Org не использует D-Bus.

Сокеты - это наиболее распространенный метод межпроцессного взаимодействия (IPC) между процессами X-сервера и его различных X-клиентов. Он предоставляет интерфейс прикладного программирования (API) для связи в домене TCP / IP, а также локально только в домене UNIX. В транспортном интерфейсе X описано несколько других API, например TLI (интерфейс транспортного уровня). Для других вариантов IPC между клиент-сервером X требуются системные расширения X Window, например MIT Shared Memory Extension (MIT-SHM).

Многопользовательская конфигурация

Многопользовательская конфигурация относится к сборка одного компьютера с несколькими «местами», позволяющая нескольким пользователям сесть за компьютер, войти в систему и использовать компьютер одновременно независимо. К каждому компьютеру подключено несколько клавиатур, мышей и мониторов, каждое «место» имеет одну клавиатуру, одну мышь и один монитор. «Место» состоит из всех аппаратных устройств, назначенных конкретному рабочему месту. Он состоит как минимум из одного графического устройства (видеокарта или просто вывода и подключенного монитора), клавиатуры и мыши. Он также может включать видеокамеры, звуковые карты и многое другое.

Из-за ограничений системы VT в ядре Linux и протокола ядра X (в частности, как X определяет связь между корневым окном и выводом графической карты), многопользовательский режим не работает прямо из коробки для обычного дистрибутива Linux, но требует специальной настройки.

Существуют следующие методы настройки многопользовательской сборки:

  • несколько серверов Xephyr на хосте xorg-server
  • несколько экземпляров xorg-server
    • одна видеокарта на рабочее место
    • одна видеокарта на все рабочие места

Используемые параметры командной строки xorg-server:

  • -isolateDevice bus-idОграничить сброс устройства (вывод) на устройство с идентификатором шины. Строка идентификатора шины имеет вид bustype: bus: device: function (например, «PCI: 1: 0: 0»). В настоящее время поддерживается только изоляция устройств PCI; т.е. этот параметр игнорируется, если тип bustype отличается от "PCI".
  • vtXXпо умолчанию, например, Debian 9 Stretch равен 7, т.е. нажав Ctrl+ Alt+F7, пользователь может переключиться на VT, на котором запущен xorg-server.

Только пользователь на первом мониторе может использовать консолей vt и можно использовать Ctrl+ Alt+Fx, чтобы выбрать их. У других пользователей есть экран входа в систему GDM и они могут использовать xorg-server в обычном режиме, но не имеют vt.

Несмотря на то, что один пользователь может использовать несколько мониторов, подключенных к разным портам одной видеокарты (см. RandR), метод, основанный на нескольких экземплярах xorg-сервера, похоже, требует нескольких PCI видеокарты.

Можно настроить многопользовательскую среду с использованием только одной видеокарты, но из-за ограничений протокола X это требует использования протокола управления X Display Manager XDMCP.

Существует также Xdmx (Распределенное множество заголовков X).

Принятие
Unix и Linux
Сервер X.Org работает во многих бесплатных Unix-подобных операционных системах, в том числе адаптированных для использования в большинстве Дистрибутивы Linux и варианты BSD. Это также X-сервер для операционной системы Solaris. X.Org также доступен в репозиториях Minix 3.
Windows
Cygwin / X, Cygwin реализация X-сервера для Microsoft Windows, использует сервер X.Org, как и VcXsrv (Visual C ++ X-сервер) и Xming. Клиенты SSH, такие как PuTTY, позволяют запускать X-приложения через перенаправление X11 при условии, что он включен как на сервере, так и на клиенте.
OS X / macOS
OS X предыдущие версии to Mac OS X Leopard (10.5) поставлялась с сервером на базе XFree86, но X-сервер 10.5 принял кодовую базу X.Org. Начиная с OS X Mountain Lion, (10.8) X11 не входит в состав OS X; вместо этого он должен быть установлен, например, из проекта с открытым исходным кодом XQuartz. Начиная с версии 2.7.4, X11.app/XQuartz не поддерживает поддержку высокого разрешения Retina отображает в приложениях X11, которые работают в режиме удвоения пикселей на дисплеях с высоким разрешением.
История
Сервер отображения, такой как X.Org Server, реализует оконную систему и обслуживает своих клиентов.

Современная X.Org Foundation возникла в 2004 году, когда орган, курировавший стандарты X и опубликовавший официальную эталонную реализацию, объединил усилия с бывшими разработчиками XFree86. X11R6.7.0, первая версия сервера X.Org, была разветвлена ​​ из XFree86 4.4 RC2. Непосредственной причиной форка было несогласие с новой лицензией на окончательную версию XFree86 4.4, но несколько разногласий между участниками всплыли еще до разделения. Многие из предыдущих разработчиков XFree86 присоединились к проекту X.Org Server.

В 2005 году были приложены большие усилия для модульности исходного кода сервера X.Org, в результате чего к концу года был выпущен двойной выпуск. В выпуске X11R7.0.0 добавлена ​​новая модульная система сборки на основе GNU Autotools, а в X11R6.9.0 сохранена старая система сборки imake, причем оба выпуска используют одну и ту же кодовую базу. С тех пор ветка X11R6.9 остается замороженной, а вся текущая разработка ведется в модульной ветви. Новая система сборки также принесла использование стандартного dlloader динамического компоновщика для загрузки подключаемых модулей и драйверов, исключая старый собственный метод. В результате модульности двоичные файлы X11 перемещались из своего собственного дерева подкаталогов / usr / X11R6в глобальное дерево / usrво многих Unix системы.

В июне 2006 года была предпринята еще одна попытка переместить базу исходного кода сервера X.Org с CVS на git. Обе попытки преследовали долгосрочную цель привлечь в проект новых разработчиков. По словам Алана Куперсмита:

Некоторые из наших усилий здесь носили технологический характер - одной из движущих сил конверсии с Imake на automake и с CVS на git было использование инструментов, с которыми разработчики уже были знакомы и с которыми они были продуктивны из других проектов. Проект Modularization, который разбил X.Org из одного гигантского дерева на более чем 200 маленьких, имел цель сделать возможным исправление ошибки в одной библиотеке или драйвере без необходимости загружать и создавать много мегабайт программного обеспечения и шрифтов, которые не изменялись.

В версии 7.1 фреймворк KDrive (небольшая реализация X, написанная Кейт Паккард, не основанная на XFree86, разработанная разработчиками X.Org использованный в качестве испытательной площадки для новых идей, например EXA ) был интегрирован в основную кодовую базу сервера X.Org.

В 2008 году новый DRI2, основанный на драйвере настройки режима ядра (KMS), заменил DRI. Это изменение также стало важной вехой в архитектуре сервера X.Org, поскольку драйверы были перемещены с сервера и пользовательского пространства (UMS) в пространство ядра.

. начальные версии расширений DRI3 и Present были написаны и закодированы Кейт Паккард для обеспечения более быстрого и без разрывов 2D-рендеринга. К концу года реализация GLX была переписана Адамом Джексоном в Red Hat.

Releases

VersionDateX11 ReleaseОсновные характеристики
Старая версия, больше не поддерживается: 1.021 декабря 2005 г.X11R7.0 (1.0.1)Изначально модульная X-сервер, EXA архитектура
Старая версия, больше не поддерживается: 1.122 мая 2006 г.X11R7.1 (1.1.0)Интеграция с KDrive, поддержка AIGLX
Старая версия, больше не поддерживается: 1.222 января 2007 г.X11R7.2 (1.2.0)Автоконфигурация, расширенная поддержка менеджеров композитинга на основе GL
Старая версия, больше не поддерживается: 1.319 апреля 2007 г.RandR 1.2
Старая версия, больше не поддерживается: 1.46 сентября 2007 г.X11R7.3 (1.4.0)Поддержка горячего подключения ввода
Старая версия, больше не поддерживается: 1.53 сентября 2008 г.X11R7.4 (1.5.1)MPX
Старая версия, больше не поддерживается: 1.625 февраля 2009 г.RandR 1.3, DRI2, XInput 1.5
Старая версия, больше не поддерживается: 1.71 октября 2009 г.X11R7.5 ( 1.7.1)XInput 2.0, многопозиционный X
Старая версия, больше не поддерживается: 1.82 апреля 2010 г.xorg.conf.d, обработка ввода udev
Старая версия, больше не поддерживается: 1.920 августа 2010X11R7.6 (1.9.3)
Старая версия, больше не поддерживается: 1.1025 февраля 2011 г.X Synchronization Fences
Старая версия, больше не поддерживается: 1.1126 августа 2011
Старая версия, больше не поддерживается: 1.124 марта 2012 г.X11R7.7 (1.12.2)XInput 2.2 (включая поддержку multi-touch)
Старая версия, больше не поддерживается: 1.135 сентября 2012 г.Новый API драйвера DDX, DRI2 разгрузка, RandR 1.4, OpenGL 3.x + контексты, удаление XAA
Старая версия, больше не поддерживается: 1.145 марта 2013 г.XInput 2.3
Старая версия, больше не поддерживается: 1.1527 декабря 2013 г.DRI3 и расширения Present
Более старая версия, но все еще поддерживается: 1.1617 июля 2014 г.XWayland DDX, ускорение GLAMOUR, поддержка устройств без PCI, systemd-logind поддержка (X без root), получена поддержка библиотеки libinput в виде оболочки под названием xf86-input-libinput
Старая версия, но все еще поддерживается: 1.174 Февраль 2015 г.Интеграция прежнего xf86-video-modesettingуниверсального драйвера DRM / KMS, добавлена ​​поддержка DRI2 с GLAMOUR
Старая версия, но все еще поддерживается: 1.189 ноября 2015 г.RandR 1.5
Старая версия, но все еще поддерживается: 1.1915 ноября 2016Потоковый ввод, синхронизация PRIME, ограничение и деформация указателя XWayland, Windows DRI поддержка расширений
Текущая стабильная версия: 1.2010 мая 2018 г.Улучшения системы сборки Meson, GLXVND позволяет использовать отдельные драйверы OpenGL для разных X-экранов, аренда RandR улучшает Steam VR поддержка
Легенда: Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущая версия
См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
Викискладе есть медиафайлы, относящиеся к X.Org Server.
Последняя правка сделана 2021-06-22 06:07:31
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте