USB multiboot con Ventoy y MX Linux instalado de forma permanente con LUKS2

USB multiboot con Ventoy y MX Linux instalado de forma permanente con LUKS2

Contexto

Quería convertir un pendrive USB de aproximadamente 120 GB en dos cosas a la vez:

  • un medio multiboot para almacenar y arrancar ISOs con Ventoy;
  • un sistema MX Linux completo, actualizable y cifrado, instalado en el espacio restante.

El resultado probado mantiene Ventoy como menú principal. MX Linux se inicia desde Ventoy → F6 → MX Linux Portable, solicita la contraseña LUKS2 y arranca como una instalación normal, no como una sesión Live con persistence.

Resultado final

El dispositivo terminó con GPT y esta distribución aproximada:

p1  74,6 GiB  exFAT       Ventoy
p2  32 MiB    FAT/VFAT    VTOYEFI       gestionada exclusivamente por Ventoy
p3  512 MiB   FAT32       MXEFI         ESP, boot
p4  1 GiB     ext4        MXBOOT        /boot
p5  38,5 GiB  LUKS2       MXROOT        volumen cifrado
    └─ ext4                 /            incluye /home

La instalación utilizada fue MX-25.3_Xfce_ahs_x64.iso, basada en Debian Stable. La ISO se verificó con este SHA-256:

475bcbd9c3f38acffc7909da52803f4d5b57fc39bc8205ddf97264f0f10523ed

Advertencia crítica: identificar el USB

Antes de cualquier operación destructiva hay que identificar el dispositivo por modelo, tamaño y tipo de transporte. Nunca hay que asumir que será /dev/sda.

lsblk -o NAME,SIZE,MODEL,TRAN,FSTYPE,LABEL,MOUNTPOINTS

En este caso el USB era un SanDisk de 114,6 GiB con TRAN=usb. El disco interno era un NVMe distinto. Todo el procedimiento destructivo se realizó exclusivamente sobre el USB identificado.

Instalar Ventoy reservando espacio al final

Se utilizó Ventoy 1.1.18. Antes de ejecutar el instalador conviene comprobar la ayuda desde el directorio completo del paquete:

cd ventoy-1.1.18
./Ventoy2Disk.sh -h

La versión utilizada confirmó:

  • -g: tabla GPT;
  • -r SIZE_MiB: reservar espacio al final en MiB.

Con el USB desmontado, el comando fue:

sudo ./Ventoy2Disk.sh -i -g -r 40960 /dev/sdX

El parámetro sdX debe sustituirse únicamente después de identificar el USB. El espacio reservado fue de 40960 MiB.

La comprobación posterior debe mostrar aproximadamente:

sudo parted /dev/sdX unit MiB print free
lsblk -f /dev/sdX

Desde este punto, p1 y p2 deben considerarse intocables: no se redimensionan, mueven ni reformatean.

Copiar la ISO a Ventoy

La ISO se copió simplemente a la primera partición:

/ISO/MX-25.3_Xfce_ahs_x64.iso

Ventoy permite añadir y eliminar ISOs como archivos normales sin volver a preparar el dispositivo.

Crear las particiones de MX

Usando exclusivamente los 40960 MiB libres al final se crearon:

p3  512 MiB  FAT32  MXEFI   flags esp,boot
p4  1024 MiB ext4   MXBOOT
p5  resto             MXROOT, sin formato todavía

Comprobación:

lsblk -o NAME,SIZE,FSTYPE,LABEL,PARTLABEL,PARTTYPE,MOUNTPOINTS /dev/sdX
sudo parted /dev/sdX unit MiB print free

Después se formatearon solo las dos particiones de sistema:

sudo mkfs.fat -F 32 -n MXEFI /dev/sdX3
sudo mkfs.ext4 -F -L MXBOOT /dev/sdX4

Crear el cifrado LUKS2

La contraseña se introdujo interactivamente y no se guardó en scripts, historial, variables ni logs:

sudo cryptsetup luksFormat --type luks2 /dev/sdX5
sudo cryptsetup open /dev/sdX5 mxroot_crypt
sudo mkfs.ext4 -L MXROOT /dev/mapper/mxroot_crypt

Verificación:

sudo cryptsetup luksDump /dev/sdX5
lsblk -f

El dispositivo p5 debe aparecer como crypto_LUKS; el sistema de archivos ext4 solo debe aparecer dentro de /dev/mapper/mxroot_crypt.

Instalar MX Linux como sistema completo

La ISO se arrancó desde Ventoy en Normal mode, no en GRUB2 mode. En el instalador se escogió una instalación completa/tradicional y particionado personalizado.

Asignaciones:

p3                    → /boot/efi   ESP
p4                    → /boot       ext4
/dev/mapper/mxroot_crypt → /         ext4

No se creó una partición /home, porque /home queda dentro de la raíz cifrada. Tampoco se creó una partición swap.

