настройка Xvnc

Установка, обновление, настройка Linux

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

SerB
Интересующийся
Сообщения: 7
Зарегистрирован: 19 июн 2012, 15:03
Контактная информация:

настройка Xvnc

Непрочитанное сообщение SerB » 21 июн 2012, 15:31

Здравствуйте.
Суть проблемы вот в чем, я подключаюсь к своему серверу (SLES 10.0) через браузер (java plugin, т.е. получается, как клиент tightVNC к встроенному tightVNC серверу) . В результате после подключения в браузере открывается локальный X-сервер, в принципе это нормально, но есть два момента:
1) локаль SUSE - по умолчанию UTF-8 русская, нужное мне приложение (довольно серьезный тренажер) написано для локали ru_UA (KOI-8), для отображения информации (на русском языке) я подключаю шрифты из папки /rus.koi, все нормально при работе в ЛВС (xset +fp /rus.koi) и даже при подключении "удаленно" через X-server XMING (прописываю путь к каталогу со шрифтами в конфигурации xming, предварительно добавив их, - /rus.koi ,- на локальный комп.). А вот при подключении через java-плагин я не могу добавить путь к шрифтам (перепробовал различные варианты). xset q показывет только заданные по умолчанию шрифты. А вот где они прописаны найти не могу. Гугл в помощь, как говорится, но...
2) очень неприятный момент - сервер тренажера (не путайте с X-сервером, в данном случае он - клиент для X-серверов) ОТКРЫВАЕТ на X-серверах клиентских машин (рабочих местах) ряд окон (мнемосхемы, графики, органы управления и т.п., на которых отображается информация из нескольких процессов ) причем наборы окон различные для различных рабочих мест. Идентификация и привязка рабочих меси производится по адресу типа хост:дисплей.экран, например хост:1.0, хост:2.0 ... хост:8.0. Проблема в том, что номера экранов при подключении присваиваются java-плагином с кэшированием (т.е. номер окна равен номеру сеанса, и прежде чем запустить приложение приходится вручную прописывать данные экрана, которые я получаю командой $DISPLAY заново). Нельзя ли как-то автоматизировать это? Т.е. есть ли возможность задать скриптом на сервере (хосте) опрос подключенных к нему клиентов?

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: настройка Xvnc

Непрочитанное сообщение tundra37 » 22 июн 2012, 20:13

X - это самая большая путаница в Unix. Графическое приложение выводит графику на удаленный/локальный дисплей. На клиентской стороне ставится Х-сервер, который и выводит на реальный дисплей. Задумано это было для реализации через Х-терминалы, а кончилось перегруженным сервисами десктопным Линуксом. Плюс на все это навешана оконная система : от простых до продвинутых типа gnome и KDE. Кто собственно отвечает за фонты я точно не скажу, но - вместе с Х-сервером в Линукс крутится сервер фонтов - XFS. В вашем случае вроде и сервер и клиент в Линуксе - значит и фонты настраивются там. Скорее всего вы просто не там их подключаете. А ваш вопрос неправильный. Сервер не знает клиентов - говорят ему выведи на дисплей 5.0 и он выводит, если он к нему подключен.
Чтобы было понятно опишу реальную ситуацию. Мы работаем из Винды с приложениями в Линукс. Если я ошибусь и в переменной окружения задам не свой дисплей, а дисплей соседа IP:0 - мое приложение исправно нарисует окно у соседа, если конечно у него запущен Х-сервер.

SerB
Интересующийся
Сообщения: 7
Зарегистрирован: 19 июн 2012, 15:03
Контактная информация:

Re: настройка Xvnc

Непрочитанное сообщение SerB » 23 июн 2012, 06:55

