Skip to main content

VM - Debian 12 KVM

Introducción

Este artículo describe el proceso de creación de una máquina virtual (VM) basada en Debian 12 ("Bookworm") en Proxmox utilizando una imagen preinstalada. Se incluyen detalles sobre la descarga de la imagen, configuración de la VM, instalación de software adicional y ajustes finales.

guia rapida cuando repites

wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
qm importdisk <ID_VM> <nombre_imagen.qcow2> zfs0
apt install qemu-guest-agent -y

Descarga de la imagen

  1. Accede a la página de descargas de imágenes de Debian Cloud: https://www.debian.org/distrib/  -> https://cloud.debian.org/images/cloud/ (revisado26/3/2024)
  2. Selecciona la versión "Debian 12 (Bookworm)".
  3. En la sección "Tipo de imagen", elige "genericcloud". Esta imagen es compatible con QEMU y se adapta a entornos virtualizados como Proxmox.
  4. Descarga la imagen QEMU (.qcow2) que mejor se adapte a tu arquitectura (amd64, arm64, etc.).

azure: Optimized for the Microsoft Azure environment
ec2: Optimized for the Amazon EC2
generic: Should run in any environment using cloud-init, for e.g. OpenStack, DigitalOcean and also on bare metal.
genericcloud: Similar to generic. Should run in any virtualized environment. Is smaller than `generic` by excluding drivers for physical hardware.
nocloud: Mostly useful for testing the build process itself. Doesn't have cloud-init installed, but instead allows root login without a password.

Para proxmox nos conviene la 

generic: Should run in any environment using cloud-init, for e.g. OpenStack, DigitalOcean and also on bare metal..https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2 (enlace 26/3/2024)

Configuración de la VM

  1. Accede a la interfaz web de Proxmox y selecciona "Crear VM".
  2. Introduce un nombre para la VM y selecciona el nodo Proxmox donde deseas alojarla.
  3. En "Sistema operativo", selecciona "Linux" y "Debian 12".
  4. Asigna recursos de hardware a la VM, como CPU, memoria y cantidad de discos virtuales.
  5. En "Opciones de arranque", selecciona "UEFI" como tipo de firmware y configura el orden de arranque para que la imagen QEMU sea la primera opción.
  6. Revisa la configuración y haz clic en "Finalizar" para crear la VM.
VM inicial primer paso
agent: 1
bios: ovmf
boot: order=virtio9;net0
cores: 1
efidisk0: zfs0:vm-2024-disk-0,efitype=4m,pre-enrolled-keys=1,size=1M
hotplug: disk,network,memory,cpuide2: zfs0:vm-2024-cloudinit,media=cdrom
machine: q35
memory: 2048
meta: creation-qemu=7.2.0,ctime=
name: Plantilla-DEBIAN12
net0: virtio=8E:3D:4B::EE:DB,bridge=vmbr0,firewall=1
numa: 1
ostype: l26
scsihw: virtio-scsi-single
serial0: socket
smbios1: uuid=475c5bb3-40ca52c6ecd
sockets: 1
virtio9: zfs0:vm-2024-disk-1,iothread=1,size=2G
vmgenid: 0eb8b247-f54cce1b3a

Sigue el asistente y al final, quitais el cdrom y agregais:Cloud-init, Serial Port. He dejado el disco 0 libre para incorporar nuestra imagen.

Importación de la imagen QEMU

  1. Descarga la imagen QEMU a tu servidor Proxmox.
  2. Inicia una sesión SSH en el servidor Proxmox.
  3. Importa la imagen QEMU a la VM utilizando el comando qm importdisk.
qm importdisk <ID_VM> <nombre_imagen.qcow2> zfs0
En este momento agregamos la imagen qcow que nos hemos bajado
root@ns:~# qm importdisk 2024 debian-12-genericcloud-arm64.qcow2 zfs0
importing disk 'debian-12-genericcloud-arm64.qcow2' to VM 2024 ...
transferred 0.0 B of 2.0 GiB (0.00%)
transferred 20.5 MiB of 2.0 GiB (1.00%)
transferred 1.9 GiB of 2.0 GiB (96.13%)
transferred 1.9 GiB of 2.0 GiB (97.13%)
transferred 2.0 GiB of 2.0 GiB (98.13%)
transferred 2.0 GiB of 2.0 GiB (99.19%)
transferred 2.0 GiB of 2.0 GiB (100.00%)
transferred 2.0 GiB of 2.0 GiB (100.00%)
Successfully imported disk as 'unused0:zfs0:vm-2024-disk-2'
root@ns:~# 

Después de esta maniobra el disco aparece como "unused", lo incorporamos y configuramos el boot, que arranque desde este disco, "Options->boot order")

Captura de pantalla 2024-03-26 122822.png

