Что такое иксы в linux

Обновлено: 04.07.2024

Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.

systemctl isolate graphical.target

После предыдущей команды в окне Virtualbox должны запуститься иксы

Установка GNOME

Или если вы хотите GNOME Desktop

sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

Установка Server with GUI

Первым делом выполните yum grouplist - чтобы увидеть список доступных вариантов.

sudo yum groupinstall "Server with GUI"

Определить тип X

Узнать кое-что о своих иксах можно командами

rpm -qa |grep xorg-x11-server-Xorg
rpm -qa |grep gnome

Если вы хотите проверить установлен ли у вас GNOME выполните

Если установлен - вы увидите версию

GNOME Shell 3.28.3

-bash: gnome-shell: command not found

Как перезапустить X-server

Перезапустить X-server (предварительно уйдя в консоль Ctrl + Atl + F1)можно командой

Как остановить X сервер

Если не знаете какой у Вас X сервер, можете попробовать:

Если и это не помогло попробуйте варианты отсюда

Как запустить X сервер

Работает, если у Вас X-server gdm, gdm3 или kdm если у Вас что-то другое, просто замените.

Перейти из X в терминал и обратно

В CentOS по умолчанию 6 tty под консоль: 1-6 и один под X: 7.

Поэтому, нажав Ctrl-Alt[F1-F6] вы попадёте в терминал.

А нажав Ctrl-Alt-F7 в иксы.

История

X Window System — оконная система, обеспечивающая стандартные инструменты и протоколы для построения графического интерфейса пользователя. Используется в UNIX-подобных ОС.

X Window System обеспечивает базовые функции графической среды: отрисовку и перемещение окон на экране, взаимодействие с устройствами ввода, такими как, например, мышь и клавиатура.

X Window System не определяет деталей интерфейса пользователя — этим занимаются менеджеры окон, которых разработано множество. По этой причине внешний вид программ в среде X Window System может очень сильно различаться в зависимости от возможностей и настроек конкретного оконного менеджера.

В X Window System предусмотрена сетевая прозрачность: графические приложения могут выполняться на другой машине в сети, а их интерфейс при этом будет передаваться по сети и отображаться на локальной машине пользователя.

В контексте X Window System термины «клиент» и «сервер» имеют непривычное для многих пользователей значение: «сервер» означает локальный дисплей пользователя (дисплейный сервер), а «клиент» — программу, которая этот дисплей использует (она может выполняться на удалённом компьютере).

Система X Window System была разработана в Массачусетском технологическом институте (MIT) в 1984 году.

По состоянию на февраль 2016 года версия протокола — X11R7.7 — появилась в июне 2012 года.

X Window System часто называют X11 или просто X (в разговорной речи — «иксы»)

Одним из знаменательных Linux событий прошлого года стал выход 25-й Федоры с графическим окружением Gnome 3.22 на базе дисплейного сервера Wayland, который призван заменить X Window System. Но зачем вообще после стольких лет возникла такая необходимость?



В последнее время экипаж МКС пересел с Windows на Linux.
— Хьюстон, у нас проблемы. Нас сносит на Юпитер.
— Вы что, опять возились с xorg.conf?
— Да. Хьюстон, за три последних дня у нас почему-то выросли бороды.

Далее, речь о том, почему Linux необходима новая графическая среда, хотя бы в 2017 г, а отдельным постом я расскажу про Wayland и Mir.

Номенклатура X

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


  • DIX — Device Independent X, что переводится как X не зависящий от устройств, в основном это программный рендеринг.
  • DDX — Device Dependent X, что переводится как X зависимый от устройств, взаимодействие с графической картой, устройствами ввода.

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

Mesa — Реализация OpenGL, OpenCL и Vulkan API для Linux и Unix, включающая в себя как программные библиотеки, так и набор драйверов видеокарт. Mesa имеет и умеет много чего, но в основном это открытая реализация OpenGL API, для трансляции которого в исполнительные команды используются программные:

  • swrast — устаревший и слишком тормознутый,
  • softpipe — средне,

lvmpipe — может и быстрый,

и аппаратные бэкенды с помощью открытых драйверов intel, radeon и noveau.

Всемогущий X

Программирование на X — это как чтение французских философов, после этого начинаешь задаваться вопросом: что я на самом деле знаю?
Томас Турман.

Кому на сегодняшний день позарез нужны иксы? В Android телефонах, телевизорах, планшетах X Windows System не используется, Хромбуки тоже как-то без них обходятся. Значит речь идет только о Linux / Unix рабочих станциях, в основном по той причине, что тулкиты GTK+ и QT, долгое время не могли обходиться без X.

