тонкие вопросы с Х-сервером

Используемые графические окружения, особенности, баги, отслеживание версий и изменений...

Модераторы: Olej, adminn, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 05 дек 2011, 22:42

Olej писал(а): Я знаю 3 принципиально разных решения задачи удалённого использования Х11
Olej писал(а): 2. использование туннелирования сетевого протокола пользовательского уровня в другой транспортный протокол ... самый известный из таких - SSH, называют ещё TELNET (но очень неуверенно называют - может брешут ;-) - нужно проверять).

3. использования нативных возможностей сетевого протокола Х (сокетного соединения Х-клиента) - без каких-либо промежуточных агентов. Это самый мощный, но и самый сложный в настройке способ.
Чтоб уж до конца закончить с вопросами удалённого выполнения Х-клиентов, хочу ещё поэкспериментировать с этим способом 3. Идея здесь проста и, если без деталей, состоит в том, что:
- Х-сервер прослушивает открытый сокет, в частности протокола TCP порт 6000;
- Х-клиент (приложение) с другого хоста должен всего лишь при запуске использовать в качестве выражения дисплея (либо параметром командной строки --display, дибо переменной окружения DISPLAY) не указание локального дисплея, чаще всего :0, которое по дефаулту вообще не указывается, а что-то типа IP:3 (IP адрес Х-сервера + его номер дисплея).

В теории всё просто... и очень гибко, и не требует никаких дополнительных механизмов типа туннелирования
... но на практике меня часто спрашивают коллеги, в общем, знающие эту теорию: "не получается!" :-(

P.S. Кстати, пока не ушли дальше ... перечитал я ещё раз и тщательно те публикации, где авторы пишут (переписывают друг у друга ;-) ):
Olej писал(а): 2. использование туннелирования сетевого протокола пользовательского уровня в другой транспортный протокол ... самый известный из таких - SSH, называют ещё TELNET (но очень неуверенно называют - может брешут ;-) - нужно проверять).
- о туннелировании сквозь протокол TELNET, что сразу мне как-то резануло слух...
Конечно, это пишут бред! : это просто авторы не дали себе большого труда разобраться и разграничить: вот сквозь SSH они действительно туннелируют протокол Х, а в случае TELNET - нет такм никакого туннеля, они просто а). открывают уделённый терминал и б). в нём запускают Х-приложение, указывая ему DISPLAY=... , что является, если им повезёт и приложение запустится, прямым использованием нативной сетевой природы Х без всяких туннелей ... о чём я и начал говорить.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 05 дек 2011, 23:24

Olej писал(а): ... но на практике меня часто спрашивают коллеги, в общем, знающие эту теорию: "не получается!" :-(
Вопрос: почему не получается то, что, в принципе, должно легко получаться?
На то есть 2 причины:

1. Х-сервер в нынешних навороченных дистрибутивах Linux (в отличии от родных для Х11 способов-команд: Xorg, xinit, startx...) запускается не непосредственно такой командной старта, а с помощью менеджеров оконных систем: xdm, gdm (GNOME), kdm (KDE) ... и прочей гадости ;-)
Они формируют команду запуска Xorg и к его параметрами приписывают: -nolisten tcp, что означает локальный UND (UNIX DOMAIN) сокет от клиента прослушивать, а TCP протокола сокет - нет.
Вы можете легко это у себя проверить:

Код: Выделить всё

[olej@notebook ~]$ ps ahx | grep Xorg
 2045 tty1     Rs+    8:40 /usr/bin/Xorg :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-06dQta/database -nolisten tcp vt1
 9536 pts/5    S+     0:00 grep Xorg
Когда-то раньше (лет 10 назад) один дурак это придумал и сказал: из соображений эффективности...
Когда оказалось, что это никак не влечёт эффективности, нынешние дистрибьюторостроители говорят: из соображений безопасности.
Но нет в том никакой безопасности! безопасность обеспечивается другими вовсе способами, а не тем, например, чтобы перерубить у компьютера LAN кабель :twisted: ...
Если запускать Х-сервер так, как я выше запускал 2-й Х-сервер, простейшей командой:

Код: Выделить всё

# Xorg :3