Спасибо, за уточнения в терминологии, то о чем Вы сказали я знаю. Но вот практически не могу понять как реализовать подключение этого же XFS к X-серверу на виндосовской машины (подключению нужных мне шрифтов) именно при подключении через java-плагин (реализующий на виндосовской машине Xserver через tightVNC). С подключением линуксовских процессов (клиентов) и отображением информации на нужный X-сервер проблемы нет, за исключением одной, как организовать вывод именно на нужный X-сервер, адрес которого формируется динамически IP-хоста:N+К+1, где N номер последнего сеанса, К - количество подключенных к хосту X:серверов (как локальных так и удаленных). Т.е. если при первом сеансе подключения адрес у X-сервера на моем виндосовском компьютере в интернет браузере был :1, то при следующем будет :6, а это значит что клиенты будут выводить информацию на ранее подключенный X-сервер (:1), т.е. в никуда. Эта проблема интересна еще и тем что требуется вывод информации от линуксовских процессов на несколько X-серверов (минимум 4). И приходится после каждого сеанса подключения к X:серверу определять его адрес ($DISPLAY) и ручками править скрипт, регулирующий вывод информации от процесса на нужные мне сервера. Вот этот ручной труд и хотелось бы автоматизировать.
Относительно шрифтов, мне не удается даже командой xset +fp задать путь к шрифтам на локальной виндосовской машине, что я делаю при использовании X-Win32 или Xming, задавая путь к этому каталогу со шрифтами, расположенному на локальной виндосовской машине в конфигурациях этих приложений. tightVNC (java-плагин браузера) упорно тащит откуда-то 3 типа шрифтов, заданных где-то по умолчанию).

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

Re: настройка Xvnc

Непрочитанное сообщение Olej » 23 июн 2012, 18:20

tundra37 писал(а):X - это самая большая путаница в Unix.
Ну это далеко не так ... даже скорее наоборот: X11 разработан в Массачусетском Технологическом (MIT) ... там плохого не делали ;-) , и X11 сам по себе логичней и стройней, чем, по крайней мере, эклектический, новороченный и "колхозный" Linux.
Вот уж на 20 лет более поздняя придумка VNC, о которой и речь - вот это по логике своей уж действительно достаточно убогое.
tundra37 писал(а):Задумано это было для реализации через Х-терминалы, а кончилось перегруженным сервисами десктопным Линуксом.
Задумано это было для полной независимости GUI от оборудования ... X-терминалы в те годы ещё и не снились.
А то, что именно под Linux в X11 много надобавляли, накорёжили и т.д., так это проблемы Linux (X11 никогда не "затачивался" под Linux + и по возрасту X11 постарше Linux - к моменту разработки X11 Линус Торвальдс ещё только с горшка встал ;-) ).
tundra37 писал(а): Кто собственно отвечает за фонты я точно не скажу, но - вместе с Х-сервером в Линукс крутится сервер фонтов - XFS. В вашем случае вроде и сервер и клиент в Линуксе - значит и фонты настраивются там.
Совершенно не обязательно. Изначально в X11 не было сервера шрифтов. И на сегодня его можно сконфигурировать на работу без XFS.
tundra37 писал(а): Чтобы было понятно опишу реальную ситуацию. Мы работаем из Винды с приложениями в Линукс.
Это если у вас в Windows есть какой-то X-сервер от стороннего производителя (когдато лучшим из подобных был Exeed ... кажется так).
tundra37 писал(а): Если я ошибусь и в переменной окружения задам не свой дисплей, а дисплей соседа IP:0 - мое приложение исправно нарисует окно у соседа, если конечно у него запущен Х-сервер.
Не нарисует. :lol:
По той простой причине, что практически всегда на X-сервере установлен запрет на коннект удалённых X-слиентов (и это при том ещё, если X-серверу вообще сконфигурировано прослушивать TCP/IP на порту 6000+).
Для удалённой работы X-серверу нужно явно разрешить работу от удалённых клиентов, и указать от каких.

И как раз возможность удалённой работы - это совершенно уникальная особенность X11.
Для X11 несколько десятилетий ищут замену... показателен в этом смысле QNX: здесь последовательно сменилось 2 полностью самостоятельных оконных системы: QWindows и Photon, но в полной мере они не дотягивают до функциональности X11, а API Photon - это просто поимённый слепок с API Xlib.

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

Re: настройка Xvnc

Непрочитанное сообщение Olej » 23 июн 2012, 18:28

SerB писал(а):Эта проблема интересна еще и тем что требуется вывод информации от линуксовских процессов на несколько X-серверов (минимум 4).
А вот это врад ли ... как любил говорить боец Сухов ;-) ... по крайней мере средствами самого X11:
- X11 использует TCP соединение

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

[olej@notebook ~]$ cat /etc/services | grep x11
x11             6000/tcp        X               # the X Window System
x11-ssh-offset  6010/tcp                        # SSH X11 forwarding offset
- в отличие от большинства сервисов, которые могут работать и через TCP и через UDP...
- а TCP не допускает каких-либо механизмов широковащения или групповых операций (установленное двухсторонее соединение, ACK подтверждения и т.д.).

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: настройка Xvnc

