Современные информационные технологии /2.Вычислительная техника и программирование

 Мясищев А.А.

Хмельницкий национальный университет, Украина

Один из способов использования устаревших компьютеров для работы с Linux приложениями

Современное развитие программных продуктов требует наличия у компьютеров достаточно большой оперативной памяти (~1Гбайт), производительного центрального процессора (>1,6ГГц), достаточного объема дискового пространства (>80Гбайт). Таких ресурсов требует, например, созданная Microsoft операционная система Windows Vista, а также приложения, которые запускаются под ее управлением. Однако в организациях, в учебных заведениях существует большой парк устаревших компьютеров с процессором Pentium 100, 166, памятью 16-64Мбайт, диском до 1.2Гбайт, видеокартой от 1Мбайт. Как правило, на этих компьютерах успешно работают и работали системы Windows 95, 98 совместно со своими прикладными программами. Однако отсутствие продаж этих программных продуктов, а также жесткая политика Microsoft в области лицензирования поставила вопрос о поиске альтернативных решений. В этой работе рассматривается пример использования свободной к распространению операционной системы  ASPLinux 11.2 с ее пакетами программ в качестве серверной части и устаревших компьютеров, работающих в качестве графических терминалов под управлением Unix FreeBSD. Причем серверной части с памятью в 1Гбайт достаточно для работы ~10 компьютеров-терминалов. Рассмотрим, что из себя представляет графическая подсистема Unix - подобных операционных систем и на что необходимо обратить внимание при настройке серверной графической подсистемы.

X-протокол

Графическая система X-Windows использует Х-протокол для обеспечения сетевого доступа к графическому интерфейсу пользователя. Он ориентирован на операционные системы семейства UNIX. Х-протокол предоставляет управление графической информацией подобно другим альтернативным системам, наиболее известными из которых являются Microsoft Windows и Presentation Manager компании IBM. Главное  отличие Х-протокола от упомянутых схожих разработок заключается в том, что он не ограничивает использование графического интерфейса только локальным компьютером. Х-протокол изначально разрабатывался для предоставления доступа удаленным сетевым клиентам в архитектуре клиент-сервер. Графический интерфейс пользователя согласно Х-протоколу как бы разделяется на две части: одна часть уровня приложения, которую принято называть Х-клиентом, и вторая часть уровня сервера – Х-сервер. Поэтому, приложения, которые используют в своей работе Х-протокол, могут работать по такой схеме: Х-клиент запускается на удаленной машине, а графическая информация передается локальному Х-серверу, который, в свою очередь, и отображает ее пользователю.

Архитектура X-Windows

Сам по себе Х-сервер не имеет функций для работы с пользователем. В его состав не входят ни рабочий стол, ни панель задач, ни главное меню. Все эти функции реализованы в оконном менеджере (например, KDE, Gnome, IceWM, WMW и т.д.), который в свою очередь взаимодействует с менеджером дисплея (например, xdm, gdm или kdm). И менеджер окон и менеджер дисплея являются Х-клиентами, которые обеспечивают необходимую для пользователя функциональность компьютера. Таким образом, современная система Х-Windows представляет из себя многослойную структуру с большим количеством программ-посредников (рис.1).

Рис.1.

X-Windows система не  является частью операционной системы. Она  запускается как приложение. Такой подход изолирует интерфейс пользователя от ядра операционной системы и тем самым повышает его надежность.

X-сервер и X-клиент

Программное обеспечение, которое управляет монитором, “мышкой” и клавиатурой, принято называть Х-сервером. Приложения, результат работы которых отображается Х-сервером, называются Х-клиентами. Х-клиент отсылает запросы Х-серверу, а Х-сервер, который может одновременно работать с несколькими Х-клиентами, отвечает Х-клиенту нужной информацией, например, пользовательским вводом или возникшими ошибками.

Х-сервер

Особенностью Х-сервера является то, что он всегда запускается локально, то есть на том компьютере (терминале), на котором работает пользователь. В функции Х-сервера входит:

1.Отображение на экране визуальной информации;

