Pull to refresh

Linux & Xvfb. Запуск GUI приложений в виртальных иксах, или если нельзя, но очень хочется

Lumber room
Awaiting invitation
Странные же порой попадаются задачи. В мои рабочие обязанности входит администрирование клиентских компьютеров для системы регрессионного тестирования. Если в двух словах, то принцип ее сводиться к многократному запуску на линуксовых клиентах программ с разными входными параметрами и отслеживание изменений в выходных лог файлах.
Все было прекрастно, пока не появилась необходимость запускать GUI приложения. Так как ставить среду рабочего стола — это не спортивный метод, плюс к тому же на некоторых машинах не было даже видеокарт- нужно было искать обходной путь, такой как Xvfb.

В X Window System, Xvfb — это X11 сервер, который выполняет все графические операции в памяти без вывода на экран. С точки зрения клиента он действует так же, как любой другой сервер, обслуживающий запросы и отправки события и ошибки по мере необходимости.
Что ж, приступим:

1. Устанавливаем пакет



node1:~#apt-get install xvfb

Установка Xvfb проблем вызвать не должно. Дальше будет интересней.

2. Теперь запустим



node1:~#Xvfb :1 -screen 0 640x480x24 -fbdir /var/tmp&

Данная команда запустит виртуальный X сервер с виртуальным дисплеем :0. Выбираем необходимое разрешение экрана и глубину цвета, если же нет особой необходмости удалённо смотреть происходящие действия, то эти значение можно уменьшить для экономии ресурсов. В качестве дополнительного параметра можно указать каталог, в котором будет находиться содержание кадрового буфера памяти.

После запуска может вывалиться следующая ошибка:

Fatal server error:
Couldn't add screen 0


Мне помогло корректирование глубины цвета. Глубину в 32 пикселя выставить не получилось, хотя это и не было нужно.

Ну вобщем с настройкой пока все. Перед запуском приложения укажем Х дисплей.

node1:~#export DISPLAY=localhost:1.0

3. А сейчас пощупаем



Запуск программ происходит следующим образом:

node1:~#DISPLAY=localhost:1.0 ./rungui

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

node1:~#x11vnc -display :1 -bg -nopw -listen %ip_of_node% -xkb

Подключиться VNC клиентом можно будет на %ip_of_node% используя порт 5900.

Вот, собственно, и все. have fun!
Tags:
Hubs:
You can’t comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.