En el artículo Virtualización en CentOS 6.2 utilizando KVM se explica paso a paso cómo instalar KVM y crear una máquina virtual con Windows XP. Este artículo explica como convertir una máquina virtual KVM existente para que utilice SPICE.

El proyecto SPICE provee una solución Open Source completa para la interacción con entornos de escritorio virtualizados. Actualmente se focaliza en proveer acceso remoto de alta calidad a máquinas virtuales QEMU. Busca romper las barreras de la adopción de virtualización superando los desafíos de la virtualización tradicional de escritorio y poniendo énfasis en la experiencia del usuario. Otros componentes desarrollados incluyen el driver de dispositivo virtual QXL.

SPICE es uno de los proyectos "et" de Red Hat (Red Hat Emerging Technology Projects). Los proyectos ET son un surtido de proyectos de desarrollo de nuevas tecnologías Open Source relacionadas con virtualización y la nube.

Entonces, SPICE es una forma avanzada para conectarse a una máquina virtual QEMU de una forma que ayude a mantener la performance de escritorio. Provee sonido desde la máquina virtual y mucho menor ancho de banda para gráficos de alta calidad en la máquina virtual. Para mayor información de SPICE dirigirse a su sitio oficial. Las características más interesantes que agrega SPICE son la capacidad de redimensionar automágicamente la configuración de display del guest cuando se redimensiona la ventana del cliente (o al pasar a pantalla completa) y la capacidad de copiar y pegar entre host/guest.

Partiendo con un host CentOS 6.2 y una máquina virtual con Windows XP SP3 se procede con la instalación y configuración de SPICE.

Host CentOS 6.2:

Guest Windows XP SP3 (wxp_guest):

Actualmente CentOS 6.2 sólo permite utilizar la arquitectura x86_64 como host servidor de máquinas virtuales y se debe contar con un CPU con los flags "vmx" (si es un procesador Intel) o "smx" (si es un procesador AMD). Antes de comenzar la instalación, cabe destacar que SPICE funciona sólo con KVM y no con Xen (ya que está diseñado para QEMU).


Instalación de SPICE

Contando con una máquina virtual (wxp_guest) que utiliza VNC como consola (por defecto), luego de actualizar libvirt a la versión 0.9.4-23 (o superior) se deben instalar los siguientes paquetes en el host:

# yum install spice-server spice-client spice-protocol

Si se utiliza un host con entorno gráfico (en este caso GNOME 2.28.2) opcionalmente se pueden instalar las siguientes herramientas:

# yum install cairo-spice ffmpeg-spice-libs ngspice pixman-spice spice-glib spice-gtk spice-gtk-python spice-gtk-tools spice-xpi

 

Instalación del dispositivo gráfico SPICE en una máquina virtual KVM existente

Antes de instalar el dispositivo gráfico SPICE es necesario apagar la máquina virtual (ya que los cambios de hardware sólo se hacen efectivos cuando está apagada).

Una vez apagada, se debe abrir la máquina virtual desde el administrador ("Applications > System Tools > Virtual Machine Manager") haciendo doble clic sobre la misma o clic derecho y luego "Open". Luego para ver los detalles se debe abrir "View > Details". En la columna de la izquierda se debe seleccionar el ítem de hardware "Display VNC" y remover utilizando el botón "Remove":

Luego se agrega el nuevo dispositivo utilizando el botón "Add Hardware":

Se selecciona "Graphics", tipo "Spice server, se selecciona "Listen on all public network interfaces" para que el servidor escuche en todas las interfaces públicas y se ingresa un password fuerte para limitar el acceso a la consola de forma remota. Esto permite que se pueda acceder de forma remota a la consola de la máquina virtual desde máquinas que tengan el cliente SPICE instalado. Luego se presiona "Finish" y debe quedar como se muestra en la siguiente imagen:

Es necesario remover el dispositivo VNC y luego agregar el dispositivo SPICE. No es posible simplemente cambiar de VNC a SPICE utilizando el desplegable "Type", ya que esto no agrega los dispositivos adicionales necesarios para el correcto funcionamiento de SPICE.

A continuación se selecciona el dispositivo de video ("Video") y se selecciona el modelo ("Model") "qxl" y luego "Apply":

Una vez instalado el dispositivo SPICE es posible verificar la conexión utilizando el cliente SPICE. Utilizando Alt+F2 se debe ejecutar "spicy". Previamente se debe iniciar la máquina virtual ejecutando "Virtual Machine > Run" desde la máquina virtual, o clic derecho y luego "Run" desde el administrador de máquinas virtuales.