2.Ответы на информационные запросы пользователя;

3.Реагирование на ошибки при выполнении запросов;

4.Управление клавиатурой, “мышкой” и монитором как локально, так и по сети;

5.Создание, управление и удаление окон (отображение в окнах графической информации).

Х-сервер может отображать окна различных Х-клиентов, в том числе и запущенных на разных компьютерах.

Х-клиент

Х-клиент работает в тесной взаимосвязи с графической библиотекой (например, Xlib) для обработки запросов Х-протокола. Наиболее распространенными его функциями являются:

1.Отправка сообщений Х-серверу (например, запрос на рисование линии на экране);

2.Обработка событий, поступающих от Х-сервера (например, события от “мыши” и клавиатуры);

3.Получение ошибок от Х-сервера (например, ошибка доступа к удаленному серверу).

Х-клиент и Х-сервер взаимодействуют посредством Х-протокола, которому свойственны такие составляющие компоненты, как: запросы, ответы, события и сообщения об ошибках.

Настройка серверной части системы X-Windows.

         Считаем, что в качестве компьютера, предоставляющего свои ресурсы (графические приложения) маломощным компьютерам, которые к нему подключены по сети, используется компьютер с процессором Pentium-IV, объемом оперативной памяти ~512-1024Мбайт и жестким диском ~ 40Гбайт. На этом компьютере установлена операционная система ASPLinux 11.2  с поддержкой графического режима (X Windows). Рассмотрим, что необходимо сделать, чтобы можно было к этому компьютеру подключить удаленные устаревшие компьютеры, которые могли отображать у себя запущенные на этом компьютере приложения (выступали в качестве Х терминалов).

Настройка inittab

Ручную настройку сервера целесообразно начать с изучения файла /etc/inittab. Глобально в нем менять ничего не нужно, достаточно лишь удостовериться, что система после старта переходит в графический режим. Это условие крайне важно, так как именно к запущенному Х-серверу будут подключаться клиенты Х-терминалов. У операционных систем, основанных на RedHat Linux (ASPLinux), таким режимом является runlevel=5. О чем в файле /etc/inittab должна свидетельствовать запись “id:5:initdefault:”. Также именно на 5-м уровне должен запускаться Х-сервер следующей строкой:

x:5:respawn:/etc/X11/prefdm -nodaemon

Менеджер дисплея и XDMCP

Сам по себе Х-сервер мало функционален для конечного пользователя. Поэтому для выполнения функций аутентификации, запуска графических сессий и управления экранами в рамках проекта X Window System был разработан менеджер дисплея – XMD (X Display Manager – менеджер Х дисплея). Данный программный продукт поддерживает также работу с протоколом XDMCP (X Display Manager Control Protocol – протокол управления менеджером Х дисплея) – специальным протоколом управления менеджером дисплея. Стандарт XDMCP позволяет использовать менеджер дисплея для подключения к Х-серверу удаленных Х-клиентов, обеспечивая распределенность выполнения графических приложений. Конфигурационным файлом, контролирующим применение протокола XDMCP, является /etc/X11/xdm/Xaccess, и в нем по умолчанию запрещается подключение к Х-серверу удаленным пользователям.

Рассмотрим поэтапно процесс настройки Xorg для работы в качестве сервера Х-терминалов. Х-терминалы могут работать с любым менеджером дисплея (xdm, kdm, gdm) и любым оконным менеджером (KDE, Gnome, IceWM, mwm и т.п.). Заметим, что в качестве менеджера дисплея будет использован xdm. Опыт показал, что он имеет более высокую скорость обслуживания Х - терминалов и запускается на Х – терминалах, у которых Х – сервера настроены на 256 цветов. Это важно, когда удаленный компьютер имеет скромные ресурсы.

Настройка удаленного доступа к Х-серверу (Xaccess)

По умолчанию предоставлять доступ к Х-серверу извне не требуется. Но в случае построения сети Х-терминалов нам необходимо именно это. Поэтому в файле /etc/X11/xdm/Xaccess необходимо раскоментировать строчку:

*                                       #any host can get a login window

Следует заметить, что файл /etc/X11/xdm/Xaccess используется только менеджером дисплея XDM, если последний является менеджером дисплея по умолчанию. Для менеджеров дисплеев gdm и kdm используются другие файлы.

Выбор менеджера дисплея по умолчанию

Для работы Х-терминалов подойдет любой из описанных выше менеджеров дисплея (xdm, kdm или gdm). Для того, чтобы правильно выбрать менеджер дисплея по умолчанию, следует посмотреть как устроен сценарий его запуска, который находится в файле /etc/X11/prefdm. Ниже представлены строки, которые отвечают за выбор менеджера дисплея:

preferred=

if [ -f /etc/sysconfig/desktop ]; then

        . /etc/sysconfig/desktop

        if [ "$DISPLAYMANAGER" = GNOME ]; then

                preferred=gdm

        elif [ "$DISPLAYMANAGER" = KDE ]; then

                preferred=kdm

        elif [ "$DISPLAYMANAGER" = XDM ]; then

                preferred=xdm

        fi

fi

Как видно из фрагмента этого файла, сценарий проверяет наличие на диске файла /etc/sysconfig/desktop и если такой файл существует, то он включается в текст данного сценария. Далее проверяется значение переменной DISPLAYMANAGER и сравнивается с одним из значений: GNOME, KDE и XDM. Отсюда следует, что для установления менеджера дисплея по умолчанию достаточно создать файл /etc/sysconfig/desktop, который будет содержать одну единственную строку, в нашем случае, DISPLAYMANAGER=XDM. Создать этот файл можно простой командой:

# echo  'DISPLAYMANAGER=XDM' > /etc/sysconfig/desktop

Проблемы менеджера дисплея

Когда Х-сервер на Х-терминале успешно запустился, он пытается соединиться с менеджером дисплея сервера для получения графического приглашения ввода имени пользователя и пароля. Если с настройками менеджера дисплея что-то не так, то пользователь Х-терминала на сером фоне экрана обнаружит большой Х-курсор “мышки”. Это самая распространенная проблема, которая встречается при настройке удаленного подключения к менеджеру дисплея, используя протокол XDMCP. Для выявления причин такого поведения Х-терминала можно  проверить запущена ли программа менеджера дисплея. С этой целью на сервере введем команду:

# netstat -ap | grep xdm

udp        0      0 *:xdmcp        *:*         912/gdm-binary

Как видно, с протоколом XDMCP действительно связан процесс с идентификатором 912 и именем программного файла gdm-binary. В противном случае сервер просто не обрабатывает запросы по протоколу XDMCP или менеджер дисплея не запущен.

Если программа менеджера дисплея работает, а подключение к ней Х-терминалов все равно не происходит, то причину ошибки следует искать в ее настройках. Так, в некоторых случаях, менеджер дисплея может попросту игнорировать запросы от удаленных компьютеров.

В операционной системе Linux используются в основном 3 менеджера дисплея: XDM, GDM и KDM. XDM – это старейший представитель подобных программ, включается практически во все дистрибутивы X-Windows. GDM и KDM - это соответственно менеджеры дисплеев таких оконных менеджеров как Gnome и KDE. Они отличаются от XDM более широкими возможностями по настройке экрана графического входа в систему. В зависимости от того, какой используется менеджер дисплея, проверяем соответствующие ему файлы конфигурации.

Для xdm файле /etc/X11/xdm/xdm-config не должно быть такой строки:

DisplayManager.requestPort:     0

Иначе удаленные XDMCP-запросы на 177 порту будут попросту игнорироваться.

И, как указано выше, в файле /etc/X11/xdm/Xaccess должна присутствовать такая строка:

*            #any host can get a login window

Эта строка не должна быть закомментирована символом “#”.

Выбор оконного менеджера по умолчанию

В ASP Linux 11.2 в файле /etc/X11/xinit/Xclients для выбора оконного менеджера используются строки:

 

GSESSION="$(which mwm 2>/dev/null)"

STARTKDE="$(which startkde 2>/dev/null)"