В этом году X11 исполняется 30 лет. Секрет живучести X Window System в следующих принципах, сформулированных в 1996 г.

  • Добавляй новую функциональность только в том случае, если без нее нельзя завершить уже существующее приложение.
  • Решить, чем система не является, столь же важно, сколь решить, чем она является. Не пытайся удовлетворить все мыслимые потребности; вместо этого сделай систему расширяемой, чтобы новые потребности могли быть удовлетворены совместимым образом.
  • Хуже обобщения одного примера может быть только обобщение вообще без примеров.
  • Если проблема не понята до конца, возможно, лучше не решать ее вовсе.
  • Если ты можешь добиться 90 процентов нужного эффекта, затратив всего 10 процентов сил, используй более простое решение.
  • Изолируй сложные места как можно тщательнее.
  • Обеспечивай механизм, а не политику. В частности, клиент должен определять политику пользовательского интерфейса.

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

Изначально X был государством в государстве и подменял собой множество функции ядра ОС:




  • Modesetting
  • 2D/3D ускорение
  • Ускорение рендеринга видео
  • Напрямую взаимодействует с GPU как root
  • Управление памятью
  • Привязка клавиатуры
  • Устройства ввода
  • Clipping

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

Некоторое время всех все устраивало, программисты ваяли стильные приложения, примерно такие.




Затем внезапно устройства стали более быстрыми, мощными и сложными: несколько GPU, мониторов, разношерстые устройства ввода. Рендеринг также стал более сложным, появился OpenGL. X Window system стала обрастать расширениями, однако ядро протокола по политическим мотивам осталось нетронутым. На все недостатки находились обходные пути, и пошло и поехало… BIOS видеокарты, порты I/O, подсистема питания. И всем этим хозяйством X управлял из рук вон плохо, превратившись в ОС внутри ОС, причем достаточно паршивую ОС.

  • Монолитный X разбили на несколько частей. Ну как несколько… 345 git модулей. Правда большая часть из этого в итоге оказалось не нужна.
  • Затем пошла зачистка кода. Xserver 1.0.2: 879,403 строк кода, в 2013-м уже осталось 562,678. По оценке же Кита Пакарда выпилено аж 500 тыс. строк кода. Кто-нибудь из-за этого огорчился?
  • Modesetting, управление памятью, поддержка устройств ввода, все ушло в кернел. Привязка клавиатуры, правда, все еще в иксах из-за своей невероятной сложности. Кто-то советовался с Джа, когда придумал это.

Какие-же функции остались за X сервером после всех этих трансформаций? В принципе не так уж много. По сути основная работа иксов состоит в том, чтобы посредничать между X-клиентом и WM — оконным менеджером. Клиентская программа рисует фрейм, X сервер передает данные WM, который рендерит кадр, определяет местоположение окна и передает обратно серверу, который показывает готовый результат. Основную работу сейчас делает именно WM, и напрашивается вопрос. А что случится, если мы уберем посредника? Ответ — Wayland.

Состояние гонки

В силу своей асинхронности X11 предрасположен создавать состояние гонки между событиями X-клиента или между быстрым и мертвым тормознутым X-клиентом. Возьмем простейший случай: пользователь щелчком левой кнопки мыши вызывает меню приложения, затем отпускает кнопку и приложение при наведения курсора выполняет определенное действие. Покажем последовательность событий на диаграмме Фейнмана.

  1. Пользователь щелкает левой кнопкой мыши.
  2. Сервер посылает событие ButtonPress приложению.
  3. Приложение вызывает MapWindow для показа меню.
  4. Сервер открывает окно с меню приложения.
  5. Сервер посылает приложению событие Expose .
  6. Приложение рисует картинку с меню.

На диаграмме видно, что произойдет, если пользователь отпустит левую клавишу раньше события 4. Если натренированный на действие пользователь заранее переместился на место предполагаемого пункта меню до того момента, пока там возникло новое окно, то тогда произойдет состояние гонки mouse ahead. Событие ButtonRelease придется на еще не занятую новым окном область экрана. Это вполне вероятно на удаленных X-сессиях по медленной сети.

Указанный выше сценарий благополучно завершится без состояния гонки при использовании synchronous grab , т. е. синхронного захвата, который ставит на паузу все события с устройств ввода, точнее буферизирует их. Однако в более сложных сценариях и это не помогает. К тому же от этого страдает производительность приложения.

