aboutsummaryrefslogtreecommitdiffstats
path: root/content/articles/instalar-un-gestor-de-maquinas-virtuales-en-hyperbola-gnulinux-libre.md
blob: 42bb44205c71443874b7d7d87c4e58b9cb977b62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
Author: Jesús E.
Category: Tutorial
Date: 2020-05-03 03:12
Modified: 2022-03-22 05:55
Diaspora: https://diasp.org/u/heckyel
Image: 2020/05/virt-manager.jpg
Lang: es
Mastodom: https://masto.nobigtech.es/@heckyel
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.

## Habilitando la Virtualización

### Revisar si su PC soporta virtualización

    :::console
    $ LC_ALL=C lscpu | grep Virtualization

o ejecutar el comando:

    :::console
    $ 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 qemu

    :::console
    # pacman -Sy

    # pacman -S qemu vde2 dnsmasq bridge-utils

    # gpasswd -a <tu-usuario> kvm

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

- Módulo kvm_intel (procesadores Intel)

        :::console
        # modprobe kvm_intel

- Módulo kvm_amd (procesadores AMD)

        :::console
        # modprobe kvm_amd

### 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:

    :::console
    $ 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`:

        :::console
        # modprobe -r kvm_intel

2. Activa la función de anidamiento

        :::console
        # 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`:

        :::console
        # 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`:

        :::console
        # modprobe -r kvm_amd

2. Activa la función de anidamiento

        :::console
        # 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`:

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

## Uso de Qemu

Escribir el disco virtual a usar por la máquina virtual.

    :::console
    $ qemu-img create -f qcow2 hyper.qcow2 10G

### Uso simple:

    :::bash
    #!/bin/bash
    qemu-system-x86_64 \
      -monitor stdio \
      --enable-kvm -m 512 \
      -cpu host -smp 4 \
      -cdrom /path/to/hyperbola-milky-way-v0.4-dual.iso \
      -drive file=/path/to/hyper.qcow2,if=virtio \
      -boot c -rtc base=localtime \
      -device virtio-keyboard-pci \
      -net nic \
      -net user \
      -vga virtio

`-cpu host -smp 4` para usar 4 CPUs con el nombre original del
CPU-hostpedador.

`-net user` es importante para tener acceso a Internet dentro
de su nuevo sistema. `-m 512` es el tamaño de RAM virtual
establecido (megabytes), el valor predeterminado es 128 MB,
elegí 512.

Usted puede agregar `-vga virtio -display sdl,gl=on` para la emulación 3D

También usted puede agregar `-device intel-hda -device hda-duplex` para el soporte
de audio en tarjetas de audio de Intel.

> Véase <https://wiki.archlinux.org/title/QEMU#Audio>

### Qemu + VNC como servidor

    :::bash
    #!/bin/bash
    qemu-system-x86_64 \
      -monitor stdio \
      --enable-kvm -m 512 \
      -cpu host -smp 4 \
      -cdrom /path/to/hyperbola-milky-way-v0.4-dual.iso \
      -drive file=/path/to/hyper.qcow2,if=virtio \
      -boot c -rtc base=localtime \
      -device virtio-keyboard-pci \
      -net nic -net user \
      -vga virtio -display none \
      -vnc :0

Se puede agregar la opción `-vnc :X` para que QEMU redirija la pantalla VGA a la sesión VNC.
Sustituya X por el número de la pantalla (0 entonces escuchará en 5900, 1 en 5901,
2 en 5902, etc).

>Recuerda! Ctrl + Alt + G para salir de la captura del mouse, Ctrl + Alt + F para pantalla
>completa!
<!--- -->
>Advertencia: la configuración predeterminada del servidor VNC no
>utiliza ninguna forma de autenticación. Cualquier usuario puede
>conectarse desde cualquier host.
> Puedes revisar: <https://wiki.archlinux.org/title/QEMU#Basic_password_authentication>

### Capturas de pantalla de Qemu

<figure>
    <a href="{filename}/wp-content/uploads/article/images/2020/05/vm-hyperbola.png">
        <img src="{filename}/wp-content/uploads/article/images/2020/05/vm-hyperbola.png" alt="Hyperbola en Qemu">
    </a>
    <figcaption>Captura de pantalla de Hyperbola GNU/Linux en Qemu</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 Qemu">
    </a>
    <figcaption>Captura de pantalla de Trisquel GNU/Linux en Qemu</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:

    :::console
    # 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