En este punto deberías poder ver el arranque, yo os recomiendo la consola serial, mucho mas comoda que la directa VNC

Para el primer login debéis corregir la contraseña en "Cloud-init"

Captura de pantalla 2024-03-26 125930.png

Para aplicar el cambio hay que reiniciar el VM, 

Instalación de software adicional

  1. Instala el paquete qemu-guest-agent para mejorar la integración entre la VM y Proxmox.
apt install qemu-guest-agent -y
  1. Actualiza el sistema operativo y los paquetes instalados.
apt -y update; apt -y dist-upgrade

Si no hemos ampliado el disco dará error, te recomiendo subirle 8G, para dejarlo en 10Gb, no mucho mas, el espacio importante lo dejaremos en otros discos que mapearemos más tarde

Al tener cloud-init al arrancar hace cosas, como actualizar la red,cambios de password, aplicar certificados. Si aumentas el tamaño del disco, desde proxmox debes reiniciar para que en el arranque te reubique el espacio y lo encuentres en el sistema

Captura de pantalla 2024-03-26 131020.png

Si ves la ip como en la imagen es que vamos bien. Sino revisar los pasos anteriores.

Pasos finales.

Agregamos discos adicionales.
  • SWAP   (lo excluírsenos del backup)
  • /var/log (lo podemos excluir del backup)
  • /var/lib/psa/dumps (si instalas plesk te lor ecomiendo)
  • /var/lib/mysql (plesk - si llenan el disco no petara)
  • /var/www (plesk - asi separas las web del correo)

agregamos los discos que nos hagan falta, mejor darles valores pequeños y luego ir creciendo cuando sea necesario, bajar el tamaño no es imposible, pero es arriesgado.

formatear SWAP y /var/log

Yo no hago particiones, solo las del root que suele ser complicado, en el resto, 1 disco es por sí mismo una partición, así me ahorro pasos cómo reconstruir la partición cuando hay jaleo. 

root@Plantilla-DEBIAN12:~# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0      11:0    1    4M  0 rom  
vda     254:0    0   12G  0 disk 
├─vda1  254:1    0 11.9G  0 part /
├─vda14 254:14   0    3M  0 part 
└─vda15 254:15   0  124M  0 part /boot/efi
vde     254:64   0    1G  0 disk 
vdf     254:80   0    2G  0 disk 
root@Plantilla-DEBIAN12:~# mkswap /dev/vdf
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=170df83d-56db-4f98-8c45-4679198f21ca
root@Plantilla-DEBIAN12:~# mkfs.ext4 /dev/vde
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done                            
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: f4c21d14-86f3-449d-b857-7bf76893cf58
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

https://wiki.debian.org/Swap

Si durante el proceso perdeis los UUID de los discos puedes localizarlo con lsblk. Al final debería quedar algo parecido a esto.

# cat /etc/fstab
# /etc/fstab: static file system information
UUID=03d27ae1-9e98-4d21-bc19-e76bcc9aeca6 / ext4 rw,discard,errors=remount-ro,x-systemd.growfs 0 1
UUID=F5B8-B4DC /boot/efi vfat defaults 0 0
UUID=170df83d-56db-4f98-8c45-4679198f21ca none swap sw 0 0
# <file system>                           <dir>              <type>    <options>             <dump> <pass>
UUID=f4c21d14-86f3-449d-b857-7bf76893cf58 /var/lib/psa/dumps ext4 defaults 1 2
UUID=9aa666b9-b283-43bb-a137-b6a3ea357b42 /var/log           ext4 defaults 1 2
UUID=f0b6b8a2-dba1-46e3-b3e5-dfdefa2f0a25 /var/lib/mysql     ext4 defaults 0 1
UUID=24158e6d-f227-46e3-9ddd-f5211063dc9e /var/www           ext4 defaults 0 1

Ajustar uso de SWAP

Aplicar esto: https://es.wikipedia.org/wiki/Swappiness  con valor 0

/etc/sysctl.conf
vm.swappiness = 0

FAQ:

¿qué hacer si aparece algo asi?

Captura de pantalla 2024-03-26 123042.png

casi seguro que se debe a que habéis bajado la imagen "genericcloud', bajate la correcta y  ajustalo todo.

¿Qué hacer si aparece un error al arrancar la VM?

  • Asegúrate de que la imagen QEMU esté descargada correctamente y no esté corrupta.
  • Verifica la configuración de la VM, especialmente el orden de arranque.
  • Consulta la documentación de Proxmox para obtener información sobre errores específicos.

¿Puedo usar una imagen diferente a "genericcloud"?

Sí, puedes usar una imagen diferente, pero es posible que necesites realizar configuraciones adicionales para que funcione correctamente en Proxmox.