Непрочитанное сообщение tundra37 » 23 июн 2012, 21:32

SerB писал(а):Относительно шрифтов, мне не удается даже командой xset +fp задать путь к шрифтам на локальной виндосовской машине, что я делаю при использовании X-Win32 или Xming, задавая путь к этому каталогу со шрифтами, расположенному на локальной виндосовской машине в конфигурациях этих приложений. tightVNC (java-плагин браузера) упорно тащит откуда-то 3 типа шрифтов, заданных где-то по умолчанию).
TightVNC показывает то, что нарисовано в памяти(значит на Линукс). Там и надо менять шрифты.

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

Re: настройка Xvnc

Непрочитанное сообщение Olej » 23 июн 2012, 22:31

SerB писал(а): Суть проблемы вот в чем, я подключаюсь к своему серверу (SLES 10.0) через браузер (java plugin, т.е. получается, как клиент tightVNC к встроенному tightVNC серверу) . В результате после подключения в браузере открывается локальный X-сервер, в принципе это нормально, но есть два момента:
tundra37 писал(а):
SerB писал(а):Относительно шрифтов, мне не удается даже командой xset +fp задать путь к шрифтам на локальной виндосовской машине, что я делаю при использовании X-Win32 или Xming, задавая путь к этому каталогу со шрифтами, расположенному на локальной виндосовской машине в конфигурациях этих приложений. tightVNC (java-плагин браузера) упорно тащит откуда-то 3 типа шрифтов, заданных где-то по умолчанию).
TightVNC показывает то, что нарисовано в памяти(значит на Линукс). Там и надо менять шрифты.
Вот и я как-то не пойму о чём это вы толкуете:
- все VNC (я не сталкивался конкретно с реализацией TightVNC) - используют совершенно свой особенный протокол RFB ...
- Virtual Network Computing:
Virtual Network Computing (VNC) — система удалённого доступа к рабочему столу компьютера, использующая протокол RFB (англ. Remote FrameBuffer, удалённый кадровый буфер). Управление осуществляется путём передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через компьютерную сеть.
- к протоколу X11 это не имеет ни малейшего отношения:
По умолчанию RFB использует диапазон TCP-портов с 5900 до 5906. Каждый порт представляет собой соответствующий экран X-сервера (порты с 5900 по 5906 ассоциированы с экранами с :0 по :6). Java-клиенты, доступные во многих реализациях, использующих встроенный web-сервер для этой цели, например, в RealVNC, связаны с экранами таким же образом, но на диапазоне портов с 5800 до 5806. Многие компьютеры под управлением ОС Windows могут использовать лишь один порт из-за отсутствия многопользовательских свойств, присущих UNIX-системам. Для Windows-систем экран по умолчанию — :0, что соответствует порту 5900.

Также существует возможность обратного подключения от сервера к клиенту. В этом случае клиент переводится в слушающий (англ. listening) режим и соединение инициируется сервером на 5500 TCP-порт клиента.
- по ставнению с самим X11 протоколом - это совершенно другой механизм и совершенно другие TCP порты.

P.S. Я достаточно плотно (долгосрочно, интенсивно, в реальном проекте) поработал с другим VNC - VNC : TeamViewer (см. тему VNC : TeamViewer) - не помню, чтобы там были минимальные проблемы с отрисовкой.
Да и откуда могут возникать проблемы, если по логике VNC от должен только тупо отрисовать экран удалённого компьютера на моём локальном мониторе? Никаких трансформаций растрового образа при этом уже не происходит.

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: настройка Xvnc

Непрочитанное сообщение tundra37 » 24 июн 2012, 14:15

Olej писал(а): И как раз возможность удалённой работы - это совершенно уникальная особенность X11.
Для X11 несколько десятилетий ищут замену...
Ну похоже в Линукс ее и не ищут. А вот в Винде появилась. Слабым местом удаленного экрана была "неподдержка" ускоренной графики. И вот свершилось: в 7-ке и далее такая поддержка есть. DirectX не проверял, но думаю свое детище они поддерживают. А вот OpenGL наконец-то стало с нормальной скоростью крутится. VNC конечно хорошо, но оно один экран в Винде поддерживает. А в Линуксе нас больше Х-ы устраивают, т.к. с VNC как раз и начинается чехарда с номерами экранов.

