Как стать автором
Обновить

Графика в Linux — как это вообще устроено

Время на прочтение4 мин
Количество просмотров3.8K

По мотивам недавних постов, затрагивавших тему графики в Linux - как оно вообще там сделано, и как работает, не углубляясь особо в детали.

Здесь не будет технических подробностей и нюансов настройки - так, чисто обзорно сверху по кочкам.
Зачем? Затем, что, как я вижу, сейчас не все пользователи Linux представляют, что именно скрывается за словами "графическая среда", и чем Gnome отличается от Wayland.

Linux-сервер vs Linux-десктоп

Во-первых, стоит сразу понимать, что оба эти варианта - по сути одно и то же.
Разница в том, что в "десктопе" по умолчанию сразу установлены библиотеки для работы графики, какая-нибудь "среда" (тот же Gnome) и суповой типовой набор программ наподобие браузера и папкоменеджера, которые ожидает увидеть юзер.

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

Обычно подразумевается установка одного из массовых DesktopEnvironment (Gnome, XFCE, Plasma, Mate) - которые технически состоят из графического движка (X-window или Wayland) и "комплекта" программ, подготовленных для работы более-менее в общем стиле.

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

X-window

X-window был придуман и разработан много лет назад, в ...
А впрочем, какая сейчас разница? Много лет назад.
За эти годы он оброс дополнениями, расширениями и всяким-прочим, и сейчас в основном известен как Xorg/X11 (хотя были и другие реализации).

Общий принцип работы X-window примерно такой:

В центре безобразия - программа X-server. Она рисует на экране, получает ввод от клавиатуры, мыши и т.д, и обменивается сообщениями с X-программами.

Особый вид X-программ - WindowManager, он управляет окнами: рамки, кнопки на них, открытие-закрытие, перемещение.
WindowManager может быть совсем отдельной программой, или уметь также делать что-то еще, например, показывать настраиваемое меню, или даже работать "композитором" - но это позже.

Остальные программы просто рисуют в своих окнах, или на "root window" - фоне.
Ни они, ни WindowManager к X-серверу прямого отношения не имеют, они отдельные, сами по себе.
А X-сервер рисует всё это на экране. В частных случая X-сервер может быть виртуальным - работать не с железом компьютера, а с буфером в памяти, или с внешним X-сервером, или с сетью и т.д.

Взаимодействие программ с X-сервером может идти через UNIX-socket - специальный файл на диске, или через сеть. Для локальной работы особой разницы нет, но возможность работать через сеть может быть использована для создания "тонкого клиента": на компьютере устанавливается только X-сервер и минимальная программа для подключения к другим компьютерам, а уже там находится весь рабочий софт.

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

Зато можно встретить другую схему подключения:

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

Недостаток - скорость работы. Скажем, на 10-мегабитной локальной сети вполне может быть 15 FPS, что очень мало.
Можно ускорить: ключик -C для ssh даст аж до 30 FPS - но и это медленноооо..

VNC

Для подключения также можно использовать VNC: этот протокол предполагает подключение к удаленному X-серверу, который работает на сервере, где к нему подключаются программы-клиенты как на локальной машине.
Короче, проще картинкой:

Как видно, при этом на сервере должен быть установлен X-сервер с какой-то минимальной средой, именно к нему подключается VNC.
Впрочем, как раз тот случай когда X-сервер может быть виртуальным и не работать с видеовыходом.

Особенность такого подключения в том, что с точки зрения программ - они работают локально, там, на сервере - со всей возможной быстротой.
А вот картинка "с экрана" оттуда потом тянется достаточно долго: несмотря на высокий FPS - всё довольно сильно подтормаживает.
Хотя - зависит от конкретного vnc viewer на локальной машине.

RDP

Еще один протокол - RDP. Он лучше оптимизирует передачу данных по сети, поэтому несмотря на похожую схему подключения, как и у VNC - по ощущению работает чуть быстрее.

Как и в случае в VNC - результат сильно зависит от используемой программы-клиента.
Так, например, rdesktop работает лучше чем remmina.

Возможен и альтернативный вариант: RDP к локальному VNC:

Поскольку VNC в этом случае работает локально скорость практически не теряется, при этом программы видят сами себя быстрыми, как при VNC, а передача по сети по RDP быстрее чем по оригинальному VNC.

Wayland

Ну а что такое Wayland?
Новый протокол взамен "устаревшего" X11, и сервер, который в ряде случаев работает лучше X11.

Но в данном случае вместо связки "X-сервер + WindowManager" используется так называемый "композитор": он не только рисует на экране, но и управляет поведением окон.
Может быть как отдельной программой, так и входить в состав некоторых DE.

При этом программы, умеющие работать через wayland - работают с композитором напрямую, а обычные X-программы - через прослойку Xwayland.

Практический смысл

Вот тут самое интересное: есть ли вообще особый смысл в этом?

В случае Windows понятно: начиная от запуска десктопных бизнес-приложений на сервере до "рядовых", программ, потому что все они - GUI.

В случае Linux уже вопрос: GUI бизнес-приложений, которые имело бы смысл запускать на сервере, не слишком-то много, работать с графикой самой по себе, типа Gimp, по сети - медленно, а большинство действительно полезных программ - консольные, а то и вообще демоны.
Разве что браузер запускать...

В итоге выходит, что ставить на сервер десктопную версию ОС хоть и можно, и даже настроить удаленную работу с ней можно - но смысла большого нет.
А отдельные программы, например, посмотреть что за картинка там лежит - можно и без всякого DE, и даже без X-сервера на сервере, чисто через ssh.

Теги:
Хабы:
+5
Комментарии6

Публикации

Ближайшие события