- то этой проблемы у вас автоматически не будет.
А иначе вам нужно научить долбанный gdm запускать Хorg без вот того параметра-придатка: -nolisten tcp

2. эта причина связана уже действительно с безопасностью: Х-сервер готов принимать запросы (работать с Х-приложениями) только с хостов, с которых ему разрешено работать.
Их легко проверить:

Код: Выделить всё

[olej@notebook ~]$ xhost
access control enabled, only authorized clients can connect
SI:localuser:olej
SI:localuser:gdm
SI:localuser:root
Вот на этом компьютере Х-сервер будет принимать только некоторые локальные запросы (SI - Server Interpreted) и всё. У команды xhost нет help (это команда из комплекта X11), но есть man:

Код: Выделить всё

[olej@notebook ~]$ xhost
XHOST(1)                                                              XHOST(1)
NAME
       xhost - server access control program for X
SYNOPSIS
       xhost [[+-]name ...]
...
Полюбопытствуйте, что там есть name
... The name can be a host name or a user name. ...

Ну а для тех кому лень :lol: , я приведу несколько примеров:

Код: Выделить всё

[olej@notebook ~]$ xhost +
access control disabled, clients can connect from any host
[olej@notebook ~]$ xhost -
access control enabled, only authorized clients can connect
- разрешить всем, а затем запретить всем кроме локальных.

Код: Выделить всё

[olej@notebook ~]$ xhost +192.168.1.22
192.168.1.22 being added to access control list
[olej@notebook ~]$ xhost +192.168.1.23
192.168.1.23 being added to access control list
[olej@notebook ~]$ xhost +192.168.1.24
192.168.1.24 being added to access control list
[olej@notebook ~]$ xhost
access control enabled, only authorized clients can connect
INET:192.168.1.24
INET:192.168.1.23
INET:notebook.localdomain
SI:localuser:olej
SI:localuser:gdm
SI:localuser:root
- видите как они добавляются? ;-) точно так же они поштучно и удаляются.

А вот это уже совсем интересно ... правда? ;-) :

Код: Выделить всё

[olej@notebook ~]$ DISPLAY=:3 xhost
access control enabled, only authorized clients can connect
INET:localhost.localdomain
INET:notebook.localdomain
INET6:notebook.localdomain
INET6:fe80::213:2ff:fe69:709b
LOCAL:
[olej@notebook ~]$ DISPLAY=:0 xhost
access control enabled, only authorized clients can connect
NIS:olej@0.0.0.0
NIS:root@192.168.1.0
INET:192.168.1.0
INET:192.168.1.24
INET:192.168.1.23
INET:notebook.localdomain
SI:localuser:olej
SI:localuser:gdm
SI:localuser:root
- это я, естественно, запустил 2-й Х-сервер с дисплеем :3 оконным менеджером twm (хотя думаю, что оконный менеджер здесь не при чём).
Как видно, доступ для разных Х-серверов радикально различается!
И это тот нечастый случай, когда действия -display и DISPALY= различаются, сравните:

Код: Выделить всё

[olej@notebook ~]$ DISPLAY=:3 xhost +192.168.1.9
192.168.1.9 being added to access control list
[olej@notebook ~]$ DISPLAY=:3 xhost
access control enabled, only authorized clients can connect
INET:nvidia.localdomain
INET:localhost.localdomain
INET:notebook.localdomain
INET6:notebook.localdomain
INET6:fe80::213:2ff:fe69:709b
LOCAL:
[olej@notebook ~]$ xhost -dispaly :3 +192.168.1.7
xhost:  bad hostname "dispaly"
xhost: unknown address family ""
xhost:  bad hostname ":3"
192.168.1.7 being added to access control list

- IP 192.168.1.7 добавился к списку допустимых хостов, но не сервера :3, а сервера :0 - это вдвойне не то, что я хотел получить.

Итого: у нас есть 2 препятствия для удалённого нативного Х11, 2-е я более-менее разрешил здесь, а с 1-м нужно разобраться особо.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 06 дек 2011, 18:37

Да, кстати... ;-)
Olej писал(а): - в текстовой консоли (<Ctrl><Alt><F5> для определённости):

Код: Выделить всё

