En el sistema X Window, Xvfb o X virtual framebuffer es un servidor X11 que ejecuta todas las operaciones gráficas en memoria, sin mostrar nada por pantalla. Desde el punto de vista del cliente, Xvfb actúa exactamente como cualquier otro servidor, sirviendo las peticiones y enviando excepciones y errores habituales, solo que no sale nada por ninguna pantalla. Este servidor virtual no requiere que la máquina tenga ningún dispositivo gráfico. Tan solo es necesario una capa de red.

Xvfb se usa principalmente para testeo:

  1. Al compartir código con el servidor X real, puede ser usado para comprobar las partes de código que no están relacionadas con hardware específico;
  2. Puede ser usado para comprobar clientes en varias condiciones en las que se requiera un rango diferente de hardware. Por ejemplo, puede ser usado para comprobar si los clientes funcionan correctamente a resoluciones o tamaños de pantalla que son raramente soportadas por hardware.
  3. Ejecutar clientes en background (se puede usar xwd o un programa similar para hacer una captura de pantalla y mostrar resultados)
  4. Ejecutar programas que requieren que un servidor X esté activo aunque no se use (por ejemplo Clover html reports)

Como ejemplo, la siguiente secuencia de comandos ejecuta el framebuffer virtual en el display ":1", ejecuta un programa en él, captura la pantalla virtual y la deja en el fichero image.xwd:

Xvfb :1 &
xv -display :1 &
xwd -display :1 -root -out image.xwd
convert image.xwd image.bmp

El resultado puede ser visualizado ejecutando xwud -in image.xwd o xv image.xwd. También se puede usar el script xvfb-run en algunas plataformas, dejando de preocuparnos en seleccionar un código de muestreo y gestionar la autenticación

xvfb-run command

Xvfb se usa también como control remoto. VNC sobre Secure shell es ligeramente más rápido que X11 sobre SSH. En este caso, Xvfb se combina casi siempre con un gestor de ventanas ligero como Fluxbox y un servidor VNC como X11vnc. Esta es una posible secuencia de comandos para arrancar esto en el servidor:

export DISPLAY=:1
Xvfb :1 -screen 0 1024x768x16 &
fluxbox &
x11vnc -display :1 -bg -nopw -listen localhost -xkb

El siguiente paso es arrancar un cliente SSH como PuTTY con tunneling a localhost con el puerto 5900 habilitado. Después se puede conectar un vncviewer a localhost para conseguir control remote sobre ese servidor.

Véase también editar

Enlaces externos editar