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

Странные же порой попадаются задачи. В мои рабочие обязанности входит администрирование клиентских компьютеров для системы регрессионного тестирования. Если в двух словах, то принцип ее сводиться к многократному запуску на линуксовых клиентах программ с разными входными параметрами и отслеживание изменений в выходных лог файлах.
Все было прекрастно, пока не появилась необходимость запускать 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:
Linux xvfb X11 VNC

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.