[olej@nvidia ~]# Xorg :3
...
Слухи о том, что запускать ещё один экземпляр Х-сервера нужно обязательно из текстовой консоли (или виртуального терминала) - они сильно преувеличены :lol:
Это прекрасно делается не покидая графического терминала:

Код: Выделить всё

[root@nvidia ~]# Xorg :3
X.Org X Server 1.9.5
Release Date: 2011-03-17
X Protocol Version 11, Revision 0
Build Operating System: x86-06 2.6.32-131.2.1.el6.x86_64 
Current Operating System: Linux nvidia.localdomain 2.6.35.14-96.fc14.i686.PAE #1 SMP Thu Sep 1 12:31:46 UTC 2011 i686
Kernel command line: ro root=UUID=3c22d457-0707-4923-9332-bfd415d37753 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=ru_RU.UTF-8 KEYTABLE=ru rhgb quiet nouveau.modeset=0 rdblacklist=nouveau
Build Date: 13 October 2011  02:23:54PM
Build ID: xorg-x11-server 1.9.5-2.fc14 
Current version of pixman: 0.18.4
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.3.log", Time: Tue Dec  6 17:28:33 2011
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
(EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
(EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
(EE) NVIDIA(0):     you continue to encounter problems, Please try
(EE) NVIDIA(0):     reinstalling the NVIDIA driver.
...

А затем из другого столь же графического терминала ;-) :

Код: Выделить всё

[olej@nvidia ~]$ twm -display :3
twm: warning: font for charset MICROSOFT-CP1251 is lacking.
twm: warning: font for charset MICROSOFT-CP1251 is lacking.
twm: warning: font for charset MICROSOFT-CP1251 is lacking.
twm: warning: font for charset MICROSOFT-CP1251 is lacking.
twm: warning: font for charset MICROSOFT-CP1251 is lacking.
twm: warning: font for charset MICROSOFT-CP1251 is lacking.
...
Ну, а дальше вы отправляетесь в <Ctrl><Alt><F7> и ... сами знаете, что там увидите :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 06 дек 2011, 20:45

Olej писал(а):
Это прекрасно делается не покидая графического терминала:
А заодно и root там не нужен:

Код: Выделить всё

[olej@nvidia ~]$ Xorg :3 vt9

X.Org X Server 1.9.5
...
И теперь, как должно быть понятно, перейдя в <Ctrl><Alt><F9> :lol: ... можете наслаждаться тем, что:

Код: Выделить всё

[olej@nvidia ~]$ twm -display :3
...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 07 дек 2011, 01:44

Возвратимся к удалённому запуску Х-приложений...
Olej писал(а): Итого: у нас есть 2 препятствия для удалённого нативного Х11, 2-е я более-менее разрешил здесь, а с 1-м нужно разобраться особо.
Как уже понятно, 1-йший способ иметь запущенный Х-сервер прослушивающий TCP сокет - это просто запустить ещё один экземпляр Х-сервера как нам надо (а то б я с этим так долго долбался?! ;-) ):

Код: Выделить всё

[olej@nvidia ~]$ Xorg :5 vt10 &
[1] 4423
[olej@nvidia ~]$ 
[olej@nvidia ~]$ DISPLAY=:5 pekwm
failed to open file /home/olej/.pekwm/config
failed to open file /home/olej/.pekwm/config
failed to open file /usr/share/pekwm/themes/<THEME>/theme
 *** WARNING: missing WORKSPACEINDICATOR section!
...
[olej@nvidia 03]$ ps ahx | grep Xorg
 1993 tty1     Ss+    4:54 /usr/bin/Xorg :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-mAvQhf/database vt1
 3590 tty9     Ss+    0:06 Xorg :3 vt9
 4423 tty10    Ss+    0:02 Xorg :5 vt10
 5289 pts/14   S+     0:00 grep --color=auto Xorg
как видите, теперь у меня их уже 3 ;-)

Код: Выделить всё

