Xvfb linux что это

Вывод графики через виртуальный дисплей Xvfb

Xvfb (X virtual framebuffer) – виртуальный дисплейный сервер, позволяет выполнять графические операции в памяти без какого-либо вывода на физический дисплей. Преимущества виртуального дисплея в том, что он не требует установки графического окружения, унифицирует системы, не требует авторизации пользователя в ОС и доступа к его X-сессии.

sudo apt-get install xvfb

  1. Сохраните содержимое листинга ниже в файл Foresight -xvfb перед настройкой запуска Xvfb в качестве сервиса на дисплее под номером 987 (важно, чтобы значение dpi было установлено 96):

### BEGIN INIT INFO

# Required-Start: $local_fs $remote_fs $network $syslog $named

# Required-Stop: $local_fs $remote_fs $network $syslog $named

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Start/stop xvfb server for Foresight Analytics Platform

XVFBARGS=»:987 -screen 0 1152x864x24 -ac -dpi 96 +extension GLX +render -noreset»

echo -n «Starting virtual X frame buffer: Xvfb»

start-stop-daemon —start —quiet —pidfile $PIDFILE —make-pidfile —background —exec $XVFB — $XVFBARGS

echo -n «Stopping virtual X frame buffer: Xvfb»

start-stop-daemon —stop —quiet —pidfile $PIDFILE

echo «Usage: /etc/init.d/ Foresight -xvfb «

  1. Скопируйте файл foresight-xvfb в каталог /etc/init.d/, сделайте его исполняемым:

sudo chmod +x /etc/init.d/ Foresight -xvfb

  1. Добавьте сервис в автозапуск при загрузке системы:

sudo update-rc.d Foresight -xvfb defaults

  1. В файле настроек переменных окружения Apache HTTP Server необходимо указать:
  1. Запустите сервис Foresight -xvfb:

sudo service Foresight -xvfb start

Для применения настроек потребуется перезапуск BI-сервера.

  1. Установить пакет xorg-x11-server-Xvfb:

sudo yum install xorg-x11-server-Xvfb

  1. Добавить init-скрипт по пути /etc/init.d/ Foresight -xvfb с содержимым (важно, чтобы значение dpi было установлено 96):

# /etc/rc.d/init.d/ Foresight -xvfb

# chkconfig: 345 85 28

# description: Start/stop xvfb server for Foresight Analytics Platform

# pidfile: /var/run/ Foresight -xvfb.pid

LOCKFILE=/var/lock/subsys/ Foresight -xvfb

PIDFILE=/var/run/ Foresight -xvfb.pid

XVFBARGS=»:987 -screen 0 1152x864x24 -ac -dpi 96 +extension GLX +render -noreset»

[ -x $XVFB ] || exit 5

echo -n «Starting virtual X frame buffer: Xvfb»

PID=`pidofproc -p $PIDFILE foresight-xvfb`

if [[ (-z $PID) || ($PID -eq 0) ]]; then

$XVFB $XVFBARGS & echo $! > $PIDFILE

[ $RETVAL -eq 0 ] && touch $LOCKFILE

echo -n «Stopping virtual X frame buffer: Xvfb»

killproc -p $PIDFILE $XVFB

[ $RETVAL -eq 0 ] && rm -f $LOCKFILE

status -p $PIDFILE $XVFB

Приоритет загрузки Foresight -xvfb должен быть выше приоритета httpd (число меньше). Для этого нужно сравнить второе число в комментариях скрипта # chkconfig: 345 85 28 и скрипта httpd.

  1. Сделайте init-скрипт /etc/init.d/ Foresight -xvfb исполняемым:
Читайте также:  Подлинность этой копии windows не прошла проверку как убрать

sudo chmod +x /etc/init.d/ Foresight -xvfb

  1. Экспортируйте переменную DISPLAY в «/etc/sysconfig/httpd» с номером дисплея, который указан в скрипте в переменной XVFBARGS:
  1. Добавьте в автозагрузку сервис Foresight -xvfb:

sudo chkconfig —add Foresight -xvfb

sudo chkconfig Foresight -xvfb on

  1. Запустите сервис Foresight -xvfb:

sudo service Foresight -xvfb start

Для применения настроек потребуется перезапуск BI-сервера.

Если в ОС используется система инициализации, отличная от SysV, то Xvfb как сервис также можно настроить следующим образом:

Создайте файл задачи /etc/init/foresight-xvfb.conf с содержимым:

# xvfb — X Virtual Frame Buffer

description «X Virtual Frame Buffer»

start on runlevel [2345]
script
Xvfb :987 -screen 0 1152x864x24 -ac -dpi 96 +extension GLX +render -noreset
end script

Запустите задачу следующей командой:

sudo start foresight-xvfb

  1. Создайте файл сервиса /etc/systemd/system/foresight-xvfb.service с содержимым:

[Unit]
Description=X Virtual Frame Buffer
Before=httpd.target

[Service]
ExecStart=/usr/bin/Xvfb :987 -screen 0 1152x864x24 -ac -dpi 96 +extension GLX +render -noreset
Type=simple
PIDFile=/var/run/foresight-xvfb.pid

  1. Добавьте в автозагрузку foresight-xvfb и запустите сервис:

