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 enVTOYEFI; - 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;
/,/homey los datos están protegidos por LUKS2;/booty 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.