# QEMU

### Introducción <a href="#requisitos-previos" id="requisitos-previos"></a>

#### Características del sistema <a href="#requisitos-previos" id="requisitos-previos"></a>

Antes de comenzar nos tenemos que asegurar que nuestro sistema cumple con los requisitos necesario. Esto es:

* **Procesador -** con soporte de virtualización (Intel VT-x o AMD-V). Debemos comprobar que en la BIOS/UEFI está habilitada la virtualización.
* **Debian** - yo lo estoy probando en un Debian 12.

#### Actualizar el sistema <a href="#paso-1-actualizar-el-sistema" id="paso-1-actualizar-el-sistema"></a>

Siempre es recomendable actualizar el sistema. Para ello, abrimos un terminal y ejecutamos:

<pre><code><strong>sudo apt update &#x26;&#x26; apt upgrade -y
</strong></code></pre>

#### Soporte de virtualización <a href="#paso-2-comprueba-de-soporte-de-virtualizacion" id="paso-2-comprueba-de-soporte-de-virtualizacion"></a>

Ahora nos toca verificar si la CPU soporta la virtualización. Para ello, ejecutamos el siguiente comando:

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

```

Si el resultado es 0, la CPU no soporta virtualización o al menos no está habilitada en la BIOS/UEFI. Si el resultado es 1 o más, quiere decir que la CPU soporta virtualización.

También podemos utilizar el siguiente comando que sirve para buscar en la información de la CPU ,si existe soporte de virtualización por hardware, tanto **Intel** como **AMD**, y mostrarlo resaltado en color.

<pre><code><strong>grep -E --color  'vmx|svm' /proc/cpuinfo
</strong></code></pre>

En mi caso resalta en rojo vmx con lo que **comprobamos que la CPU soporta virtualización por hardware (Intel VT-x)** y **cuántos núcleos la soportan**.

```
egrep -c vmx /proc/cpuinfo
```

\
La información la busca en  <mark style="color:purple;">/proc/cpuinfo</mark> que es un fichero del sistema en Linux que contiene información detallada sobre la CPU, como es el modelo, cantidad de núcleos y las características del procesador.

En mi caso aparece vmx  que es una flag del procesador que nos indica el soporte para **Intel VT-x**, la tecnología de virtualización de Intel. Esto es:

* Virtualización **Intel - vmx**
* Virtualización **AMD - svm**

#### CPU Checker <a href="#paso-3-instalar-el-cpu-checker" id="paso-3-instalar-el-cpu-checker"></a>

Instalaremos la herramienta <mark style="color:purple;">cpu-checker</mark>  que no permite verificar si se puede utilizar KVM en nuestro sistema, como root:

<pre><code><strong>sudo apt install cpu-checker -y
</strong></code></pre>

Una vez instalada la herramienta, podemos ejecutar el siguiente comando para comprobar si KVM es soportado como root:

```
kvm-ok
```

Se debe mostrar un mensaje que indica que KVM está habilitado.

```
INFO: /dev/kvm exists
KVM acceleration can be used
```

#### Instalar KVM, Qemu y Virtmanager <a href="#paso-4-instalar-kvm-qemu-y-virtmanager" id="paso-4-instalar-kvm-qemu-y-virtmanager"></a>

Ahora si nos disponemos a instalar KVM, Qemu y Virtmanager como usuario root:

```
apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y
```

#### Verificar la instalación <a href="#paso-5-verificar-la-instalacion" id="paso-5-verificar-la-instalacion"></a>

Una vez instalados los paquetes, verificamos que el servicio de <mark style="color:purple;">libvirt</mark> esté activo como root:

```
sudo systemctl status libvirtd
```

#### Añadir el usuario al grupo libvirt <a href="#paso-6-anadir-tu-usuario-al-grupo-libvirt" id="paso-6-anadir-tu-usuario-al-grupo-libvirt"></a>

Ahora, podemos añadir nuestro usuario al grupo <mark style="color:purple;">libvirt</mark> y al grupo <mark style="color:purple;">kvm</mark> para poder gestionar las VM sin necesidad de usar <mark style="color:purple;">sudo</mark>:

```
sudo usermod -aG libvirt kirby
sudo usermod -aG kvm kirby
```

Para que los cambios surtan efecto, cerramos la sesión y volvemos  a iniciarla. Mejor si reiniciamos el sistema.

Ahora ya tenemos instalado y configurado KVM Qemu y Virtmanager en Debian 12. Podemos comprobarlo haciendo:

```
sudo systemctl status libvirtd.service
sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service
```

#### Algunos comandos útiles

Con virsh listamos las redes que tenemos activas o no:

```
sudo virsh net-list --all
```

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FVtg7fBlHuGDeF5BPZnmm%2Fimage.png?alt=media&#x26;token=68fa172c-8859-41b7-80a2-3bdb86456681" alt="" width="563"><figcaption></figcaption></figure>

En caso de que no tener redes activas la podemos activar con:

```
sudo virsh net-start default
```

Y para que se actualice automáticamente podemos usar:

```
sudo virsh net-autostart default
```

Otros comandos de red:

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FfgMGbFhdm3Oldhp6iWHO%2Fimage.png?alt=media&#x26;token=09281be1-dcd4-47d8-8791-b063ead336e1" alt="" width="563"><figcaption></figcaption></figure>
