201
ввести login и password для открытия сессии и входа в нее:
•до мая 2011 года, ОС Ubuntu и ее клоны использовали в качестве дисплейного менеджера gdm;
•с мая 2011 года, дисплейным меннеджером становится lightdm.
Замечание
Хотя X-сервер способен работать в сети, по умолчанию он запускается с опцией -nolisten tcp, запрещающей ему прослушивать сеть.
Чтобы разрешить Х11 работать в сети, неоходимо:
•открыть файл /etc/lightdm/lightdm.conf;
•добавить в секцию [SeatDefaults] строку: xserver-allow-tcp=true
•создать еще одну секцию с командой:
[XDMCPServer] enabled=true
•перезапустить оконный менеджер командой: sudo restart lightdm
•проверить новый запуск сервера Х11 в диспетчере задач, как показано на рисунке 6.3.
Диспечер задач запускается из меню: «Главное меню/Система,Диспетчер задач».
Вызвав диспетчер задач, необходимо потребовать, чтобы он отображал все процессы.
Рисунок 6.3 — Проверка запуска сервера Х11 в диспетчере задач
202
В используемом дистрибутиве ОС УПК АСУ, все необходимые настройки Х11 уже проведены, поэтому Х-сервер уже готов к работе в сети.
Как отмечено выше, на ЭВМ может быть запущено несколько Х-серверов, хотя обычно используется только один.
Обычно, для обеспечения сетевого соединения, Х-сервер прослушивает некоторый порт.
По умолчанию, прослушивается порт с номером 6000.
Все графические приложения ОС UNIX/Linux выводят изображение на Х-сервер, который определяется адресом:
<IP-адрес Х-сервера>:<номер дисплея>.<номер экрана дисплея>
Чтобы прикладные программы знали на каком компьютере и на каком дисплее находится Х-сервер, используется:
•переменная окружения DISPLAY;
•аргумент программы с ключем: -display.
Втаблице 6.1, приведены примеры некоторых возможных значений переменной DISPLAY.
Замечание
Таблица 6.1 приведена только для примера.
Таблица 6.1 - Варианты задания переменной DISPLAY
Значение |
Номер порта |
Пояснение |
переменной |
соединения |
|
DISPLAY |
|
|
:0 |
-- |
Х-сервер на локальном компютере, дисплей №0, экран №0 |
:1.0 |
-- |
Х-сервер на локальном компютере, дисплей №1, экран №0 |
asu.tusur.ru:4 |
6004 |
Х-сервер на компютере asu.tusur.ru, дисплей №4, экран №0, номер |
|
|
UDP-порта - 6004 |
192.168.1.17:2 |
6002 |
Х-сервер на компютере 192.168.1.17, дисплей №2, экран №0, номер |
|
|
UDP-порта - 6002 |
Чтобы, после старта ОС УПК АСУ, проверить адрес вывода Х-сервера, следует воспользоваться командой echo, как показано на рисунке 6.4.
Замечание
X-сервер отображает не все программы, пытающиеся к нему подключится, а только те, которым разрешен доступ.
203
Рисунок 6.4 — Проверка текущего адреса вывода Х-сервера
Чтобы разрешить Х-серверу подключение программ, используется утилита xhost. Если запустить xhost без параметров, как показано на рисунке 6.5, то мы получим сообщение, что только авторизованный пользователь может быть подключен.
Рисунок 6.5 — Разрешение доступа с хоста cluster.asu.tusur.ru
Если нужно разрешить подключение с компьютера по извесному адресу, например, cluster.asu.tusur.ru, то нужно использовать команду:
sudo xhost +cluster.asu.tusur.ru
где символы '+' и '-' означают разрешение или запрет подключения.
После выполнения этой команды, мы получим сообщение показанное на том же рисунке 6.5, что доступ с хоста cluster.asu.tusur.ru теперь разрешен.
Замечание
Если вы запускаете множество программ, отображаемых на удаленном компьютере, следует значение переменной DISPLAY прописать в файле .bashtc
Операционные системы Unix/Linux обладают развитыми средствами IPC низкого уровня: сокеты, каналы, семафоры, сегменты разделяемой памяти, передача сообщений. Эти средства ОС были изучены на предыдущих занятиях.
D-Bus – еще одна система межпроцессного взаимодействия (Interprocess Communication или IPC).
204
Суть проблемы состоит в том, что приложения одного рабочего стола должны тесно взаимодействовать между собой. Для этой цели применялись разные разработки, например, DCOP в KDE или CORBA/Bonobo в GNOME.
Вмарте 2000 года, freedesktop.org - инициативная группа по стандартизации различных графических сред пользователя для операционных систем POSIX, взялась за разработку стандартов (рекомендаций) таких сред.
Вчастности, эта группа определяет такие свойства, как формат ярлыков, взаимо-
действие элементов рабочего стола при перетаскивании его элементов и другие. Требовалось также организовать обмен сообщениями между приложениями двух разных сред.
Более того, freedesktop.org участвует в разработке ПО, например, полностью разрабатывает графическую пользовательскую среду Enlightenment.
Раньше, эта группа называлась «X Desktop Group» и, до сих пор, использует аббревиатуру XDG.
Для решения перечисленных задач и был создан проект D-Bus. Реализация оказалась удачной и было принято решение проект KDE 4 перевести на использование D-Bus. Затем это решение распространилось и на другие проекты.
Таким образом, D-Bus - это система межпроцессного взаимодействия, предоставляющая приложениям несколько шин для передачи сообщений и обеспечивающая беспроблемную связь десктопных приложений. Поддерживается не только широковещательная рассылка сообщений (сигналов), но и удаленный вызов методов.
6.5.1Основные понятия шины D-Bus:
•Системная шина (System bus) — данная шина создается при старте сервера
D-Bus. К ней шине подключены системные сервисы: HAL, NetworkManager, bluez, WPA Supplicant и другие. На этой шине работают сервисы, которые нельзя отнести к какой-то определенной пользовательской сессии, и которые относятся к системе в целом.
•Сессионная шина (Session bus) — данная шина создается на каждый вход
(login) пользователя в систему. К данной шине подключаются приложения авторизованного пользователя и через нее проходит общение программ запущенных в данной рабочей сессии пользователя.
•Имя на шине (Bus name), - каждая программа, подключенная к шине, полу-
чает свое уникальное имя, которое начинается с двоеточия (":") и представлено двумя числами, разделенными точками. Например, «:1.5».
•Имя сервиса (Service name). В D-Bus — приложение может взять несколько
дополнительных имен, чтобы другие программы смогли с ними связываться. Имя сервиса представляет собой набор из символов, разделенных точками ("."). Пример: сервис имеет реальное имя ":1.5", и символьное представление
-"org.freedesktop.NetworkManager". Мы можем подсоединится и к ":1.5" и к "org.freedesktop.NetworkManager" - это один и тот же сервис. Создавать или не создавать такое представление: каждый клиент решает самостоятельно.
•Путь к объекту (Object path) - представляет собой путь к объекту внутри
адресуемого сервиса: "/org/freedesktop/NetworkManager/Device/eth0". Один сервис может обслуживать несколько объектов.
205
•Интерфейс (Interface) — каждый объект предоставляет доступ к некоторому
набору методов и сигналов, который называется интерфейсом. При этом, каждый объект может предоставлять один или множество разных интерфейсов: "org.freedesktop.NetworkManager.Device.Wireless".
•Метод (Method) — некоторое действие, которое может производить объект в
данной программе на данном интерфейсе. Аналогично функциям с языке Си, метод может вернуть: набор некоторых данных, код ошибки, либо может вообще не возвращать данных (void).
•Сигнал (Signal) — некоторое сообщение, которое распространяется среди
всех программ, подписанных на этот сигнал на этом интерфейсе данного объекта данной программы. Сигналы могут содержать набор данных.
•Сообщение (Message) — каждая передача данных на шине представляется в
виде сообщений. Они могут быть 4-х типов: вызовы методов, сигналы, результаты методов, ошибки.
•Прокси-объект (Proxy object) - объект одного из языков программирования:
C++, Python, Java и другие, вызовы методов которого проецируются на вызовы методов D-Bus.
Вобщем случае, взаимодействие между процессами, отображается схемой, показанной на рисунке 6.6. За более подробной информацией, следует обратиться к сайту: http://www.freedesktop.org/wiki/Software/dbus/
Рисунок 6.6 — Диаграмма взаимодействия процессов через шину D-Bus