Author: Jesús E.
Category: Tutorial
Date: 2020-05-03 03:12
Image: 2020/05/virt-manager.jpg
Lang: es
Slug: instalar-un-gestor-de-maquinas-virtuales-en-hyperbola-gnulinux-libre
Tags: maquinas virtuales, tutorial
Title: Instalar un gestor de máquinas virtuales en Hyperbola GNU/Linux-libre

Tu sistema principal puede ser Hyperbola GNU/Linux-libre de arquitectura
x86_64, por ejemplo, pero con suficiente memoria y poder de procesamiento
usted pordría ejecutar
[Trisquel][trisquel]{:target="_blank" rel="noopener noreferrer"} y
[Dragora][dragora]{:target="_blank" rel="noopener noreferrer"}
al mismo tiempo, dentro de la misma máquina.

## ¿Qué es un máquina virtual?

Una máquina virtual es un software que simula un sistema de computación
y puede ejecutar programas como si fuese una computadora real.
Este software en un principio fue definido como
"un duplicado eficiente y aislado de una máquina física".

## ¿Qué programas me permiten ejecutar una máquina virtual?

En los sistemas operativos totalmente libres existe un
programa llamado `qemu` que nos permite virtualizar.

[Qemu][qemu]{:target="_blank" rel="noopener noreferrer"}
funciona a través de línea de comandos, pero también
existen GUI, que como su nombre indica son interfaces
gráficas para el usuario.

En esta guía explicamos cómo instalar
[Virtual Machine Manager][vm]{:target="_blank" rel="noopener noreferrer"}
el cual es muy completo al momento de virtualizar sistemas operativos.

## Instalación de Virtual Machine Manager

### Revisar si su PC soporta virtualización

    $ LC_ALL=C lscpu | grep Virtualization

o ejecutar el comando:

    $ lsmod | grep kvm

Si su computadora admite virtualización, debería ver
la salida como `Virtualización: VT-x` o `Virtualización: AMD-V`,
caso contrario su ordenador no es capaz de virtualizar.

### Instalando Virtual Machine Manager

    # pacman -Sy

    # pacman -S virt-manager qemu vde2 dnsmasq bridge-utils openbsd-netcat libvirt firewalld

    # gpasswd -a <tu-usuario> kvm

    # gpasswd -a <tu-usuario> libvirt

### Revisar el grupo kvm

    # grep -E 'group="kvm"|group="78"' /etc/libvirt/qemu.conf

Comprobar si existe `group="kvm"` o `group="78"`

### Habilitar módulos del kernel para virtualización

- Módulo kvm_intel (procesadores Intel)

        # modprobe kvm_intel

- Módulo kvm_amd (procesadores AMD)

        # modprobe kvm_amd

### Verifique que la máquina virtual este configurada correctamente

    $ virt-host-validate

### Servicios

Virt-Manager depende de los servicios `libvirtd` y
`firewalld` para funcionar.

A continuación le explicamos cómo inciar esos servicios:

#### Iniciar libvirtd

    # rc-service libvirtd start

#### Agregar libvirtd por defecto

    # rc-update add libvirtd default

#### Iniciar firewalld

    # rc-service firewalld start

#### Agregar firewalld por defecto

    # rc-update add firewalld default

#### Quitar Servicios

Si desea quitar los servicios e iniciar solo cuando
usted desee, ejecute:

    # rc-update del libvirtd default

    # rc-update del firewalld default

### Habilitar la virtualización anidada en KVM

La virtualización anidada le permite ejecutar una máquina virtual (VM)
dentro de otra VM mientras sigue utilizando la aceleración de hardware
del host.

#### Comprobando si la virtualización anidada es compatible

Para los procesadores Intel, verifique el archivo
`/sys/module/kvm_intel/parameters/nested`.
Para procesadores AMD, verifique el archivo
`/sys/module/kvm_amd/parameters/nested`.
Si ve `1` o `Y`, se admite la virtualización anidada;
si ve `0` o `N`, la virtualización anidada no es compatible.

Por ejemplo:

    $ cat /sys/module/kvm_intel/parameters/nested
    Y

#### Habilitar la virtualización anidada para procesadores Intel:

1. Apague todas las máquinas virtuales en ejecución y recargue el módulo `kvm_intel`:

        # modprobe -r kvm_intel

2. Activa la función de anidamiento

        # modprobe kvm_intel nested=1

3. La virtualización anidada se habilita hasta que se reinicia el host.
   Para habilitarlo permanentemente, agregue la siguiente línea al
   archivo `/etc/modprobe.d/kvm.conf`:

        # nano -w /etc/modprobe.d/kvm.conf
        ----------------------------------
        options kvm_intel nested=1

#### Habilitar la virtualización anidada para procesadores AMD:

1. Apague todas las máquinas virtuales en ejecución y recargue el módulo `kvm_amd`:

        # modprobe -r kvm_amd

2. Activa la función de anidamiento

        # modprobe kvm_amd nested=1

3. La virtualización anidada se habilita hasta que se reinicia el host.
   Para habilitarlo permanentemente, agregue la siguiente línea al
   archivo `/etc/modprobe.d/kvm.conf`:

        # nano -w /etc/modprobe.d/kvm.conf
        ----------------------------------
        options kvm_amd nested=1

### Capturas de pantalla de Virtual Machine Manager

<figure>
    <a href="{filename}/wp-content/uploads/article/images/2020/05/vm-dragora.png">
        <img src="{filename}/wp-content/uploads/article/images/2020/05/vm-dragora.png" alt="Dragora en Virtual Machine Manager">
    </a>
    <figcaption>Captura de pantalla de Dragora GNU/Linux en Virtual Machine Manager</figcaption>
</figure>

<figure>
    <a href="{filename}/wp-content/uploads/article/images/2020/05/vm-trisquel.png">
        <img src="{filename}/wp-content/uploads/article/images/2020/05/vm-trisquel.png" alt="Trisquel en Virtual Machine Manager">
    </a>
    <figcaption>Captura de pantalla de Trisquel GNU/Linux en Virtual Machine Manager</figcaption>
</figure>

### Módulos con problemas de seguridad

El módulo `vhost_net` tiene problemas de seguridad
[CVE-2018-3646][spectre]{:target="_blank" rel="noopener noreferrer"}
que es un error de CPU L1TF y SMT con posible fuga
de datos. Lo recomendable es desactivarlo de la
siguiente manera:

    # modprobe -r vhost_net

Si estás en Hyperbola GNU/Linux-libre este módulo
viene desactivado.

[dragora]: https://dragora.org
[trisquel]: https://trisquel.info
[qemu]: https://wiki.qemu.org/Main_Page
[spectre]: https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/l1tf.html
[vm]: https://virt-manager.org/
*[GUI]: Graphical user interface