[olej@nvidia ~]$ who
olej     tty1         2011-12-06 17:24 (:0)
olej     pts/0        2011-12-06 17:24 (:0.0)
olej     pts/1        2011-12-06 17:24 (:0.0)
...
olej     pts/10       2011-12-06 19:39 (:3.0)
olej     pts/11       2011-12-06 19:40 (:3.0)
...
olej     pts/13       2011-12-06 20:02 (:5.0)
- обратите внимание: при этом нет другого tty кроме tty1 из которого стартовал дистрибутивный GNOME ;-)

Вскользь заметим попутные детали:

1. Х11 - это очень давно развивающееся творение, с 1984г. ... ещё за 11 лет до того, как Линус Торвальдс придумал слово Linux ;-) (к тому времени и самому Линусу было 14 годков)...
И это забывается, и то, что большинство серьёзных публикаций по Х11 относятся к тем временам, и там пишут примерно так: "Х11 очень прожорливая к ресурсам и сжирает для своего функционирования 8Mb RAM"... а новые публикации оттуда переписываются... ;-)
А на сегодня у меня на любом компьютере где 2Gb, а где по 4Gb RAM, и меня не занимает прожорливость Х11, и по производительности там "лишних" CPU столько (2, 4, ...), что и 20 экземпляров Х11 ничего не значат - весь вопрос в удобстве и возможностях.

2. возможность "параллельных" Х-серверов это ещё и простая возможность опробовать и поиграться (себе выбрать) оконный менеджер под потребности ... а их доступных ой как много, вот я себе для осмотра поинсталлировал:

Код: Выделить всё