# check to see if the user has a preferred desktop

PREFERRED=

if [ -f /etc/sysconfig/desktop ]; then

    . /etc/sysconfig/desktop

    if [ "$DESKTOP" = "MWM" ]; then

        PREFERRED="$GSESSION"

    elif [ "$DESKTOP" = "KDE" ]; then

        PREFERRED="$STARTKDE"

    fi

fi

if [ -n "$PREFERRED" ]; then

    exec "$PREFERRED"

fi

Здесь ищется файл /etc/sysconfig/desktop и если в нем присутствует строка

DESKTOP=KDE

то выбирается оконный менеджер KDE. Таким способом можно загружать любой оконный менеджер. Таким образом, для запуска оконного менеджера KDE файл /etc/sysconfig/desktop должен содержать следующее:

DISPLAYMANAGER=XDM

DESKTOP=KDE

На этом настройка серверной части в простом случае заканчивается.

Настройка клиентской части

В этой работе использоволись старые машины с процессором Pentium 100, 166, объемом оперативной памяти 16 и 32 Мбайт, видеопамяти 1МБайт (видеокарта S3 Trio64), жестким диском объемом около 600МБайт. Сетевая карта использовалась любая 10МБит-ная, которая поддерживается операционной системой. В качестве операционной системы был установлен Unix FreeBSD 2.2.8-RELEASE, Unix FreeBSD 6.0-RELEASE. Причем на более старые машины ставилась более старая версия, потому что невозможно было поставить новую версию, а там, где это было возможно, устанавливалась новая версия. При установки Unix FreeBSD с CD устройства выбиралась опция для установки также и X Windows. Настройка X сервера проводилась с помощью конфигурационной программы в графическом режиме. Как правило, для известных видеокарт настройка проводилась без проблем. После загрузки операционной системы, в текстовом режиме набиралась команда:

X -query komp.tup

По этой команде на клиентском компьютере запускался Х сервер, который удаленно подключался к менеджеру управления дисплеем (xdm) на другом компьютере с именем komp.tup. На  рабочей станции появлялся вход приглашения в систему и инициализировалась X-сессия. При работе с   xdm возможна настройка локального Х сервера на 256 цветов. Однако при работе с менеджерами kdm и gdm локальный Х сервер должен быть сконфигурирован на 65536 цветов, иначе подключение клиентского компьютера к удаленному не произойдет. Необходимо помнить, что при работе с 256 цветами многие программные продукты запускаться не будут (FireFox, Mozilla, GIMP и др.).

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

Выполнить на рабочей станции команду  startx. Запустится Х-сервер, оконный  менеджер twm с несколькими xterm (сценарий запуска программ в Unix FreeBSD 5.1 RELEASE представлен в файле /usr/X11R6/lib/X11/xinit/xinitrc). В одном из них следует ввести команды

#xhost   +172.20.0.2   #(ip адрес или имя сервера)

#telnet     172.20.0.2   #(ip адрес или имя сервера)

После подключения к серверу по  telnet вводим на сервере команду

$export   DISPLAY=172.20.0.150:0.0  #(172.20.0.150 — ip адрес станции)

$konqueror

На рабочей станции отобразится браузер, который запустится на сервере 172.20.0.2

         Если рабочая станция и сервер поддерживают протокол ssh, то на рабочей станции после команды startx достаточно ввести команду

#ssh   -X  -l  alex  172.20.0.2

для регистрации на сервере 172.20.0.150 под логином alex и включения X11 forwarding. Далее, как и в предыдущем случае можно запускать на сервере любое Х приложение, которое будет отображаться на клиентском Х-терминале:

$soffice -write

На сервере запустится OpenOffice, который  отобрзиться на нашем Х-терминале.

 

Литература:

1.Мини-HOWTO: XDM и X-терминалы Kevin Taylor. http://www.linuxcenter.ru/lib/articles/system/XDM-Xterm.phtml#XDM

2.Х-терминал или вторая жизнь Вашего ПК.Сеник Н. http://www.senyk.poltava.ua/projs/books/XTerms/