Al abrirse el cliente SPICE y se debe ingresar el hostname "localhost" y el puerto por defecto (5900) o el que se haya ingresado al agregar el dispositivo.

Una vez que se hace clic en el botón "OK", el cliente solicita el ingreso de la calve de acceso:

Se ingresa la clave, luego "OK" y se abre la consola de la máquina virtual:

Se observa que Windows ha iniciado y ha detectado correctamente el nuevo dispositivo de hardware de video. También se observa que el cliente no ha detectado el agente SPICE, porque aún no se ha instalado en el guest Windows XP ("agent: no" en la barra de estado). Para continuar con la instalación se debe cerrar el cliente SPICE y continuar utilizando la consola desde la ventana de la máquina virtual. Se cambia la vista desde detalles a consola mediante "View > Console".

Luego se ingresa la clave y luego "Login".

En el cuadro de diálogo para agregar nuevo hardware se debe presionar "Cancel". Para prodeder con la instalación se debe descargar el driver QXL para Windows XP desde el sitio de SPICE.

Desde la máquina virtual descargar el driver para guests Windows spice-guest-tools-0.1.exe.

Ejecutar "spice-guest-tools-0.1.exe" y proceder con la instalación.

Como el driver no está firmado no pasa el "Windows Logo Test". Simplemente se debe seleccionar "Continue Anyway" para continuar la instalación:

Finalizada la instalación del driver se puede comprobar que se ha detectado correctamente el dispositivo gráfico "Red Hat QXL GPU" desde el administrador de dispositivos:

Al iniciar nuevamente el cliente "spicy" debería detectar el agente y habilitar las funcionalidades extra de SPICE, como por ejemplo la reconfiguración automática del display del guest.

Por alguna razón, para esta prueba en particular el cliente no detectó el agente.

Al verificar los servicios de Windows, se observa que el servicio "RHEV Spice Agent" está detenido y no es posible iniciarlo:

Los logs del servicio y del agente SPICE se encuentran en "C:\WINDOWS\Temp\vdagent.log" y "C:\WINDOWS\Temp\vservice.log". Al revisar los eventos se detecta que el servicio no pudo crear una instancia VDIPort. La instancia VDIPort la utiliza el guest para establecer la comunicación con el host. De esta forma el host puede enviar instrucciones al sistema operativo y al driver gráfico en el guest, por ejemplo para cambiar la configuración de pantalla o intercambiar contenido de los clipboards (copiar/pegar entre guest y host). La comunicación se establece a través de un puerto serie.

La respuesta a este problema fue sencilla. Al instalar el hardware de video SPICE en la máquina virtual, por alguna razón no agregó el hardware adicional para la comunicación. Para solucionar esto se debe (desde los detalles de la máquina virtual y luego de haberla apagado) seleccionar el dispositivo "Display Spice"; luego cambiar el tipo a "VNC" y aplicar; y finalmente volver a cambiar a "Spice" y aplicar. Inmediatamente debe aparecer un cuadro de diálogo para elegir si se desea instalar el hardware adicional necesario para el agente.

Al seleccionar "Yes" debe agregar el dispositivo "Controller Virtio Serial":

Cuando se inicia nuevamente la máquina virtual Windows detecta el nuevo hardware y se debe instalar en driver siguiendo el asistente (el sistema ya posee el driver, dado que anteriormente se instaló spice-guest-tools-0.1.exe)

Luego de reiniciar la máquina virtual, el servicio "RHEV Spice Agent" debe estar levantado, como se observa en la siguiente captura:

En el administrador de dispositivos se observa el nuevo dispositivo de sistema "VirtIO-Serial Driver":

Además en la barra de estado del cliente SPICY se observa "agent: yes":

Al pasar a pantalla completa, desde "View > Fullscreen" o mediante Shift+F11, el display del guest se reconfigura automáticamente. Dado que el cliente SPICY para GNU/Linux no agrega ninguna barra de estado, únicamente se puede salir de pantalla completa mediante Shift+F11.

Al trabajar con la máquina virtual en fullscreen los resultados son asombrosos, inclusive cuando se reproducen videos. La fluidez del teclado y mouse son tan buenas que nadie sospecharía que se trata de una máquina virtual si se trabaja en pantalla completa.

...Continúa en el próximo artículo dedicado al Acceso remoto a máquinas virtuales KVM utilizando el cliente SPICE, ejemplificando la instalación y configuración del cliente en Windows 7.


Tal vez pueda interesarte


Compartí este artículo