En el mundo de los sistemas operativos tipo Unix, el sistema gráfico con el cual se implementan las interfaces de usuario en modo gráfico es X Window. Éste tiene una arquitectura cliente servidor, donde los programas se conectan a un servidor, X Server, el cual recibe las órdenes necesarias para dibujar en pantalla lo que deseen los programas clientes. Se encarga de mandar a los clientes información de los eventos de los distintos dispositivos (ratones, teclados, ...) del sistema. Toda esta comunicación se realiza usando el protocolo X. Este servidor se encarga de manejar todos los dispositivos necesarios para la entrada y salida.
Hay diversas implementaciones del servidor X, y hoy quiero hablar de una de ellas, Xvfb. Este servidor corre en máquinas donde no hay pantallas ni dispositivos de entrada y se comporta como un framebuffer tonto, donde el servidor va dibujando lo que se le pide.
Pero, ¿qué sentido tiene un sistema de este tipo, si no siquiera podemos interaccionar con el mismo?. Pues hay varios escenarios donde encaja:
- Programas que sean clientes X, pero que no necesiten mostrar ventanas para interaccionar con el usuario.
- Pruebas: Se quiere hacer pruebas automáticas con algún tipo de framework y no queremos tener ventanas abriéndose y cerrando en nuestro escritorio mientras se ejecutan. Este fue el escenario
Mi caso de uso ha sido poder probar una web a través del navegador Firefox que era controlado por una serie de scripts, ejecutándose en una máquina virtual sin necesidad de que interactúe con la pantalla.
Xvfb admite las opciones del servidor X, mas las propias que ayudan a configurarlo. Lo básico es decir cual va a ser la pantalla que va a usar y la resolución junto con la profundidad de color. Puede arrancarse:
Le estamos indicando que el servidor "0" tenga una pantalla "0" con una resolución de 1024x768 y 24 bits de color. Podemos conectarnos a ella, con lo cual la variable DISPLAY debe tener el valor 0:0. Cambiando el número de servidor X (:0) se puede ejecutar junto a un servidor X normal que interactúe con la pantalla, teclado y ratón.
Se puede comprobar que funciona con estas simples órdenes (supuestos que tenemos xterm e imagemagick instalados), de tal manera que nos generará la captura de pantalla en screen.jpg
$ import -window root screen.jpg
Por defecto, el servidor Xvfb va a permitir conexiones TCP/IP, así que puede ser interesante desactivar la misma con -nolisten tcp
No hay comentarios:
Publicar un comentario