Промежуточные итоги




Вместе с тем создатели иксов явно где-то перемудрили. Принцип обеспечения механизмов, но не политики впоследствии сыграл злую шутку с экосистемой X и она обросла всем тем, чем обросла. За десятилетия ландшафт компьютеров, устройств и ПО радикально изменился, а X Window System проникла на лаптопы и даже смартфоны Нокиа. До сих пор разработчикам вполне удавалось держать проект на плаву, благодаря миграции значительной части функционала в ядро. Этот ресурс уже тоже исчерпан, и в силу вступил неумолимый закон убывающей отдачи. Наконец-то есть возможность начать с чистого листа, догнать и перегнать тренд, вместо того, чтобы плестись за ним. Я также связываю с этим давно обещанный прорыв Linux на десктопы. Закономерность или случайность, но Linux имеет полное доминирование на устройствах, где нет X сервера.

Как должна происходить замена X Window System на Wayland или Mir? Нельзя так просто дать готовый рецепт, но можно сказать как не должно поступать. Чтобы без хейтеров и фанбоев, без шоковой терапии и подозрительных двадцати раундов голосования с итоговым перевесом в один голос. Без раскола сообщества. Словом, без всего того, что имело место при замене систем инициализации на systemd . А вы как считаете?

Немного обо всем и все о немногом, или практический опыт системного администратора.

Февраль 2010
Пн Вт Ср Чт Пт Сб Вс
« Янв Март »
1234567
891011121314
15161718192021
22232425262728

Лекция №28 - X-сервер в Linux

Calendar

22 февраля 2010, 13:57

Сегодня мы поговорим о графике в Linux. В отличии от Windows графическая подсистема в Linux не является неотъемлемой частью - она существует отдельно от ядра системы. Именно поэтому есть возможность работать в Linux без графической подсистемы - только в алфавитно-цифровом режиме.

Графическая подсистема в Linux называется X Window System. Разрабатывалась она изначально как модель клиент/сервер, поэтому и состоит из двух частей: сервера и клиента. В роли сервера выступает процесс X-server, а в роли клиентов графические приложения. Клиент и сервер общаются между собой по правилам описанным в X-протоколе. Собственно сам X-сервер и состоит из двух больших частей: это набор драйверов для работы с устройствами ввода-вывода и X-протокол для работы с приложениями.

Сейчас важно понять, что с устройствами ввода (клавиатурой, мышью и другими) и устройствами вывода (видеоадаптеры, мониторы и прочие) взаимодействует именно X-сервер, а не приложения. Мы не будет углубляться в подробности X-протокола и тонкости взаимодействия всех компонентов. Отметим себе, что X-сервер взаимодействует с приложениями при помощи механизма unix-сокетов и internet-сокетов. Возможность взаимодействия через internet-сокеты позволяет X-серверу и клиенту работать в связке находясь на разных компьютерах объединенных в сеть.

Попробуем выполнить несколько практических упражнений, которые помогут разобраться с основами взаимодействия X-сервера и приложений. Как правило на рабочей станции уже запущен один экземпляр X-сервера. Запустим еще один экземпляр командой (команда должна запускаться от имени суперпользователя):

В результате на одной из виртуальных консолей будет запущен экземпляр X-сервера. На этой консоли вы увидите черный (либо серый) экран с крестиком вместо указателя мыши. Теперь перейдите на свободную консоль и наберите команду:

Перейдите на консоль в которой запущен X-сервер. Вы должны увидеть в левом верхнем углу аналоговые часы. Программа xclock в данном примере является клиентом для X-сервера. С помощью ключа -display мы указали программе с каким X-сервером ей нужно взаимодействовать, то есть какой X-сервер выведет на устройство вывода (монитор) изображение программы xclock.

X-сервер, который запускается по умолчанию при загрузке системы имеет порядковый номер 0. То есть команда xclock -display :0 выведет часы на седьмую виртуальную консоль.

Вернемся к нашим часам на втором экземпляре X-сервера. Вы видите что у программы нет привычной окантовки окна с кнопками свернуть, развернуть, закрыть. Дело в том, что их рисует не X-сервер, а другой процесс, который называется менеджер окон. Менеджер окон также занимается масштабированием и перемещением изображения программ. Такое разделение функций также повышает гибкость всей графической подсистемы X Window. Так как вы можете выбирать какой менеджер окон использовать для прорисовки рамок приложений.

