- Xorg, X11, Wayland? Серверы отображения Linux и протоколы с пояснениями
- Wayland или Xorg, что лучше? Это руководство для вас.
- Что такое дисплейный сервер в Linux?
- X Window System, Xorg, X11, объяснение
- Wayland, сервер отображения нового поколения
- Заключение
- What are X server, display and screen?
- 1 Answer 1
- To answer your questions
- How to forward a Program Display from a Remote Linux Server using X11
- The Environment
- Preparation
- Step 1: Install PuTTY and Xming
- Step 2: Install the required packages on the Linux server
- Step 3: Configure X11 forwarding on the Linux server
- Connection
- Step 4: Configure and start Xming
- Step 5: Establish an SSH connection via PuTTY
- Step 6: Test display forwarding
- Troubleshooting
- Conclusion
- Further Reading
Xorg, X11, Wayland? Серверы отображения Linux и протоколы с пояснениями
Вы когда-нибудь задавались вопросом, что именно делает X-сервер, Xorg, X11, Wayland и тому подобное?
Wayland или Xorg, что лучше? Это руководство для вас.
Вы всегда натыкаетесь на эти термины и знаете, что они имеют отношение к графике, но хотели бы узнать больше.
Что такое дисплейный сервер в Linux?
Сервер отображения — это программа, основной задачей которой является координация ввода и вывода данных от клиентов к остальной части операционной системы, оборудованию и друг другу. Дисплейный сервер взаимодействует со своими клиентами по протоколу дисплейного сервера.
Сервер отображения является ключевым компонентом любого графического интерфейса пользователя, в частности оконной системы. Это основной компонент графического интерфейса пользователя (GUI), который находится между графическим интерфейсом и ядром. Таким образом, благодаря дисплейному серверу вы можете использовать свой компьютер с графическим интерфейсом пользователя. Без него вы были бы ограничены только интерфейсом командной строки.
Очень важно не путать дисплейный сервер с окружением рабочего стола. Окружение рабочего стола (Gnome, KDE, Xfce, MATE и т.д.) использует дисплейный сервер.
Сервер отображения взаимодействует со своими клиентами по протоколу сервера отображения. В Linux существует три протокола сервера отображения. X11 и Wayland — два из них. Третий, Mir, выходит за рамки данного руководства.
X Window System, Xorg, X11, объяснение
X Window System, которую часто называют просто X, очень старая. Впервые появившись в 1984 году, она стала оконной системой по умолчанию для большинства UNIX-подобных операционных систем, включая Linux.
Сервер X.Org — это свободная реализация сервера отображения X Window System с открытым исходным кодом, управляемая фондом X.Org Foundation. Это приложение, которое взаимодействует с клиентскими приложениями по протоколу X11 для рисования объектов на дисплее и отправки событий ввода, таких как движения мыши, щелчки и нажатия клавиш. Обычно запускается X-сервер, который ожидает подключения к нему клиентских приложений. Xorg основан на модели клиент/сервер и поэтому позволяет клиентам работать как локально, так и удаленно на другой машине.
Если это не очевидно, то в дизайне X11 подразумевается, что приложение и дисплей не обязательно должны находиться на одном компьютере. Во времена разработки X было очень распространено, что X-сервер работал на рабочей станции, а пользователи запускали приложения на удаленном компьютере с большей вычислительной мощностью.
X11 — это сетевой протокол. Он описывает, как происходит обмен сообщениями между клиентом (приложением) и дисплеем (сервером). Эти сообщения обычно содержат примитивные команды рисования, такие как «нарисовать рамку», «написать этот символ в этой позиции», «левая кнопка мыши была нажата» и т.д.
Но X11 устарел, и он все еще был кучей хаков, сидящих поверх протокола, который не пересматривался более 30 лет. Большинство функций, которые предоставлял протокол X Server, больше не использовались. Практически вся работа, которую выполнял X11, была переложена на отдельные приложения и оконный менеджер. И все же все эти старые функции все еще существуют, отягощая все эти приложения, снижая производительность и безопасность.
Wayland, сервер отображения нового поколения
Wayland был начат Кристианом Хогсбергом, разработчиком X.Org, как личный проект в 2008 году. Это коммуникационный протокол, определяющий взаимодействие между сервером отображения и его клиентами. Wayland разрабатывается как бесплатный проект с открытым исходным кодом под руководством сообщества с целью замены X Window System (также известной как X11, или Xorg) современной, безопасной и более простой оконной системой.
В Wayland, compositor является сервером отображения. Compositor — это оконный менеджер, который предоставляет приложениям внеэкранный буфер для каждого окна. Менеджер окон объединяет буферы окон в изображение, представляющее экран, и записывает результат в память дисплея.
Протокол Wayland позволяет композитору отправлять входные события непосредственно клиентам, а клиенту — отправлять событие повреждения непосредственно композитору.
Как и в случае с X, когда клиент получает событие, он обновляет пользовательский интерфейс (UI) в ответ. Но в Wayland рендеринг происходит в клиенте, а клиент просто посылает запрос композитору, чтобы указать регион, который был обновлен.
Основное преимущество Wayland перед X заключается в том, что он начинает с нуля. Одной из основных причин сложности X является то, что с годами его роль менялась. В результате сегодня X11 выступает в основном как «действительно ужасный» протокол связи между клиентом и оконным менеджером.
Wayland также лучше, когда речь идет о безопасности. В X11 можно сделать то, что известно как «keylogging», позволяя любой программе существовать в фоновом режиме и читать, что происходит в других окнах, открытых в области X11. С Wayland этого просто не произойдет, поскольку каждая программа работает независимо.
Заключение
Однако X Window System все еще имеет много преимуществ перед Wayland. Несмотря на то, что Wayland устраняет большинство недостатков дизайна Xorg, у нее есть свои проблемы. Несмотря на то, что проект Wayland существует уже более десяти лет, он не является на 100% стабильным. По состоянию на 2021 год, большинство видеоигр и графических приложений для Linux по-прежнему написаны для X11. Кроме того, многие графические драйверы с закрытым исходным кодом, например, для графических процессоров NVIDIA, еще не обеспечивают полной поддержки Wayland.
X не может существовать долго, и Wayland, во многих отношениях, является улучшением. Но на данный момент подавляющее большинство существующих приложений были написаны для Xorg. Пока все эти приложения не будут перенесены, Xorg необходимо поддерживать. Wayland пока не очень стабилен по сравнению с Xorg.
Но все же я уже как год использую wayland по-умолчанию в своей системе. А каким вы пользуетесь?
What are X server, display and screen?
What are the relations and differences between X server, display and screen?
What does «the X server through both display» mean? Does a «display» means a display server, i.e. an X server, so two «displays» means two display servers, i.e. two X servers.
What does «multiple screens» mean? Does a «screen» mean a display monitor?
1 Answer 1
I will give you a visual example to explain the basics of X11 and what is going on in the background:
In this example you have a local X11-server with two «screens» on your hostA. Usually there would be only one server with one screen (:0.0), which spans across all your monitors (makes multi-monitor applications way easier). hostB has two X servers, where the second one has no physical display (e.g. virtual framebuffer for VNC). hostC is a headless server without any monitors.
terminal 1a, 2a, 5a, 6a: If you open a local terminal, and set the display to :0.0 (default) or :0.1, the drawing calls for your graphical programs will be sent to the local X server directly via the memory.
terminal 1b, 5b: If you ssh onto some server, usually the display will be set automatically to the local X server, if there is one available. Otherwise, it will not be set at all (reason see terminal 3).
terminal 2b, 6b: If you ssh onto a server, and enable X11-forwarding via the «-X» parameter, a tunnel is automatically created through the ssh-connection. In this case, TCP Port 6010 (6000+display#) on hostB is forwarding the traffic to Port 6000 (X server #0) on hostA. Usually the first 10 displays are reserved for «real» servers, therefore ssh remaps display #10 (next user connecting with ssh -X while you’re logged in, would then get #11). There is no additional X server started, and permissions for X-server #0 on hostA are handled automatically by ssh.
terminal 4: If you add a hostname (e.g. localhost) in front of the display/screen#, X11 will also communicate via TCP instead of the memory.
terminal 3: You can also directly send X11 commands over the network, without setting up a ssh-tunnel first. The main problem here is, that your network/firewall/etc. needs to be configured to allow this (beware X11 is practically not encrypted), and permissions for the X server need to be granted manually (xhosts or Xauthority).
To answer your questions
What are the relations and differences between X server, display and screen?
A display just refers to some X server somewhere. The term «both displays» was referring to «:0.0» on the local computer («local display») being equal to «localhost:10.0» on the ssh-target («TCP display»). «screens» is referring the different virtual monitors (framebuffers) of the X server. «localhost:10.0» is only redirecting to the local X server, there is no X server started on the ssh-target (see scenario terminal 2b/6b).
How to forward a Program Display from a Remote Linux Server using X11
Software is usually installed via command-line tools. It can be automated, scheduled, and repeated with minimal effort. However, for quick testing and demo purposing, or when you are new to some products, you might prefer discovering the new options using a graphical interface. For example, when installing Oracle Grid Infrastructure, Oracle Database, or Oracle Database Client. Tip: when you need an Oracle Database and quickly get started, just provision one on Oracle Cloud, fully automated.
This blog post provides a step-by-step guide on enabling X11 on your Linux server and forwarding the program display to your local Windows machine.
The Environment
- Oracle Linux VM on Oracle Cloud.
- Local Windows machine with PuTTY as SSH client and Xming as X Window server.
Preparation
Step 1: Install PuTTY and Xming
Download and install PuTTY and Xming on your local Windows machine.
Step 2: Install the required packages on the Linux server
On your Linux server, install the xorg-x11-xauth package:
sudo yum install xorg-x11-xauth -y
Step 3: Configure X11 forwarding on the Linux server
On your Linux server, make sure that /etc/ssh/sshd_config file contains the following option:
sudo vi /etc/ssh/sshd_config . X11Forwarding yes .
If you made changes to the sshd_config file, restart the sshd service:
sudo systemctl stop sshd.service sudo systemctl start sshd.service sudo systemctl enable sshd.service
Connection
Step 4: Configure and start Xming
Configure and start Xming via the provided XLaunch utility. Search for the XLunch application and start it. Keep the defaults, click Next, then Finish:
Step 5: Establish an SSH connection via PuTTY
In your PuTTY session, enable the X11 forwarding checkbox and establish the connection:
Step 6: Test display forwarding
To test the display forwarding, install and start the xclock application:
sudo yum install xclock -y xclock
The clock graphical application will be shown on your Windows machine:
Xming will show currently 1 client connected.
Troubleshooting
If you are still getting the “Can’t open display” error message. Restart your PuTTY session. When the session opens, you might see the “file /home/opc/.Xauthority does not exist” message. Nevertheless, display forwarding will work now. The message does not appear anymore when you start a new session again.
If the issue remains, try to set:
sudo vi /etc/ssh/sshd_config . X11UseLocalhost no . sudo systemctl stop sshd.service sudo systemctl start sshd.service sudo systemctl enable sshd.service
Conclusion
PuTTY and Xming provide free tools to forward program displays from Linux servers to your local Windows machine. This enables you to quickly start installing and discovering new options using a graphical interface.