sudo systemctl daemon-reload
sudo systemctl enable foresight-xvfb
sudo systemctl start foresight-xvfb

Источник

Xvfb — Xvfb

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

Альтернативой Xvfb является Xorg с фиктивными устройствами . Xvnc также может создавать виртуальный дисплей.

В 2016 году планировалось заменить Xvfb на xf86-video-dummy в X.org 7.8.

СОДЕРЖАНИЕ

Сценарии использования

Xvfb в основном используется для тестирования:

  1. Поскольку он использует общий код с реальным X-сервером, его можно использовать для тестирования частей кода, не связанных с конкретным оборудованием.
  2. Его можно использовать для тестирования клиентов в различных условиях, для которых в противном случае потребовалось бы различное оборудование; например, его можно использовать для проверки правильности работы клиентов на глубинах или размерах экрана, которые редко поддерживаются оборудованием.
  3. Фоновый запуск клиентов. (можно использовать программу xwd или аналогичную программу для создания снимка экрана , чтобы увидеть результат)
  4. Запуск программ, которым требуется активный X-сервер, даже если они его не используют. (например, отчеты Clover HTML)

Примеры использования

Пример скриншота

Например, следующая последовательность команд запускает X-сервер виртуального фреймбуфера в качестве дисплея : 1 , запускает на нем программу и захватывает виртуальный экран в файл image.png с помощью команды импорта ImageMagick :

Читайте также:  Linux show ubuntu version

Результат можно показать, запустив программу отображения ImageMagick ( display image.png ) или xv ( xv image.png ). Программа xvfb-run часто используется для автоматизации процесса поиска доступного дисплея и управления аутентификацией.

Удаленное управление по SSH

Xvfb также используется для дистанционного управления. VNC по SSH немного быстрее, чем X11 по SSH. В этом случае Xvfb часто сочетается с облегченным оконным менеджером (таким как Fluxbox или Openbox ) и сервером VNC, таким как X11vnc . Возможная последовательность команд для запуска этого на сервере:

Следующим шагом является запуск клиента SSH, такого как PuTTY, с включенным туннелированием на порт localhost 5900. Затем vncviewer может подключиться к localhost для удаленного управления сервером.

x11vnc в странице человека также содержит инструкции.

Xvnc (не путать с x11vnc) очень похож на Xvfb.

Источник

Linux: запуск графических приложений в фоне

— Вы хотите запустить linuxdcpp из консоли на домашнем компьютере находясь на работе?
— Вы хотите, чтобы он запускался сразу после загрузки системы, но не желаете использовать автологон?
— На вашем сервере есть программа, которая работает только в графическом режиме, но вы не хотите держать графическую сессию пользователя всё время включенной?

Если ответ хотя бы на один из вопросов «да», то эта статья для вас.

Думаю, что вы, так же как и я, нередко сталкивались с задачей запуска чего-либо в фоне таким образом, чтобы к этому чему-то потом можно было подключиться. Если с консольными программами тут проблем никаких нет, инструменты есть и они известны, например, тот же screen, то для графических приложений готовых инструментов нет (или же они малоизвестны).

На помощь нам приходит Xvfb (X virtual framebuffer) — виртуальный X-сервер, который для вывода использует не видеокарту, а оперативную память.

Работает всё достаточно просто и прозрачно, поэтому углубляться не буду (да, впрочем, и не во что углубляться), а просто опишу рабочие версии скриптов. Единственное, с чем пришлось повозиться в процессе их написания, так это с авторизацией X-сервера для возможности подлючения к сессии не обходя вопросы безопасности (т.е. не используя work around в виде «xhost +») — понимание, как всё должно работать пришло не сразу. Но обо всём по порядку.

Требования для работы скриптов

— Установленные пакеты: xvfb, x11vnc и либой vncviewer, например xtightvncviewer
— Ubuntu 10.04 (это не совсем требование, это то, на чём всё запускалось и тестировалось. После небольших правок это будет работать и на RHEL 5, но нужно иметь ввиду, что в пакете xvfb на RHEL5 нет сприпта-обёртки xvfb-run, но его можно найти в интернет или взять из deb-пакета в Ubuntu)

Читайте также:  Driver hp laserjet 1020 linux driver

Скрипт запуска приложения

Скрипт для подключения к запущенному приложению

Запуск при старте системы

На этом всё. Приятного администрирования!

Update1: в комментариях рассказали (ykl) про xpra, который является частю проекта partiwm. В сущности — это готовое решение для выполнения тех же задач, что и мои скрипты написанное на python и не требующее VNC.

Update2: как справедливо заметил paramobilus, подобным образом запускать приложения на сервере можно и в случае отсутствия рабочего окружения, оконного-менеджера, X-ов и даже видеокарты.

Источник

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

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

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

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

#apt-get install xvfb

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

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

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

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

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

Fatal server error:
Couldn’t add screen 0

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

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

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

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

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

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

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

Источник

Оцените статью