Библиотека сайта rus-linux.net
автор Guido Socher (homepage) Об авторе: Guido любит Линукс не только из-за того, что ему интересно разбираться в том, как работают операционные системы, но так же из-за людей, которые участвуют в его создании Перевод на Русский: Вася Леушин <basileus(at)newmail.ru> Содержание: |
Запуск удаленных приложений в Х11
Резюме:
Многие пользователи при знакомстве с Линуксом думают, что его графический рабочий стол это просто еще одна " Windows" в которой можно запускать приложения в отдельных окнах. Некоторые, конечно, замечают, что можно иметь несколько рабочих столов, но все равно им кажется, что это Windows. X Window System (X11) это что-то гораздо большее! Это сетевая оконная система. Мы увидим, какие новые возможности она нам предлагает.
Общее понятие дисплея
Каждое графическое приложение X Window при запуске считывает переменную окружения DISPLAY, что бы выяснить на какой компьютерный экран посылать графические данные. Это, вместе с сетевыми возможностями системы X Window делает возможным удаленный запуск графических приложений. То есть вы используете ресурсы процессора одной машины при работе с приложением на другой. Весь GUI (графический интерфейс пользователя) появляется на той машине, с которой вы им управляете. Вы даже не замечаете, что используете два компьютера. Конечно, определенную роль здесь играет скорость передачи данных, но нормальной 10-мегабитной локальной сети вполне достаточно.
Для чего это вам?
Существует множество сетевых графических приложений.
Компании используют их для управления оборудованием находящимся может быть
за тысячи километров, и вы можете использовать такие же приложения так,
как если бы они были на вашем компьютере.
Допустим, у вас есть два компьютера:
одна быстрая гигагерцевая машина и еще старенький Pentium-133 - вы вполне
сможете оценить скорость вашей новой машины, даже не садясь за нее. Возможно,
ваша сестра заняла быстрый компьютер - но вы все равно пользуете его.
Как это работает?
Все
приложения X Window (такие как например Gimp, Xterm, Konquerer, Netscape
и т. д.) в действительности являются сетевыми клиентами, которые присоединяются
к X-серверу. В задачу X-сервера входят: взаимодействие с графическим аппаратным
обеспечением, рисование картинок на вашем экране, считывание данных с мышки
и клавиатуры. Программы-клиенты (gimp, netscape) посылают серверу указания
о том, как рисовать рамки и кнопки. Взамен они принимают от сервера команды
с мышки и клавиатуры. Само собой разумеется, что потребуется аутентификация,
иначе кто угодно может испортить чей-нибудь экран. Существуют две программы
для управления доступом:
- xhost: используя эту программу, вы можете допустить любого пользователя
с определенной машины передавать графику на ваш дисплей. Например: Вы работаете
на машине с именем philosophus. Что бы дать доступ на ваш дисплей любой программе
с хоста movietux вам нужно набрать команду:
xhost +movietux
Это должно быть набрано в оболочке philosophus'а
- xauth: Это более сложная программа, основанная на cookie. С ее помощью вы можете предоставлять доступ определенным пользователям, тем самым эта программа обладает более высоким уровнем безопасности, чем xhost. Аутентификация использует cookie из файла .Xauthority в домашней директории пользователя. Доступ дается только если удаленная машина содержит нужный cookie в этом файле. Что бы скопировать этот cookie с вашей машины (philosophus) на хост с которого вы хотите запускать программу (movietux), вы можете использовать один из следующих методов:
xauth extract - philosophus:0.0 | ssh movietux
/usr/X11R6/bin/xauth merge
или
scp ~/.Xauthority movietux:
При запуске программы-клиента происходит следующее:
- Клиент проверяет переменную DISPLAY для поиска сервера или пытается подключиться к серверу на локальном хосте.
- Сервер проверяет, имеет ли клиент допуск к передаче "картинок" к нему. Если имеет - тогда сервер рисует графику.
bash:export
DISPLAY=hostname:displaynumber.screennumber
tcsh:setenv DISPLAY
hostname:displaynumber.screennumber
export DISPLAY=philosophus:0.0
Запуск удаленного приложения
А теперь от теории перейдем к практике и проверим, как это все работает. Вы снова сидите за компьютером philosophus и хотите запустить что-нибудь с movietux- Сообщите вашему X-серверу, что клиенты с movietux имеют допуск к рисованию картинок на вашем экране:
xhost +movietux - Заходите на удаленный хост movietux:
slogin -l username movietux - Теперь вы вошли на movietux, и все ваши команды исполняются на нем
- export DISPLAY=philosophus:0.0
- Запускайте программу напр.
netscape &
Круто, не так ли?
Перенос дисплея на удаленный хост
Хотя запускать приложения удаленно это так просто, все же бывает нужно набрать еще кое-какие команды для установки DISPLAY (все это можно автоматизировать).- Если вы используете ssh для входа на удаленный хост, тогда переменная DISPLAY устанавливается автоматически. Существуют так же и другие программы поддерживающие DISPLAY, но ssh наиболее распространенная.
- Если же вы используете slogin или другие команды, тогда на удаленный хост вы можете установить следующие скрипты:
Для tcsh:# перенос дисплея на удаленный логин:
этот скрипт получает имя удаленного хоста из команды "who -ml". Команда возвращает что-то вроде
# поместить его в свой файл ~/.login
set whoami=`who -ml`
set remhost=`expr "$whoami" : '.*(\(.*\))'`
if ( "$remhost" != "" ) then
setenv DISPLAY "$remhost":0.0
endif>who -ml
если вы используете bash вам нужен такой скрипт:
movietux!guido pts/3 Oct 26 21:55 (philosophus.tux.org)# перенос дисплея на удаленный логин:
# поместить его в свой файл ~/.bash_profile
whoami=`who -ml`
remhost=`expr "$whoami" : '.*(\(.*\))'`
if [ -n "$remhost" ]; then
DISPLAY="$remhost":0.0
export DISPLAY
fiOpenGL
В то время как сетевые возможности X Window System очень хороши, графика работает несколько медленнее из-за того, что вы пересылаете данные через сетевой протокол. Обычно вы не замечаете разницы, но существуют приложения, такие как быстрые игры с насыщенной графикой, для которых скорость очень важна. Эти игры обычно основаны на библиотеках типа OpenGL. Эти библиотеки предоставляют непосредственный доступ к графическому аппаратному обеспечению. Никаких сетей. Это быстрые программы, но вы не сможете запускать их удаленно.Заключение
С X11 использовать мощность вашей сети очень легко. Вы можете работать с удаленными приложениями так же как с локальными. Единственная разница в том, что вы видите те файлы и домашнюю директорию, которые находятся на удаленном хосте. Однако с установленными NFS и NIS вы сможете скрыть и это небольшое отличие. Вы сможете использовать всю мощность процессора самых быстрых машин в ваших сети, и ни о чем не беспокоиться.Ссылки
X11 system, x.org
xfree86.org система X11 используемая с Linux