Как уже было сказано, X-сервер работает с устройствами ввода/вывода информации. Основной конфигурационный файл в котором хранятся настройки X-сервера называется /etc/X11/xorg.conf. Хотя во многих современных настольных дистрибутивах этот файл пустой, так как за настройку оборудования отвечает другая подсистема, тем не менее X-сервер продолжает читать конфигурацию из этого файла. Рассмотрим этот файл, так как возможны ситуации когда параметры ваших устройств ввода/вывода будут автоматически определяться некорректно и тогда ручная правка файла /etc/X11/xorg.conf может помочь решить проблему.

Файл /etc/X11/xorg.conf разбит на секции при помощи ключевых слов section и end section. Рассмотрим наиболее важные секции.

section "Files"
.
FontPath "/usr/share/fonts/X11/misc"
FontPath "tcp/192.168.1.1:7100"
.
end section

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc104"
Option "XkbLayout" "us"
EndSection

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "Emulate3Buttons" "true"
EndSection

Section "Device"
Identifier "Intel Corporation 82815 CGC [Chipset Graphics Controller]"
Driver "i810"
BusID "PCI:0:2:0"
EndSection

Section "Monitor"
Identifier "Универсальный монитор"
Option "DPMS"
HorizSync 28 - 64
VertRefresh 43 - 60
EndSection

Section "Screen"
Identifier "Default Screen"
Device "Intel Corporation 82815 CGC [Chipset Graphics Controller]"
Monitor "Универсальный монитор"
DefaultDepth 24
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600"
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600"
EndSubSection

Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
EndSection

Об этих и других параметрах можно подробно прочесть в справке Linux - man Xserver, man xorg.conf, man X и других разделах.

modeline “ 1024 × 768 @ 60 ″ 65.0 1024 1048 1184 1344 768 771 777 806 -vsync -hsync

В кавычках указывается название параметра modeline - “1024×768@60″ - оно может быть любым и никак не влияет ни на какие характеристики. Далее идет число указывающее частоту тактового генератора видеоадаптера (dot clock) - 65.0. Четыре следующих числа - 1024 1048 1184 1344 - указывают на разрешение по горизонтали. 1024 - это и есть само разрешение по горизонтали - количество видимых точек в строке. 1048 - это общее количество точек в строке, в том числе и невидимых (черная кромка экрана). 1184 - это число тактов развертки от начала строки до импульса синхронизации, а 1344 - это общее число тактов необходимое на формирование одной строки.

Числа 768 771 777 806 означают ту же информацию только для вертикального разрешения. Если вы не совсем поняли, что значат эти параметры не расстраивайтесь. В любом случае вам не нужно вычислять их вручную, так как они должны быть указаны в документации к вашему монитору. И ваша задача просто найти эти параметры и правильно прописать их в строке modeline.

-vsync, -hsync или могут быть +vsync, +hsync, обозначают тип синхроимпульса. Эти параметры также берутся из документации к монитору.

Строк modeline может быть несколько, а может быть только одна - для нужного вам разрешения.

Хотя такое ручное добавление параметров уже редкость, тем не менее еще может иметь место, и поэтому будьте осторожны в установке этих параметров, так как неправильная их установка может привести даже к выходу монитора из строя.

Давайте теперь более подробно поговорим о дисплей менеджерах (Display managers) или менеджерах экрана.

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

Термином графическая оболочка очень часто называют как оконные менеджеры (WindowMaker, IceWM, Blackbox, JWM и другие), так и полнофункциональные графические оболочки (GNOME, KDE, XFCE и другие).

Базовым дисплей менеджером Linux является xdm. Для двух наиболее популярных графических оболочек Gnome и KDE существуют свои дисплей менеджеры - gdm и kdm соответственно. Кроме основной функции, дисплей менеджеры имеют и ряд дополнительных: возможность выбрать язык ввода, предоставить возможность выбора оконного менеджера или графической оболочки, возможность, не заходя в систему, выключить компьютер.

Конфигурационные файлы дисплей менеджера xdm, расположены в каталоге /etc/X11/xdm/. Поле успешной регистрации пользователя в системе с помощью xdm, будет выполнятся скрипт Xsession, расположенный в /etc/X11/xdm/. Из этого скрипта будет выполнен запуск скрипта /etc/X11/Xsession, который продолжит загрузку графической подсистемы.

Конфигурационные файлы для дисплей менеджера gdm расположены в каталоге /etc/gdm/, а для kdm в каталоге /etc/kde4/kdm (для четвертой версии KDE).

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

Читайте также: