jueves, 13 de noviembre de 2008

Virtualizacion con KVM

Hace poco, instalábamos Virtual Box OSE (Open Source Edition) para la virtualización de otros sistemas operativos. Hoy vamos a hacer lo propio pero usando el modulo KVM (Kernel Virtual Machine), el cual esta incluido en el kernel Linux desde su versión 2.6.20.

Tan solo necesita de un requisito y es que el procesador del equipo tenga soporte para la virtualización por hardware (los últimos procesadores de Intel y AMD ya incorporan esta característica, aunque no todos).

Si quieres confirmar que tu procesador cuenta con el soporte necesario para correr KVM, tipea en la consola esto:

Para procesadores Intel
grep vmx /proc/cpuinfo
Y para los AMD
grep svm /proc/cpuinfo

La salida debe ser similar a esta (en el caso de Intel):
usuario@host:~$ grep vmx /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc up arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

NOTA: De no aparecer el soporte de KVM (vmx o svm según la CPU) puede que este deshabilitado en la BIOS de tu equipo. Si en la BIOS no aparece la opción para activarlo puede que la placa/bios no lo soporte o sencillamente que tengas uno de los pocos procesadores sin las extensiones de virtualización por hardware. Si es tu caso, y aun así quieres virtualizar consulta el artículo anterior a este sobre la instalación y configuración de Virtual Box OSE.

Una vez realizadas la precauciones pertinentes, podemos proceder a instalar todos los paquetes necesarios.
sudo aptitude install kvm virt-manager qemulator
Para poder usar kvm necesitamos pertenecer a su grupo de usuarios o iniciarlo como root, así que añadimos nuestro usuario al grupo "kvm"
sudo adduser dukkon kvm --> Cambia dukkon por tu usuario del sistema

Solo resta reiniciar nuestra sesión (logout y login) y ya podemos probar a tipear en un terminal:

kvm
Si no devuelve ningún error y en su lugar aparece una lista de las opciones y parámetros de uso del KVM todo ha ido perfecto.

Ahora os diré como logré crear una maquina con winXP, por que la verdad no fue tan intuitivo como con VirtualBox, pero la fluidez y robustez con que trabaja KVM en comparación con VBox merece la pena.
Primero tuve que crear un archivo de imagen que utilizaría como hda (primer disco duro) con la orden:
qemu-img create nombre_del_disco_duro_virtual.img [tamaño en KB]
Por ejemplo:
qemu-img create WinXPKvm.img 5000000
Después tuve que crear la maquina virtual con qemulator (Aplicaciones-> Accesorios-> Qemulator), que no soporta KVM, pero es compatible.

NOTA
:Si en algun momento veis algo de Kqemu, tan solo es una capa de aceleración para qemu que además es inestable, no tiene nada que ver con kvm. Así pues lo ignoraré por completo y recomiendo hacer lo mismo...


Pulsad el botón con el símbolo "+ " para crear una nueva maquina virtual.



En la ventana que se abrirá, dá un nombre a la maquina y si quieres un icono para identificarla. En "system type" es aconsejable poner el tipo de arquitectura que tengamos funcionando actualmente, osea si tenemos una CPU de 64b y Ubuntu (u otro) de 64bits, es recomendable virtualizar también en 64bits. Reserva una cantidad de RAM para el equipo virtual, teniendo en cuenta el total de RAM disponible y la usada por tu sistema normalmente.
Después añade una imagen de CD para instalar el sistema virtual o un dispositivo real, si dispones del CD/DVD.
Ahora vamos a la pestaña de "Advanced":

Aquí solo hay poner como primer disco duro (hda) la imagen de disco que creamos antes con el comando qemu-img. Aceptamos y de nuevo en la ventana de Qemulator y con el nuevo equipo seleccionado, hacemos clic en "show settings".

Lo mas destacable aquí es en la pestaña "Hardware", donde puedes elegir una tarjeta de sonido a emular (a mi me funciono emulando la -ENSONIQ AudioPCI ES1370-); y en la pestaña "Network" donde puedes activar la opción -SMB Share-, para usar los recursos compartidos con Samba en el sistema invitado (Carpetas, impresoras, etc...).

Una vez todo configurado, clic en "Save" y, después, en el boton de arriba a la derecha con el icono de "reproducir".

Ejecutara la maquina virtual sobre la que podrás instalar el sistema operativo elegido anteriormente. Cuando termines de instalar el sistema, y si no necesitas requerir mas de ningún CD/DVD o imagen de estos, ya puedes usar kvm para "arrancar" la imagen del disco duro virtual con el nuevo sistema recién instalado dentro.
Prueba a crear un lanzador en tu escritorio o panel de Gnome con esta orden:
kvm "/ruta/del/disco/imagen/entrecomillada.img"
Una vez confirmado que funcione todo correctamente, podéis ir añadiendo opciones a la orden anterior. Tipeando en un terminal kvm salen todas las opciones disponibles pero yo os diré las mas comunes, al menos en mi caso:

-soundhw es1370 <-para cargar la emulación de la tarjeta de sonido.
-m 256 <- para asignar la cantidad de RAM reservada (por defecto se carga con 128Mb) -localtime <- Tuve que añadir esto, por que iniciaba la maquina virtual con la hora retrasada)
-cdrom "/ruta/de/la/imagen/entrecomillada.iso"
<- Puedes añadir esto para que use una imagen como CD/DVD virtual. Como decía antes, en mi caso el lanzador quedaría así:

kvm -m 256 -localtime -soundhw es1370 "/home/dukkon/WinXPKvm.img"

Notad que arriba en el nombre del visualizador aparece ahora QEMU/KVM, además de que se notara en la velocidad y fluidez de ambos sistemas (el anfitrión y el invitado).

Una cosa más, para quienes gustan de trabajar en pantalla completa; usad la combinación Ctrl+Alt+F para entrar y salir del modo "fullscreen".

2 comentarios:

  1. Muy bien explicado, ¡Gracias! quiero hacerlo en mi Kubuntu Intrepid 8.10 64bits AMD ¿cual sería el procedimiento para hacerlo en KDE?
    Sera lo mismo o hay alternativas...?, te lo pregunto por que he visto kqemu y ahi empiezan mis dudas..
    ¡alguna idea?

    ResponderEliminar
  2. KVM funciona igual de bien en KDE que en Gnome. qemu solo lo utilizaras visulaizador de lo que KVM esta virtualizando... Digamos que uno hace las operaciones y el otro solo te las muestra.

    Qemu puede ser usado tambien para virtualizar (Ademas de visualizar) pero lo hace por software, mientras que kvm virtualiza usando las instrucciones del propio porcesador para hacerlo por harware, lo que deriva en mayor potencia/fluidez.

    Por otro lado el procesador debe tener esas intruciones para virtualizar por harware. En la BIOS puede aparecer activada, desactivada o no aparecer la opcion (esto seria que el procesador no la soporta).

    En intel lo llaman "Intel Virtualization Technology", desconozco el nombre para AMD pero no puede distar demasiado del de Intel

    ResponderEliminar