Chatear en RedIrc

sábado, 7 de mayo de 2016

Virtualización de Windows con kvm en Ubuntu

KVM (Kernel-based Virtual Machine)  es una de las grandes soluciones de software libre para virtualización sobre plataformas x86 y x86_64, se encuentra disponible en el kernel de Linux desde su versión 2.6.20, soporta virtualización de procesadores Intel (Intel VT-x) y AMD (AMD-V).

Lo más destacado es su gran rendimiento con la posibilidad de crear pasarelas de hardware (passthrough) a través de IOMMU (input–output memory management unit) permitiendo la comunicación directa entre la memoria virtual y la física (DMA).


Requisitos previos a la instalación


Para usar kvm al máximo rendimiento necesitamos disponer de soporte para virtualización VT-x/AMD-v en nuestro procesador, podemos comprobar si disponemos de las banderas vmx o svm en el CPU con el siguiente comando:
egrep -c '(vmx|svm)' /proc/cpuinfo
Si no se muestra nada tras la ejecución del comando anterior debemos de comprobar si disponemos de tal soporte en nuestro CPU, en tal caso, activarlo en la BIOS, en mi caso para Intel:

Activar virtualizacion para CPU Intel

Otra manera de comprobar si disponemos de soporte para kvm es usando kvm-ok:
sudo apt install cpu-checker
kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

Sí vamos a añadir dispositivos PCI en nuestras máquinas virtuales necesitamos activar iommu en el arranque del sistema añadiendo el parámetro intel_iommu en la línea GRUB_CMDLINE_LINUX_DEFAULT del archivo /etc/default/grub, quedando algo así:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"

[update headline="Para CPU AMD"]Si tu procesador es AMD sustituye intel_iommu por amd_iommu[/update]
Actualizamos grub y reiniciamos el sistema antes de seguir:
sudo update-grub
sudo reboot
Comprobamos si IOMMU se activa y no hay problemas revisando el registro:
dmesg | egrep '(AMD-Vi|DMAR|IOMMU)'
0.000000] DMAR: IOMMU enabled




Instalación de KVM


Para instalar kvm en Ubuntu, Debian o derivados usaremos apt:
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virt-manager ovmf
virt-manager es una herramienta que nos va a permitir crear y modificar máquinas virtuales fácilmente a través de un interfaz gráfico.

Añadir los grupos libvirtd y kvm al usuario actual, luego debemos reiniciar la sesión para actualizar los cambios en el usuario:
sudo usermod -aG libvirtd,kvm $USER
sudo chown root:libvirtd /dev/kvm
gnome-session-quit


Creando una máquina virtual con virt-manager


Como ya dijimos, virt-manager es una excelente herramienta para manejar máquinas virtuales kvm, ejecutamos virt-manager (Alt + F2) y iniciamos el creación de una máquina virtual nueva pulsando el primero icono en la parte superior izquierda, en este ejemplo crearé Windows 7.

virt-manager Creación de una maquina virtual
Como vemos, podemos instalar nuestro sistema operativo desde diferentes medios, lo habitual es usar una imagen ISO, continuamos el asistente hasta llegar a la última etapa donde marcaremos "Personalizar configuración antes de instalar":

virt-manager Personalizar sistema operativo
Al dar al botón Finalizar nos mostrara los detalles del hardware virtual, desde aquí podemos añadir, eliminar o modificar dispositivos máquinas virtuales.

Es recomendado usar el firmware OVMF para iniciar las máquinas virtuales con soporte UEFI, necesario si queremos añadir una GPU que tenga soporte UEFI:

virt-manager Firmware UEFI


En Memoria elegimos acorde al sistema operativo que vamos a instalar, en este caso, para Windows 7 con 4096 MiB es más suficiente.

En el apartado CPUs, en modelo tengo host-passthrough, esta opción hace que el procesador virtual tenga las mismas características que el real, está NO está disponible en la lista, debemos escribirlo.

En SATA Disco * tengo las siguientes opciones qué es lo recomendado si quieres sacar el máximo rendimiento:

virt-manager opciones de disco

En SATA CDROM * definimos el origen de nuestra imagen ISO de Windows para empezar la instalación, esta la podemos añadir dando al botón Conectar si no la tendríamos definida:

virt-manager montar imagen ISO

Antes de iniciar la instalación vamos a añadir un dispositivo CDROM nuevo para montar los virtio drivers (clic para descargar los últimos drivers) que son actualizaciones y drivers que debemos de instalar/actualizar en nuestra máquina una vez la instalemos, pulsamos en "Añadir hardware" en la parte inferior de la ventana y seleccionamos la ubicación donde los descargamos, en "Tipo de dispositivo" elegimos "Dispositivo CDROM":

virt-manager añadir un cdrom

Como ya dijimos anteriormente, podemos añadir dispositivos PCI/USB, pero hay que tener en cuenta que el dispositivo que elijamos se reservará para la máquina virtual por lo que tendremos que usar aquellos que no usemos en la maquina host o usar una conexión VNC remota, esta ya lo proporciona kvm.


[update headline="GPU Passthrough"]Para usar de pasarela la GPU esta debe soportar UEFI, para comprobar si nuestra tarjeta lo soporta leer esto.[/update]

Si estamos conectados por terminal remotamente sin entorno gráfico podríamos hacer las modificaciones virsh o instalando la maquina virtual con virt-install, para editar una existente llamada win7:
sudo virsh edit win7


Instalación de Windows 


En este punto ya tenemos preparado ĺo necesario para empezar la instalación de nuestro sistema operativo dando al botón "Iniciar la instalación" en la parte superior de la ventana:

virt-manager iniciar la instalacion

Una vez instalado el sistema debemos de actualizar y instalar los controladores PCI y VGA, para ello, nos dirigimos al Administrador de dispositivos y damos clic secundario sobre cada uno de ellos => "Actualizar software de controlador":

Windows, actualizar software de controladores

windows, busca software de controladores en el equipo

seleccionar la capeta que contiene los controladores en windows

Así con todos los que faltan, incluido el adaptador de pantalla, al reiniciar deberemos de notar la diferencia.

No hay comentarios:

Publicar un comentario