Linux & Xvfb. Запуск GUI приложений в виртальных иксах, или если нельзя, но очень хочется
Invite pending
Странные же порой попадаются задачи. В мои рабочие обязанности входит администрирование клиентских компьютеров для системы регрессионного тестирования. Если в двух словах, то принцип ее сводиться к многократному запуску на линуксовых клиентах программ с разными входными параметрами и отслеживание изменений в выходных лог файлах.
Все было прекрастно, пока не появилась необходимость запускать GUI приложения. Так как ставить среду рабочего стола — это не спортивный метод, плюс к тому же на некоторых машинах не было даже видеокарт- нужно было искать обходной путь, такой как Xvfb.
В X Window System, Xvfb — это X11 сервер, который выполняет все графические операции в памяти без вывода на экран. С точки зрения клиента он действует так же, как любой другой сервер, обслуживающий запросы и отправки события и ошибки по мере необходимости.
Что ж, приступим:
Установка Xvfb проблем вызвать не должно. Дальше будет интересней.
Данная команда запустит виртуальный X сервер с виртуальным дисплеем :0. Выбираем необходимое разрешение экрана и глубину цвета, если же нет особой необходмости удалённо смотреть происходящие действия, то эти значение можно уменьшить для экономии ресурсов. В качестве дополнительного параметра можно указать каталог, в котором будет находиться содержание кадрового буфера памяти.
После запуска может вывалиться следующая ошибка:
Мне помогло корректирование глубины цвета. Глубину в 32 пикселя выставить не получилось, хотя это и не было нужно.
Ну вобщем с настройкой пока все. Перед запуском приложения укажем Х дисплей.
Запуск программ происходит следующим образом:
Далее программа отрабатывает свои действия и складывает результат в лог файл. Просто и удобно.
Если прикрутить VNC, то можно даже подсмотреть что же там творится.
Подключиться VNC клиентом можно будет на %ip_of_node% используя порт 5900.
Вот, собственно, и все. have fun!
Все было прекрастно, пока не появилась необходимость запускать 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!