Rating@Mail.ru
IPB
Etersoft - from Windows to Linux
Etersoft
решения для перехода
с Windows на Linux
Дружественные сайты: alv.me и Rus-Linux.net

Здравствуйте, гость ( Вход | Регистрация ) Поиск · 

> Темы по WM/DE

Темы по WM/DE: Enlightenment (mini-howto), IceWM, Ion3, Fluxbox, Openbox, XFCE, WMII3, DWM, PekWM,
Compiz-Fusion, Awesome, Xmonad.

 
Reply to this topic Start new topic
> О принципах работы графической подсистемы GNU/Linux и удалённое подключение к ней
sunny1983
bookmark
gyfbbdvkffmrljmmmwd
Dec 31 2016, в 19:56
Сообщение #1


Бывалый
Иконка группы

Сообщений: 342

Вставить имя   :   Цитата

ОС: GNU/Linux 4.x (Fedora, Debian)
Город: Сергиев Посад

Группа: Участники

Автор темы
Не до конца понимаю как работает графическая подсистема в GNU/Linux. Есть X-сервер и X-клиент, первый - то что взаимодействует с драйвером видеокарты и выводит изображение, второй - это сами GUI-приложения. Сервером может быть Xorg или его современные аналоги: Mir и Wayland, также некоторые VNC-сервера, такие как TigerVNC, также являются X-серверами.
Для работы в графическом режиме X-клиент нужно запускать одновременно с X-сервером, при отсутствии клиента X-сервер автоматически завершает свою работу. Для одновременного запуска используется утилита xinit. Если пользователь авторизовался в командной строке, то он запускает графическую подсистему командой startx, startx - это скрипт, в котором происходит подстановка переменных, в которых выбирается какой именно X-сервер и X-клиент запускать и с какими параметрами, у меня в конечном итоге выполняется команда:
Код
xinit /usr/bin/startxfce4 :0 -- /usr/bin/Xorg :0

Xorg запускается от имени root, поскольку /usr/bin/Xorg имеет suid-бит, :0 - это номер дисплея, номер дисплея также передаётся через переменную DISPLAY, только я не очень понимаю что это, дисплей как-то связан с открытым tcp-портом или файлом сокета? И почему графическая подсистема запускается командой startx из локальной консоли, но отказывается запускаться из ssh-консоли?
Ещё одна задача, которую я не могу решить. Была задача, запускать VNC-сервер, чтобы потом удалённо к нему подключаться. Я запускал всё ту же DE XFCE, для чего подключался к серверу по ssh с пробросом tcp-порта 5900 на 127.0.0.1:5900, потом в окне ssh-терминала давал команду:
Код
xinit /usr/bin/startxfce4 :0 -- /usr/bin/Xvnc :0 -geometry 800x600 -localhost -rfbport 5900 -SecurityTypes None

ну а после подключался VNC-клиентом к 127.0.0.1:5900. Что мне не удалось решить, так это автоматизировать этот процесс, чтобы TigerVNC запускался автоматически, и чтобы не нужно было держать открытым окно ssh-клиента, а пользоваться, например, клиентом remmina, который умеет открывать свои ssh-сессии.
Другой момент, который я не понимаю, это автоматический запуск графического окружения с помощью менеджера дисплеев, такого как xdm, gdm или lightdm. Как я понимаю из systemd-юнита вызывается всё тот же xinit, но в качестве клиента запускается менеджер дисплеев, в этом случае и сервер, и клиент запускаются от рута, потом, когда пользователь авторизовывается в графическом интерфейсе, запускается уже DE от имени пользователя. Правда где-то я слышал, что WM работает в одном X-сервере, а DE - в другом. Как в этом случае подключаться по VNC, чтобы можно было авторизовываться в окне VNC-клиента?
И ещё одна нерешаемая задача. ssh-сервер и клиент позволяют ведь и без VNC выводить окно GUI-приложения прямо на рабочем столе клиента с помощью опций X11Forwarding и ForwardX11. Что ещё для этого нужно? Какое значение должна принимать в этом случае переменная DISPLAY?
Go to the top of the page
 
+Quote Post
zov
bookmark
gyfbbdvkffmrljmmmwd
Dec 31 2016, в 21:49
Сообщение #2


Завсегдатай
Иконка группы

Сообщений: 252

Вставить имя   :   Цитата

Группа: Участники

Цитата(sunny1983 @ Dec 31 2016, в 19:56) *
Для работы в графическом режиме X-клиент нужно запускать одновременно с X-сервером,

Нет, при запущенном X-сервере.
Цитата
при отсутствии клиента X-сервер автоматически завершает свою работу.

Нет, просто ждет запросов от X-клиентов.
Цитата
Для одновременного запуска используется утилита xinit.

Одновременный запуск нежелателен: к моменту первого запроса от X-клиента X-cервер должен быть готов принимать запросы.
Go to the top of the page
 
+Quote Post
sunny1983
bookmark
gyfbbdvkffmrljmmmwd
Jan 1 2017, в 15:49
Сообщение #3


Бывалый
Иконка группы

Сообщений: 342

Вставить имя   :   Цитата

ОС: GNU/Linux 4.x (Fedora, Debian)
Город: Сергиев Посад

Группа: Участники

Автор темы
Понятно!
Но как всё же сервер соединяется с клиентом? :0 не имеет ли какого отношения к файлу /tmp/.X11-unix/X0 ?
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Jan 1 2017, в 16:53
Сообщение #4


grammatikführer
Иконка группы

Сообщений: 12406

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

Группа: Модераторы разделов

X(7)


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
пожалуйста
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post
sunny1983
bookmark
gyfbbdvkffmrljmmmwd
Jan 1 2017, в 20:25
Сообщение #5


Бывалый
Иконка группы

Сообщений: 342

Вставить имя   :   Цитата

ОС: GNU/Linux 4.x (Fedora, Debian)
Город: Сергиев Посад

Группа: Участники

Автор темы
Но для того чтобы в переменной DISPLAY можно было указать hostname:displaynumber.screennumber нужно же чтобы X-сервер слушал какие-то tcp-порты? А если он ничего не слушает?
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Jan 1 2017, в 21:02
Сообщение #6


grammatikführer
Иконка группы

Сообщений: 12406

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

Группа: Модераторы разделов

Цитата
X servers listen for connections on a variety of different communications channels (network byte streams, shared memory, etc.). Since there can be more than one way of contacting a given server, The hostname part of the display name is used to determine the type of channel (also called a transport layer) to be used. X servers generally support the following types of connections:
localThe hostname part of the display name should be the empty string. For example: :0, :1, and :0.1. The most efficient local transport will be chosen.
TCPIPThe hostname part of the display name should be the server machine’s hostname or IP address. Full Internet names, abbreviated names, IPv4 addresses, and IPv6 addresses are all allowed. For example: x.org:0, expo:0, [::1]:0, 198.112.45.11:0, bigmachine:1, and hydra:0.1.


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
пожалуйста
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post

 Reply to this topic Start new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 23rd May 2017 - в 15:36




Rating@Mail.ru