И по теме : номер экрана напрямую связан с используемым портом(хотя могу наврать). Хотя у меня отложились немного другие номера : 5908 - 1 , 5909 - 2 и т.д.
0-й не используется, т.к. он занят родными Х-ами. Вот от этого и надо плясать, наверно. Про много экранов ничего не скажу, но ведь зачем-то существуют номера 0.1 0.2 и т.д. Т.е. на экранах есть подэкраны. И полный номер экрана для локальных Х-ов : 0.0 !!!

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

Re: настройка Xvnc

Непрочитанное сообщение Olej » 24 июн 2012, 22:36

tundra37 писал(а):Про много экранов ничего не скажу, но ведь зачем-то существуют номера 0.1 0.2 и т.д. Т.е. на экранах есть подэкраны. И полный номер экрана для локальных Х-ов : 0.0 !!!
Если вы говорите про X11 (X-протокол), то DISPLAY в его синтаксисе определяется как <IP>:<экземпляр X-сервера>.<display этого сервера в xorg.conf>.

По поводу того, что такое экземпляр X-сервера и как они возникают, то у нас была здесь тема: несколько X11 со своими WM.
Это никак не какой-то "подэкран", это отдельный X-сервер, который отрисовывается в отдельный виртуальный терминал (например Ctrl+Alt+F9).

Но я так и не соображу, какое отношение имеет протокол (и вся технология) X11 (в реализации X11R6 или Xorg) - к VNC и его совершенно другому протоколу RFB (удалённый кадровый буфер).
Тут какая-то путаница происходит.

P.S.
В Windows до достаточно последнего времени вообще не было X-сервера, были только реализации от сторонних изготовителей (и коммерческие и свободные)... т.е. вообще не было средств отрисовки примитивов X11 (не знаю как сейчас, но предполагаю, что так же ;-) ).
X-сервер отрисовывает внутренность окна приложения, без рамок и элементов управления окном (без перемещения по экрану, управления размером, рамок, элементов управления: закрытия, свёртывания-развёртывания ...) - это всё должен отрабатывать оконный менеджер, совершенно другая от X-сервера программа, без которой использование X-сервера ... достаточно бессмысленно (у вас всегда будет оконо без рамки, тупо прижатое к левому верхнему углу дисплея).
VNC - это совершенно другая песня, он не отрисовывает окна приложений (он о них просто ничего не знает и не подозревает), он отрисовывает только образ экрана дисплея целиком (кадровый буфер), независимо от того, кто этот кадровый буфер прорисовал: X11 или встроенная оконная система Windows.

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

Re: настройка Xvnc

Непрочитанное сообщение Olej » 24 июн 2012, 23:01

tundra37 писал(а):
Olej писал(а): И как раз возможность удалённой работы - это совершенно уникальная особенность X11.
Для X11 несколько десятилетий ищут замену...
Ну похоже в Линукс ее и не ищут. А вот в Винде появилась.
Не нужно бы впутывать сюда Винду ;-) - в Винде вообще нет оконной системы :-o
Здесь у каждого приложения обязательно присутствует "главное окно приложения", это окно более первично для приложения, чем даже его программный код, начинающийся с main... Таким образом там не может быть приложения без собственного графического окна (см. Джефри Рихтера, особенно его 2-е издание). Из-за этого "в Винде" были (да и навсегда остануться, хоть частично и смягчены) сложности с реализацией консольного режима.
А раз приложение + окно - это нераздельная пара, то и говорить о какой-то отдельной оконной системе здесь - полная бессмыслица.

Графическая система X11 и GUI в Винде - это принципиально разные вещи, у них отличается философия.
Попробуйте сконфигурировать (собрать) Windows без графической системы :lol:
В UNIX это - запросто, и так работают значительная часть серверов.
Windows вся построена вокруг своей графической системы, а X11 является совершенно пользовательского уровня (адресного пространства) надстройка над UNIX (всё в точности до наоборот).

P.S. Это не очень широко известно, но вся система X11 (X11R6 / Xorg), в своём классическом виде, постороена полностью в пользовательском адресном пространстве - нет никаких модулей ядра, дайвера видеокарт X11 используют запись в адресные регистры из пространства пользователя. Это уже позже, и только в погоне за производительностью, некоторые бранды индустрии видеоадаптеров (NVIDIA + ATI) стали долепливать свои драйвера для X11 с виде модулей ядра, работающих в режиме супервизора (0 кольцо защиты для процессоров x86).

Ответить

Вернуться в «Администрирование Linux»

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

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