Instalación de KVM/QEMU en Arch Linux

0. Motivación

Desde hace tiempo uso diversas máquinas virtuales para varias tareas – principalmente compilar y probar Simutrans en diferentes sistemas. He venido usando VirtualBox desde el principio, no sin algunos inconvenientes:

  1. No he sido nunca capaz de hacer funcionar las “guest extensions” que se necesitan, entre otros, para cambiar la resolución de la MV (porque trabajar a 900x600 es complicado en cualquier sistema moderno).
  2. Y aunque funcionasen, son software privativo, así que van en contra de la filosofía del software libre. Desde mi punto de vista es siempre mejor no depender de software que no sea 100% libre.
  3. No me gusta Oracle.

Aquí es donde entra la alternativa: KVM+QEMU. No entraré en detalles técnicos: algunos dicen que es mejor técnicamente, otros que no notarás la diferencia. Pero lo que sí está claro es que es más difícil de instalar, así que he ido posponiendo la migración hasta que tuviese suficiente tiempo como para investigar el tema a fondo. Esta pequeña guía es el resultado de mis descubrimientos.

1. Prerrequisitos

Primero vamos a comprobar si nuestro sistema es compatible con KVM y a cargar los módulos necesarios.

2. Instalación

sudo pacman -S --needed qemu virt-manager dnsmasq iptables iptables-nft sudo systemctl enable --now libvirtd

3. Post-instalación

/* Autoriza a los usuarios del grupo kvm a gestionar libvirt sin autenticación */
polkit.addRule(function(action, subject) {
	if (action.id == "org.libvirt.unix.manage" &&
		subject.isInGroup("kvm")) {
			return polkit.Result.YES;
	}
});

Con esto ya podemos crear y lanzar nuevas máquinas virtuales, desde la imagen .iso de instalación. No obstante, si ya teníamos máquinas virtuales de VirtualBox, podemos convertirlas al formato usado por QEMU con el siguiente comando:

qemu-img convert -f vdi -O qcow2 ubuntu.vdi ubuntu.qcow2

Quizás lleve un buen rato, pero en mi experiencia la conversión ha sido siempre exitosa :–)

Fuente: https://gist.github.com/diffficult/cb8c385e646466b2a3ff129ddb886185