[olej@nvidia 03]$ ls /usr/bin/*wm*
/usr/bin/9wm                  /usr/bin/fvwm-root          /usr/bin/wmaker
/usr/bin/bwm-ng               /usr/bin/fvwm-xdg-menu      /usr/bin/wmaker.inst
/usr/bin/cmuwmtopbm           /usr/bin/gnome-wm           /usr/bin/wmc
/usr/bin/dwm                  /usr/bin/icewm              /usr/bin/wmf2eps
/usr/bin/dwm-start            /usr/bin/icewmbg            /usr/bin/wmf2fig
/usr/bin/fvwm                 /usr/bin/icewmhint          /usr/bin/wmf2gd
/usr/bin/fvwm2                /usr/bin/icewm-menu-gnome2  /usr/bin/wmf2svg
/usr/bin/fvwm-bug             /usr/bin/icewm-session      /usr/bin/wmf2x
/usr/bin/FvwmCommand          /usr/bin/icewmtray          /usr/bin/wm-oldmenu2new
/usr/bin/fvwm-config          /usr/bin/icewm-xdg-menu     /usr/bin/wmsetbg
/usr/bin/fvwm-convert-2.4     /usr/bin/jwm                /usr/bin/wmsetup
/usr/bin/fvwm-convert-2.6     /usr/bin/libwmf-fontmap     /usr/bin/xfwm4
/usr/bin/fvwm-menu-desktop    /usr/bin/mwm                /usr/bin/xfwm4-settings
/usr/bin/fvwm-menu-directory  /usr/bin/pbmtocmuwm         /usr/bin/xfwm4-tweaks-settings
/usr/bin/fvwm-menu-headlines  /usr/bin/pekwm              /usr/bin/xfwm4-workspace-settings
/usr/bin/fvwm-menu-xlock      /usr/bin/twm
/usr/bin/fvwm-perllib         /usr/bin/wmagnify
(здесь не совсем все - оконные менеджеры, но почти все ;-) ).
Именно затем я в последнем примере запустил менеджер pekwm, вот в нём xterm:
pekwm-term.png
pekwm-term.png (9.15 КБ) 10413 просмотров
(и из pekwm замечательным образом выполняется ksnapsot из комплекта KDE на библиотеках Qt ... из команды на картинке видно).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 07 дек 2011, 02:13

Olej писал(а):Возвратимся к удалённому запуску Х-приложений...
И завершаем нашу 1-ю попытку (1-й вариант) запуска удалённого Х-приложения...
На хосте где я всё это делаю:

Код: Выделить всё

[olej@nvidia ~]$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr F4:6D:04:60:78:6F
          inet addr:192.168.1.9  Bcast:192.168.1.255  Mask:255.255.255.0
...
[olej@nvidia ~]$ DISPLAY=:5 xhost +192.168.1.22
192.168.1.22 being added to access control list
[olej@nvidia ~]$ DISPLAY=:5 xhost
access control enabled, only authorized clients can connect
INET:notebook
...
Всё, здесь нам больше делать нечего - теперь я ухожу на этот хост 192.168.1.22 (он же notebook):

Код: Выделить всё

[olej@nvidia ~]$ ssh olej@192.168.1.22
olej@192.168.1.22's password:
[olej@notebook ~]$ DISPLAY=192.168.1.9:5 /usr/bin/kdevelop
kbuildsycoca running...
Reusing existing ksycoca
QLayout "unnamed" added to IndexView "unnamed", which already has a layout
Invalid entry (missing '=') at /home/olej/.kde/share/config/docdevhelppluginrc:10
...
Встречайте! :lol:
KDevelop.png
KDevelop.png (26.44 КБ) 10410 просмотров
- ещё одна среда разработки KDevelop ...
- выполняющаяся на хосте 192.168.1.22 ...
- отображающаяся в экран хоста 192.168.1.9 ...
- и как оно выглядит в оконном менеджере pekwm :-o

P.S. Здесь ещё любопытно посмотреть на хосте где выполняется приложение KDevelop :

Код: Выделить всё

[olej@notebook ~]$ who
olej     tty1         2011-12-06 17:23 (:0)
olej     pts/0        2011-12-06 17:23 (:0.0)
...
olej     pts/11       2011-12-06 17:24 (:0.0)
olej     pts/13       2011-12-07 00:51 (nvidia.localdomain)
olej     pts/14       2011-12-07 01:02 (192.168.1.9:5)
olej     pts/15       2011-12-07 01:24 (nvidia.localdomain)
там 2 обычные сессии SSH, а между ними это и есть приложение работающее на дисплей 192.168.1.9:5
Последний раз редактировалось Olej 07 дек 2011, 02:42, всего редактировалось 1 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 07 дек 2011, 02:32

Вот теперь, когда мы увидели 1-й вариант запуска любого удалённого GUI приложения, маленькое примечание относительно команды xhost (потому как ни в каких вариантах мы не обойдём xhost для разрешения коннектов к Х-серверу, более того, насколько я знаю, нет другого способа это разрешить).
Olej писал(а): Ну а для тех кому лень :lol: , я приведу несколько примеров:

Код: Выделить всё

[olej@notebook ~]$ xhost +
access control disabled, clients can connect from any host
[olej@notebook ~]$ xhost -
access control enabled, only authorized clients can connect
У xhost есть одна любопытная особенность ... которая попервах может ввести в замешательство - зайдём на хост с которым только что работали в примерах:

Код: Выделить всё

[olej@nvidia ~]$ ssh 192.168.1.22
olej@192.168.1.22's password: 
Last login: Wed Dec  7 00:51:20 2011 from nvidia.localdomain
[olej@notebook ~]$ xhost +
xhost:  unable to open display ""
[olej@notebook ~]$ sudo xhost +
xhost:  unable to open display ""
[olej@notebook ~]$ xhost
xhost:  unable to open display ""
Понятно что произошло? xhost можно выполнить только с локального терминала! ни с какого защищённого соединения и т.д. - невозможно, и root здесь не при чём...
Я не совсем понимаю как они это сделали, но вот это очень правильно из соображений безопасности: управлять политикой доступа Х-сервера можно только локально.

Это же и здесь:

Код: Выделить всё

[olej@notebook ~]$ man xhost
...                                                                                                                           For  security,  the
       options  that  affect  access  control may only be run from the "controlling host".  For
       workstations, this is the same machine as the server.  For X terminals, it is the  login
       host.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 07 дек 2011, 21:55

Мне здесь как-то предложили внятно упорядочить все мною обсуждаемые с Х11 фокусы, здесь и в соседних темах, в виде связной статьи...
Может быть, может быть...
Возможно и нужно что-то подобное, потому как пересмотренные мною в разные времена и в великом множестве публикации относительно Х11 носят характер преимущественно:
- как установить (сменить) новый DE/WM в десктопе Linux?
- как там с шрифтами разобраться или переключением раскладок?
- как GNOME раскрасить в свои калора?
...
Это всё уровень потребителя (даже не пользователя) и он, вообще то, сильно характерен для Linux, потому Linux сообщество получило Х11 уже в сложившемся виде как дорогой подарок.
Меня же интересуют стороны даже не программистские/разработческие, а инженерные: с позиции инженера-системотехника - как наилучше и проще использовать Х11 а). для построения рабочего окружения (стенда) для разработки/отладки целевых приложений и б). как составную часть комплексных программно-аппаратных решений на платформах совершенно не попадающих под категорию стандартных десктопов.

Из сказанного выводы следующие (это как некоторый промежуточный итог):

1. нужно подобрать списочком перечень тех документов (немногих) которые а). выпадают из огромного потока вот той потребительской документации + б). были бы всё-таки не 25 летней давности, которые так и кочуют вслед за Х11 из системы в систему.
Вот я для себя начинаю складывать такой список "опорных" документов:
- http://www.x.org/archive/X11R6.8.1/doc/X.7.html
The X.Org Foundation requests that the following names be used when referring to this software:
X
X Window System
X Version 11
2. из предыдущего рассмотрения для меня остаётся не рассмотренный вопрос:
Итого: у нас есть 2 препятствия для удалённого нативного Х11, 2-е я более-менее разрешил здесь, а с 1-м нужно разобраться особо.
- №1 для случая как разрешить коннект к Х-серверу для экземпляра :0, запускаемого на десктопе при старте менеджерами *dm: xdm, gdm, kdm, ...
Мне здесь далеко не всё ясно, разборки с конкретным менеджером (gdm для GNOME, например), потому, что в моём интересе это не вопрос не к конкретному gdm, а к любой такой гадости: xdm, gdm, kdm, ... (много их) - как его переучить вести себя так, как велено :lol:

Вот на том, пожалуй, я смогу считать свой интерес удовлетворённым.
Последний раз редактировалось Olej 08 дек 2011, 01:13, всего редактировалось 1 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 08 дек 2011, 01:00

Olej писал(а): - №1 для случая как разрешить коннект к Х-серверу для экземпляра :0, запускаемого на десктопе при старте менеджерами *dm: xdm, gdm, kdm, ...
Мне здесь далеко не всё ясно, разборки с конкретным менеджером (gdm для GNOME, например), потому, что в моём интересе это не вопрос не к конкретному gdm, а к любой такой гадости: xdm, gdm, kdm, ... (много их) - как его переучить вести себя так, как велено :lol:
Существует почему-то мнение, что графический экран перед загрузкой того же GNOME, в котором делается logon - это уже работа Х11. Но это в принципе неверно. Загрузчик GRUB тоже рисует вот эту графическую картинку при начальной загрузке:

Код: Выделить всё

[olej@notebook ~]$ ls /boot/grub/*.gz
/boot/grub/splash.xpm.gz
[olej@notebook ~]$ sudo cat /boot/grub/grub.conf | grep splash
splashimage=(hd0,0)/grub/splash.xpm.gz

Но от того он графической системой не становится: перевести видеоадаптер в графический режим и нарисовать картинку - большой сложности в том нет.
Вот тот же logon делается так же, и делает его вон тот менеджер: xdm, gdm, kdm и другие *dm-ы. В задачи которого (на конкретике gdm) входит последовательно:

1. получить от пользователя logon, чтобы он не влез в Х11 без этого (Х11 не имеет собственного механизма аутентификации - см. примеры ранее - да и не может её иметь по своей логике);

2. запустить Х-сервер с какими-то там параметрами...

3. взять из каталога /usr/share/xsessions файл конфигурации того DE/WM, список которых раскрывается на выбор внизу окна logon (экрана gdm):

Код: Выделить всё

[olej@notebook xsessions]$ pwd
/usr/share/xsessions
[olej@notebook xsessions]$ ls
9wm.desktop       gnome.desktop                  kde.desktop       openbox.desktop        WindowMaker.desktop
dwm.desktop       gnome-valgrind-errors.desktop  kde-safe.desktop  openbox-gnome.desktop  xfce4.desktop
dwm-user.desktop  gnome-valgrind-leaks.desktop   LXDE.desktop      openbox-kde.desktop
fvwm.desktop      icewm.desktop                  mwm.desktop       pekwm.desktop
4. и запустить выбранный вами DE/WM, вот для примера самый короткий из них:

Код: Выделить всё

[olej@notebook xsessions]$ cat WindowMaker.desktop 
[Desktop Entry]
Encoding=UTF-8
Name=WindowMaker
Comment=Start Window Maker
Exec=wmaker
Type=Application

[Window Manager]
SessionManaged=true
Интересна здесь только одна строчка: Exec=wmaker.
Отсюда начинается старт, раскрутка, восстановление сохранённых конфигураций...

Но всё, что происходит далее п. 2 выше - меня не интересует... как и ещё какие-то мелкие попутные действия, которые делает *dm...
Меня интересуют только параметры запуска Xorg на п.2 и как можно перестартовать *dm с такими параметрами, именно так - потому, что изменить параметры уже запущенного Х-сервера нельзя.

И вот тут начинается цирк по принципу... "голь на выдумки хитра"(с) :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: тонкие вопросы с Х-сервером

Непрочитанное сообщение Olej » 08 дек 2011, 01:12

Olej писал(а): Но всё, что происходит далее п. 2 выше - меня не интересует... как и ещё какие-то мелкие попутные действия, которые делает *dm...
Меня интересуют только параметры запуска Xorg на п.2 и как можно перестартовать *dm с такими параметрами, именно так - потому, что изменить параметры уже запущенного Х-сервера нельзя.

И вот тут начинается цирк по принципу... "голь на выдумки хитра"(с) :lol:
А под голью я здесь имею а). разработчиков DE (к разработчикам WM это не относится ;-) ) + б). комплектовщиков дистрибутивов с их конфигурациями.
Потому как они настолько охвачены фикцией "интегрированности", которой нахватались из Windows, что способы старта и конфигурирования *dm неузнаваемо меняются от дистрибутива к дистрибутиву и от релиза к следующему релизу дистрибутива :twisted:

1. в GMOME CentOS 5.2 (это основной стабильный дистрибутив этой ветки ещё на 2009г.) был такой GUI инструмент конфигурирования gdm:

Код: Выделить всё

# gdmsetup
...

- устанавливаем в этом менеджере разрешение TCP доступа, и перезапускаем Х систему:

Код: Выделить всё

# gdm-restart

(конечно, и там и там root - обязателен).

2. через 2 года, в Fedora 12 & 14 нет уже ни gdmsetup, ни gdm-restart...

Код: Выделить всё

[root@nvidia ~]# gdmsetup
bash: gdmsetup: command not found...
Здесь лезем в конфигурационные файлы gdm - файл /etc/gdm/custom.conf и руками вписываем там в (пустой по дефаулту) секции [security] :

Код: Выделить всё

[security]
DisallowTCP=false
Перезапускаем gdm и получаем желаемый результат:

Код: Выделить всё

[olej@nvidia log]$ ps ahx | grep Xorg
 2063 tty1     Ss+    2:27 /usr/bin/Xorg :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-Xxm8lW/database vt1
 5598 pts/10   R+     0:00 grep --color=auto Xorg
- вот видите: он про свой nolisten уже забыл ;-)

3. но на этом цирк ведь не кончается (когда за дело берутся настоящие циркачи! ;-) )
Уже в следующих релизах дистрибутивов и GNOME ... читаем здесь - Ubuntu 11.04/11.10 X server -nolisten_tcp
Для версии 11.10:
Здесь опять все перепилили. GDMа теперь нет. Есть LightDM. Включить сеть для иксов так:
И начинаем понимать, что такие заметки-статьи ... "крик души" - будут появляться при каждом новом релизе GNOME, KDE, .... любого DE... - потому что для них это скрытый источник существования!.

4. но главное - понимаем: чтоб не чудили дистрибьюторы, лезем-читаем по-верхам о настройках того *dm, который они вчудили на этот раз + быстренько конфигурационно учим его (и только его!) забыть параметр nolisten для Х-сервера.

Всё ... ;-)

Ответить

Вернуться в «Графические окружения в дистрибутивах»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей