Cómo instalar KVM/QEMU en Manjaro/Archlinux
KVM es el acrónimo de Kernel-based Virtual Machine, es una solución tecnológica de virtualización basada en el módulo del kernel de Linux. KVM es una solución de software de código abierto que se ejecuta en la máquina Linux x86 con el apoyo de las extensiones de virtualización de hardware Intel VT o AMD-V. El módulo del kernel KVM se ha incorporado al kernel Linux desde la versión 2.6.20 y se ha portado a otros sistemas operativos como FreeBSD e Illumos como módulos del kernel cargables.
La tecnología KVM convertirá la máquina Linux en un hipervisor de virtualización, que se denomina máquina anfitriona. En la máquina anfitriona, podrás crear varios sistemas aislados llamados máquinas virtuales (VM). Cada máquina virtual tiene su sistema (puede ser Linux, Windows o BSD), también tiene hardware virtualizado privado como memoria, CPU, tarjeta de red, disco, gráfica, etc.
¿Qué es QEMU?
QEMU o Quick Emulator es un emulador y virtualizador de sistemas de código abierto para la virtualización del hardware. Generalmente, se utiliza como virtualizador con el módulo del kernel KVM para ejecutar máquinas virtuales. Para conseguir un gran rendimiento de las máquinas invitadas/virtuales, aprovechará las extensiones de virtualización de hardware, como Intel VT o AMD-V. La virtualización QEMU/KVM se utiliza principalmente como hipervisor en un centro de datos.
En esta guía, aprenderás a configurar la virtualización KVM/QEMU en una máquina Manjaro/Archlinux. También aprenderás a crear la primera máquina virtual con la aplicación GUI «virt-manager», una interfaz de usuario de escritorio para gestionar máquinas virtuales.
Requisitos previos
- Un Manjaro/Archlinux con arquitectura x86 o de 64 bits.
- Una CPU/procesador con soporte de virtualización (Intel VT o AMD-V).
- Un usuario no root con privilegios de root sudo.
Comprobar la arquitectura del sistema y el soporte de virtualización de la CPU
En primer lugar, comprueba la arquitectura de la máquina y el soporte de hardware de la aceleración de la virtualización Intel VT para CPUs Intel y AMD-v para CPUs AMD.
1. Ejecuta el siguiente comando para comprobar la arquitectura de tu sistema.
uname -m
Obtendrás la siguiente salida.
Linux machine1 5.4.134-1 #1 SMP PREEMPT Tue Jul 06 08:10:03 UTC 2021 x86_64 GNU/Linux
Como se ve, actualmente estamos utilizando el sistema Linux con arquitectura«x86_64» o«64 bits» y la versión del kernel«5.4«.
2. A continuación, comprueba el soporte de virtualización del hardware ejecutando el siguiente comando.
sudo lscpu | grep Virtualization
Para el procesador Intel, verás una salida similar a la de abajo.
Virtualization: VT-x
Y para los procesadores AMD, a continuación hay una salida similar.
Virtualization: AMD-V
3. Opcionalmente, puedes habilitar la virtualización anidada en tu máquina mediante el siguiente comando.
sudo modprobe -r kvm_intel
sudo modprobe kvm_intel nested=1
Después, ejecuta el siguiente comando para verificar la virtualización anidada.
cat /sys/module/kvm_intel/parameters/nested
Si obtienes una salida como «Y» o «1«, significa que la función de virtualización anidada está habilitada. De lo contrario, verás el mensaje de error «No such file or directory».
Instalación de los paquetes QEMU y Virt-Manager
1. Para instalar los paquetes qemu y virt-manager, ejecuta el siguiente comando.
sudo pacman -S qemu virt-manager libvirt virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables libguestfs
Para el sistema manjaro, habrá conflicto de paquetes entre«iptables» y«ebtables«. Escribe«y» para eliminar el paquete iptables por defecto y sustituirlo por los paquetes «ebtables» y «nftables«.
A continuación se indican los paquetes esenciales que debes conocer:
- qemu: Un emulador y virtualizador de máquinas de código abierto.
- virt-manager: Una aplicación GUI para gestionar máquinas virtuales.
- libvirt: Una API para controlar motores de virtualización como KVM, QEMU, etc.
- dnsmasq: Redireccionador DNS ligero y servidor DHCP.
- bridge-utils: Utilidades para configurar el puente Ethernet de Linux.
- libguestfs: Conjunto de herramientas para modificar imágenes de disco de máquinas virtuales (VM).
2. A continuación, inicia y activa el servicio libvirtd con el siguiente comando.
sudo systemctl enable --now libvirtd
Obtendrás una salida similar a la de abajo.
Created symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service → /usr/lib/systemd/system/libvirtd.service.
Created symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket → /usr/lib/systemd/system/virtlockd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket → /usr/lib/systemd/system/virtlogd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd.socket → /usr/lib/systemd/system/libvirtd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket → /usr/lib/systemd/system/libvirtd-ro.socket.
3. Después, ejecuta el siguiente comando para comprobar el estado del servicio libvirtd.
sudo systemctl status libvirtd
Y deberías ver una salida similar a la de abajo. Como se ve, el servicio libvritd está activo y en ejecución.
? libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2021-07-23 10:33:25 UTC; 6s ago
TriggeredBy: ? libvirtd-ro.socket
? libvirtd.socket
? libvirtd-admin.socket
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 16828 (libvirtd)
Tasks: 19 (limit: 32768)
Memory: 16.4M
CPU: 226ms
CGroup: /system.slice/libvirtd.service
??16828 /usr/bin/libvirtd --timeout 120
Permitir que un usuario no root utilice la virtualización KVM/QEMU
Por defecto, sólo el usuario «root» puede crear y gestionar máquinas virtuales. Para permitir que los usuarios no root puedan crear y gestionar máquinas virtuales, debes seguir la configuración de libvirtd que se indica a continuación.
1. Ejecuta el siguiente comando para editar la configuración de libvirtd.
sudo nano /etc/libvirt/libvirtd.conf
Descomenta la opción«unix_sock_group» e introduce el nombre del grupo como«libvirt«.
# Set the UNIX domain socket group ownership. This can be used to
# allow a 'trusted' set of users access to management capabilities
# without becoming root.
#
# This setting is not required or honoured if using systemd socket
# activation.
#
# This is restricted to 'root' by default.
unix_sock_group = "libvirt"
Después, descomenta la opción «unix_sock_rw_perms» y deja el permiso como«0770» por defecto.
# Set the UNIX socket permissions for the R/W socket. This is used
# for full management of VMs
#
# This setting is not required or honoured if using systemd socket
# activation.
#
# Default allows only root. If PolicyKit is enabled on the socket,
# the default will change to allow everyone (eg, 0777)
#
# If not using PolicyKit and setting group ownership for access
# control, then you may want to relax this too.
unix_sock_rw_perms = "0770"
Guarda la configuración pulsando el botón Ctrl+x y escribe y, a continuación, introduce.
2. A continuación, añade tu usuario al grupo«libvirt» mediante el siguiente comando.
sudo usermod -a -G libvirt username
3. Después, reinicia el servicio libvirtd para aplicar la nueva configuración.
sudo systemctl restart libvirtd
Ahora todos los usuarios del grupo «libvirt» podrán crear y configurar máquinas virtuales.
Verificar la instalación de QEMU/KVM con virt-manager
Ahora abre la aplicación «virt-manager» desde tu menú de aplicaciones.
1. Haz clic en el menú «Editar -> Detalles de la conexión» de la aplicación «virt-manager».
2. En la pestaña«Visión general» verás que el virt-manager se conectará automáticamente a«qemu:///system«.
3. Pasa a la pestaña «Redes Virtuales» y verás la configuración de red«por defecto«.
- Interfaz: virbr0
- Inicio automático en el arranque: sí
- Dirección IP: 192.168.122.0/24
- Rango de direcciones IP DHCP: 192.168.122.2 – 192.168.122.254
- Tipo de red: NAT
4. Ahora pasa a la pestaña«Almacenamiento«, y verás la configuración«por defecto» del almacenamiento del pool.
- Escribe: Directorio del sistema de archivos
- Tamaño: Depende de tu disco
- Ubicación: /var/lib/libvirt/imágenes
- Inicio automático en el arranque: sí
Todas las imágenes de la máquina virtual estarán disponibles en este almacenamiento por defecto, el directorio«/var/lib/libvirt/images«.
5. A continuación, haz clic en el botón«+» para crear un nuevo almacenamiento de pool para los archivos de imagen ISO. Todos los archivos ISO de sistemas operativos estarán disponibles en este pool.
Sigue la configuración del almacenamiento como se indica a continuación:
- Nombre: ISO
- Tipo: dir: Directorio del sistema de archivos
- Ruta de destino: /ruta/directorio/para/tu/iso/
Haz clic en el botón«Finalizar» para completar el proceso. Después de esto, ya estás preparado para crear nuevas máquinas virtuales.
Crear una nueva máquina virtual con el virt-manager
1. En la aplicación virt-manager, haz clic en el botón«+» para crear una nueva máquina virtual.
2. Selecciona«Medio de instalación local» para utilizar la imagen ISO para la instalación y haz clic en el botón «Adelante» para continuar.
3. Haz clic en el botón «Examinar» para seleccionar el archivo ISO.
4. Ahora elige el almacenamiento conjunto«ISO» y selecciona el archivo iso para la instalación (para este ejemplo es el«Debian 10«), luego haz clic en«Elegir volumen«.
Desmarca la opción«Detectar automáticamente desde el medio/fuente de instalación«, escribe el sistema operativo que quieres instalar (para este ejemplo es «Debian 10″), y vuelve a hacer clic en el botón «Adelante» para continuar.
4. Elige la cantidad de memoria y CPU para la máquina virtual, y luego haz clic en «Reenviar«.
5. Elige la cantidad de disco para la máquina virtual y haz clic en«Adelante».
6. Vuelve a comprobar la configuración y haz clic en el botón «Finalizar» para instalar.
7. Ahora la máquina virtual está funcionando con la virtualización QEMU/KVM, y puedes continuar con la instalación del sistema operativo.
Conclusión
Enhorabuena! has aprendido a configurar la virtualización QEMU/KVM en una máquina Manjaro/Archlinux. También, cómo utilizar la aplicación virt-manager para crear máquinas virtuales. Ahora puedes crear máquinas virtuales con tu sistema operativo preferido. Puedes utilizar otra distro de Linux, Windows o un sistema operativo de la familia BSD.