Drivers VirtIO para guests Windows en KVM

En KVM resulta conveniente configurar los Bus de los discos rígidos virtuales como VirtIO para lograr una mejor performance.

Hasta aquí todo bien, pero la cosa se complica un poco cuando queremos virtualizar un sistema Windows dado que no reconoce el disco donde realizar la instalación.

Para esto debemos tener un disco con los drivers a mano durante el inicio de la instalación e indicarle a Windows que controladores queremos utilizar.

Existe un .iso con los drivers correspondientes a todas las versiones de Windows que podemos descargar de este enlace http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/.

Windows 7

En Windows 7 resulta más simple porque solo tenemos que agregar otra unidad de CD-ROM e indicarle a KVM utilizar el .iso de VirtIO que descargamos usando virt-manager o mediante linea de comandos:

Para crear la VM:

virt-install --connect
qemu:///system \
    --name win7 --ram 2048 --vcpus=2 --cpuset=auto \
    --disk path=win7.img,bus=virtio,size=100,format=qcow2 \   
    --network=network=default,model=virtio,mac=RANDOM \
    --graphics vnc,port=5900 \
    --disk device=cdrom,path= /iso/virtio-win-x.x-xx.iso \
    --disk device=cdrom,path= /iso/windows7.iso \
    --os-type=windows --os-variant=win7--boot cdrom,hd 

O si ya está creada:

virsh attach-disk win7 /iso/virtio-win-x.x-xx.iso hdx --type cdrom

La unidad de CD-ROM con el .iso de VirtIO quedará como 1er disco y la unidad con el .iso de Windows quedará como 2do (a no alarmarse, así bootea bien).

Iniciada la instalación llegamos al punto donde Windows nos pregunta en que disco queremos realizar la instalación y nos encontramos con que no lista ninguno. Entonces damos click en “Cargar controlador” y examinamos la unidad de CD-ROM con el .iso de VirtIO abriendo la carpeta correspondiente a Windows7 y la versión a instalar (x86 o AMD64).

En mi caso no pude instalar los dirvers de 64bits, aparentemente no se cargan si no están firmados (cosa que advierte un dialogo) por lo que procedí con éxito a cargar los de x86.

Luego de esto aparece en el listado el disco en cuestión y procedemos a la instalación.

VirtIO en Windows 7 1

Aquí vemos como no aparece ningún disco donde realizar la instalación. Clickeamos la opción “Cargar controlador”

VirtIO en Windows 7 2

Damos click en examinar para buscar los drivers

VirtIO en Windows 7 3

Buscamos la carpeta correspondiente

VirtIO en Windows 7 4

Seleccionamos el controlador

VirtIO en Windows 7 5

Advertencia sobre los drivers de 64bits. Necesitamos cargar los de 32bits para que funcione

Windows XP / 2003

En XP el proceso puede resultar más complicado dado que no acepta usar un CD con drivers OEM. Por esto debemos buscar en la Web por una imagen de diskette (la cual desde hace un tiempo no se encuentra con el resto de descargas de VirtIO) o crearla nosotros mismos sacando los drivers de la .iso.

En el caso de descargarla podemos hacerlo desde aquí.

Se puede crear una imagen con los drivers mas actualizados que se encuentran en la .ISO montando el .vfd y la .iso en una VM y copiando los archivos. Ignoro si tiene algún efecto positivo o no sobre Windows XP.

Para utilizarlo agreguen una unidad de diskette en KVM usando el archivo .vdf que descargaron como imagen usando virt-manager o mediante linea de comandos:

Para crear la VM

$ virt-install --connect qemu:///system \
    --name winxp --ram 2048 --vcpus=2 --cpuset=auto \
    --disk path=winxp.img,bus=virtio,size=100,format=qcow2 \
    --network=network=default,model=virtio,mac=RANDOM \
    --graphics vnc,port=5900 \ 
    --disk path=/iso/virtio-win.vfd,device=floppy \
    --disk device=cdrom,path= /iso/windowsxp.iso \
    --os-type=windows --os-variant=winxp --boot cdrom,hd 
o --os-variant win2k3 en el caso de Windows 2003

Si la VM ya está creada:

$ virsh attach-disk winxp /iso/virtio-win.vfd fda --type floppy

Luego procedan con la instalación, presionando F6 cuando se los requiera para cargar los controladores y seleccionando el driver de la lista para que aparezca el disco rígido.

Windows no encuentra un disco rígido donde instalarse

Windows no encuentra un disco rígido donde instalarse

Presionamos F6 para cargar los drivers en el inicio

Presionamos F6 para cargar los drivers en el inicio

Seleccionando el driver

Seleccionando el driver

También dejo una nota que explica el uso de VirtIOBalloon, uno de los drivers incluidos en VirtIO que se encarga del manejo de memoria y que nos puede sonar extraño. La explicación de su funcionamiento en este link.

Fuentes:

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s