Un hipervisor (en inglés hypervisor) o monitor de máquina virtual (virtual machine monitor) es una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar, al mismo tiempo, diferentes sistemas operativos (sin modificar o modificados, en el caso de paravirtualización) en una misma computadora.

Lo primero que debemos de comprobar es que nuestra CPU soporta la virtualización y si se encuentra activa. El siguiente comando chequea el sistema tanto Intel como AMD:

egrep -c '(svm|vmx)' /proc/cpuinfo

En mi caso el comando devuelve un valor mayor a 0 por lo tanto es compatible con el proceso:

pi@overclock:~$ egrep -c '(svm|vmx)' /proc/cpuinfo
8
pi@overclock:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        5,3G         25G        196M        535M         25G
Swap:           15G          0B         15G

También recomiendo disponer de más de 4Gb de RAM para no generar excesiva carga en la memoria SWAP. Realizada esta breve introducción pasemos a la acción.

KVM

KVM es una solución de virtualización completa para Linux en hardware x86 que contiene extensiones de virtualización (Intel VT o AMD-V). Consiste en un módulo de kernel cargable (kvm.ko), que proporciona la infraestructura de virtualización principal y un módulo específico del procesador (kvm-intel.ko o kvm-amd.ko).

Vamos a proceder a instalar el software necesario:

sudo apt-get update && sudo apt-get -y install qemu-kvm libvirt-clients libvirt-daemon libvirt-daemon-system bridge-utils libguestfs-tools genisoimage virtinst libosinfo-bin virt-manager

Ahora debemos de agregar nuestro usuario a los grupos virtuales y los recargamos al sistema:

sudo adduser $USER libvirt && sudo adduser $USER libvirt-qemu && sudo adduser $USER kvm && newgrp libvirt && newgrp libvirt-qemu && newgrp kvm

Comprobamos que este correctamente incluido:

pi@overclock:~$ groups $USER
pi : pi adm tty dialout cdrom floppy sudo audio dip video plugdev netdev kvm libvirt libvirt-qemu

Y vamos a comprobar el acceso a la red desde KVM:

pi@overclock:~$ sudo virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              inactive   no            yes

Como en nuestro servior ya disponemos de una red bridge (br0), vamos a configurar debidamente KVM para que tenga acceso. Para ellos vamos a crear un fichero de puente:

nano /home/$USER/.bridged.xml

Y agregamos el contenido:

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

Guardamos los cambios (Ctrl+O), salimos del editor de texto (Ctrl+X), activamos los cambios:

sudo virsh net-define --file /home/pi/.bridged.xml && sudo virsh net-autostart br0 && sudo virsh net-start br0

Y comprobamos la configuración de KVM:

pi@overclock:~$ sudo virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 br0                  active     yes           yes
 default              inactive   no            yes

Llegados a este punto recomiendo reiniciar el servidor para activar los cambios:

sudo reboot

Tras el renicio ya tendremos el sistema totalmente preparado para trabajar con KVM.

Desde el entorno gráfico podras crear maquinas virtuales sencillamente con el gestor instalado y tambien desde terminal.

pi@overclock:~$ sudo virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     d9kvmIPTV                      running
 2     d9kvmWEB                       running
 -     win10pro                       shut off