Como el volumen ya estaba cifrado, se dejó desactivada la opción adicional Encrypt del instalador. No se debe seleccionar p5 como si fuera una partición ext4 normal: la raíz es el volumen abierto /dev/mapper/mxroot_crypt.

Para un USB portátil se eligió:

  • GRUB instalado en la ESP de MX (p3), no en VTOYEFI;
  • método de arranque ESP/UEFI, no MBR ni PBR;
  • initramfs genérico, no host-specific;
  • sin swapfile;
  • sin hibernación;
  • zram basada en la RAM;
  • Samba desactivado;
  • guardar cambios de Live desactivado.

La etiqueta visible de la ESP terminó como EFI-SYSTEM y la de la raíz como rootMX25 debido al instalador. Lo importante es que la partición EFI sea p3 y que la raíz sea el volumen LUKS2 de p5. Las etiquetas pueden ajustarse posteriormente si se necesita una nomenclatura exacta.

Añadir MX al menú F6 de Ventoy

Ventoy no detecta automáticamente una instalación Linux situada en otra partición. Hay que crear /ventoy/ventoy_grub.cfg en p1.

La ruta EFI real se comprobó montando p3:

sudo mount /dev/sdX3 /mnt/mxefi
find /mnt/mxefi/EFI -maxdepth 3 -type f

La ruta instalada fue:

EFI/MX/grubx64.efi

El UUID final de la ESP fue F237-528A. Desde un sistema normal, con la primera partición Ventoy montada, se creó:

sudo mkdir -p /mnt/ventoy/ventoy
sudo nano /mnt/ventoy/ventoy/ventoy_grub.cfg

Contenido:

menuentry "MX Linux Portable" --class=custom {
    search --no-floppy --fs-uuid --set=mxefi F237-528A
    chainloader ($mxefi)/EFI/MX/grubx64.efi
    boot
}

El arranque probado fue:

Ventoy → F6 → MX Linux Portable → contraseña LUKS → MX Linux

El uso del UUID evita depender de nombres como /dev/sda3, que pueden cambiar según el ordenador.

Dispositivos virtuales de Ventoy

Al arrancar la ISO mediante Ventoy, MX muestra dispositivos virtuales como VentoyPart. Es normal que aparezcan junto a las particiones físicas.

No deben confundirse:

VentoyPart       representación virtual de la ISO/partición Ventoy
ventoy           dispositivo virtual auxiliar
/dev/sda3        ESP física de MX
/dev/sda4        /boot físico de MX
/dev/sda5        contenedor físico LUKS2
mxroot_crypt     raíz ext4 abierta desde /dev/sda5

Para verificar el origen del volumen cifrado:

sudo cryptsetup status mxroot_crypt
lsblk -s /dev/mapper/mxroot_crypt

El resultado correcto debe indicar /dev/sda5, no una partición del NVMe interno.

Verificaciones posteriores

En el MX instalado:

findmnt /
lsblk -f
cat /etc/fstab

Para comprobar que es una instalación persistente normal:

sudo touch /etc/test-mx-persistent
sudo apt update
sudo apt install htop

Después de reiniciar desde Ventoy con F6:

test -f /etc/test-mx-persistent && echo OK
command -v htop

Para comprobar el cifrado desde otro Linux, con MX apagado:

lsblk -f /dev/sdX

La partición de MX debe aparecer como crypto_LUKS y no mostrar directamente el contenido ext4.

Ajustes para usarlo en USB

Conviene revisar /etc/fstab y usar noatime para /, sin aplicar opciones agresivas que comprometan la consistencia.

TRIM solo debe activarse si el dispositivo lo soporta realmente:

lsblk --discard

Si los valores de discard no son útiles o son cero, no hay que forzarlo. Ext4 es una opción conservadora para este escenario.

Ventajas y límites

Ventajas:

  • Ventoy conserva la facilidad de copiar ISOs;
  • MX es una instalación completa y actualizable;
  • /, /home y los datos están protegidos por LUKS2;
  • /boot y EFI quedan separados y accesibles para el arranque;
  • el sistema puede iniciarse desde el menú F6 o desde la entrada UEFI directa creada por el instalador.

Límites:

  • la velocidad y resistencia dependen de la calidad del pendrive;
  • la contraseña LUKS es imprescindible para acceder a los datos;
  • al cambiar de ordenador pueden variar los nombres /dev/sdX, pero el menú usa UUID;
  • los cambios de MX se sincronizan normalmente solo cuando hay red;
  • la aplicación de Bitwarden puede usar su vault local cifrado después de una primera sincronización online, pero no puede sincronizar cambios sin Internet.

Rollback

La instalación ocupa solo el espacio reservado al final del USB. Para eliminar MX sin tocar Ventoy, habría que borrar únicamente p3, p4 y p5 y recrearlas en ese espacio. No se deben modificar p1 ni p2.

Antes de cualquier operación de borrado hay que volver a identificar el USB con lsblk, porque las letras de dispositivo pueden cambiar.

Referencias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *