lunes, 7 de enero de 2008

Virtualizar Windows XP con Xen en CentOS 5.1

Hace unos días he tenido que crear una máquina virtual para ejecutar Windows XP sobre CentOS. Como esta distribución viene con Xen integrado me decidí a probarlo, en vez del más conocido VMware.

La creación de la máquina virtual es trivial, teniendo una pequeña aplicación que permite elegir los recursos asignados y el sistema operativo que va a ejecutar. Ofrece dos modelos de virtualización: paravirtualización y virtualización completa por harware.

La paravirtualización requiere que el kernel del sistema operativo hospedado (también llamado domU) esté modificado y sea consciente de la situación, para poder cooperar debidamente con el anfitrión (conocido como dom0).

La virtualización completa o por hardware requiere que el procesador tenga las instrucciones (Intel VT ó AMD-V) que permitan al dom0 virtualizar a un sistema operativo sin modificar, aunque esto sólo se da en procesadores modernos y, en ocasiones, estas extensiones están desactivadas en la BIOS por motivos de seguridad (para evitar posibles rootkits, pero pueden reactivarse en el menú de gestión).

Puesto que Windows se compra como es, y no se puede modificar el kernel, la única opción es la virtualización completa.

La instalación en principio es muy sencilla pues al crearse la máquina virtual se arranca el CD de instalación del sistema operativo. El problema llega cuando el programa de instalación realiza el primero de sus muchos reinicios del sistema: al arrancar de nuevo ya no encuentra el CD de instalación.

La solución es simple: no hay más que indicarle a la máquina virtual que emplee la unidad de CD física cono unidad propia de CD. Para ello hay que detener la ejecución de la máquina y editar su archivo de configuración. Puesto que su sintaxis es un poco oscura vamos a hacerlo con una versión exportada en XML. Para ello no hay más que teclear en la consola:
virsh dumpxml nombre_maquina > nombre_maquina.xml

Con esta orden obtenemos la configuración de una manera bastante legible. Ahora, tal y como se explica aquí, vamos a crear un nuevo dispositivo entre las etiquetas <devices> y </devices>.
<disk type='block' device='cdrom'>
    <driver name='phy'/>
    <source dev='/dev/hdc'/>
    <target dev='hdc'/>
    <readonly/>
</disk>

Habrá que modificar hdc para que refleje el dispositivo que en cada máquina representa a la unidad de disco.

Tras este paso aplicamos de nuevo la configuración en formato XML a la máquina virtual, con el comando:
virsh define nombre_maquina.xml

Una vez hecho esto no hay más que volver a arrancar la máquina y el programa de instalación encontrará el CD sin problemas, concluyendo el proceso satisfactoriamente.

¡Y ya tenemos una nueva máquina virtual con Windows XP!

7 comentarios:

El Herrero dijo...

Chaaval... He estado cacharreando con Fedora Core 8, y me iba a poner a probar CentOS precisamente con esa idea: windows virtualizado completamente (el portatil, que trae esa pijotada), pero vamos, conociéndome yo y lo bien que se me da linux... ¡¡¡uff!!! cualquier pequeña modificación de la configuración puede ser letal. Lo probaré porque soy así de atravesado, y me gusta cacharrear, pero la que va a salir de esta puede ser antológica.

Rubén Moreno dijo...

Cacharrea tranquilo, que en el peor de los casos sólo habrás perdido algo de tiempo :D

El Herrero dijo...

En el peor de los casos habré perdido los datos de la partición de Windows, pero bueno, dentro de lo cerril que soy, no lo soy tanto. No ahora. Ya está descargándose CentOS, a ver qué tal.

yzak dijo...

Llego a la parte de en que reinicia por primera vez, y de ahi me pide que inserte el Disco, en la unidad, e travesiado ya vastante el archivo de la maquina virtual, y obtengo el mismo resultado negativo, si no me equivoco el archivo esta en /etc/xen/nombre_maquina_virtual, pero nada, me pordias explicar un poco mas por favor. te lo agradece

yo dijo...

Hola. Yo tengo una maquina virtual con ubuntu-server con xen en Centos 5. Cada vez que hago una pregunta en el foro de ubuntu sobre mi maquina virtual me mandan a otro lado por tener el sistema base en centos. Y me alegré de ver hoy tu comentario ya que trabajas en un sistema centos con xen como yo. No se si me puedes hechar una mano a una duda que tengo.
Mi problema esque cuando cree la tu maquina virtual le puse una ip que no se ahora mismo cual fue. Y como no se como apenas se el funcionamiento de la red con esto de las maquinas virtuales, pues ahora no se como localizar la ip de la maquina virtual. He entrado en el archivo /etc/sysconfig/network-scripts/ifcfg-eth0 y hay una ip pero me han dicho que esa ip es la de dom0. ¿Entonces como se la ip que usa la maquina virtual y como puedo cambiarsela?
Gracias?

Sergio Daniel dijo...

Hola, la version de xen que utilizas es la que ofrece Citrix? XenServer Citrix? Saludos!

Rubén Moreno dijo...

@Sergio

La versión que incluye CentOS viene integrada en el kernel y si no me equivoco proviene de http://xen.org