Guía de Dual-Boot en Libreboot
Guía práctica para configurar dual-boot (o multi-boot) de distribuciones Linux en un sistema con Libreboot. Basada en Libreboot 26.01 “Magnanimous Max” con GRUB 2.14.
Conceptos clave
En Libreboot, GRUB vive en la ROM (chip SPI), no en el disco. Cuando instalas una distro y ejecuta grub-install, ese GRUB en disco nunca se ejecuta como bootloader. Libreboot solo lee el archivo grub.cfg de cada distro mediante el comando configfile.
El flujo de arranque es: coreboot → GRUB (desde ROM) → escanea discos → encuentra grub.cfg → carga kernel.
No existe chainloading (chainloader +1 no funciona). No necesitas ESP (EFI System Partition). El GRUB de la ROM ya trae los módulos necesarios compilados (ext2, btrfs, luks2, search, configfile, etc.), por lo que no necesitas insmod.
Nombres de dispositivo en GRUB de Libreboot
Los discos NVMe se ven como (nvme0n1,gptX). Los SATA como (ahci0,gptX). USB como (usb0). Puedes verificarlos presionando c en el menú de Libreboot y escribiendo ls.
Esquema mínimo de particiones
Cada distro necesita como mínimo:
/dev/nvme0n1pX — ext4 — /boot de la distro (~1 GiB)
/dev/nvme0n1pY — crypto_LUKS — / de la distro (resto)
Ejemplo con Fedora + Linux Mint:
nvme0n1p1 — (reservada/vacía)
nvme0n1p2 — ext4 — /boot Fedora
nvme0n1p3 — LUKS2 — / Fedora (cifrado)
nvme0n1p4 — ext4 — /boot Distro 2
nvme0n1p5 — LUKS2 — / Distro 2 (cifrado)
Para agregar una tercera distro, simplemente añades dos particiones más (boot + LUKS).
Reglas importantes:
- Cada distro debe tener su propio
/bootseparado (ext4). - Cada distro puede tener su propia partición LUKS independiente.
- No se necesita ESP ni partición EFI.
- Al instalar, deja que el instalador instale GRUB normalmente. Aunque no se usa como bootloader, el proceso genera el
grub.cfgque Libreboot necesita.
Cómo agregar una distro al menú de arranque
Paso 1: Instalar la distro
Usa particionado manual en el instalador. Asigna su /boot y su partición raíz (con LUKS si quieres cifrado). No toques las particiones de las distros existentes.
Paso 2: Verificar que generó grub.cfg
Desde tu distro principal:
sudo mkdir -p /mnt/newboot
sudo mount /dev/nvme0n1pX /mnt/newboot # X = partición /boot de la nueva distro
ls /mnt/newboot/grub/grub.cfg # Debian/Ubuntu/Mint usan /grub/
ls /mnt/newboot/grub2/grub.cfg # Fedora usa /grub2/
sudo umount /mnt/newboot
Si no existe grub.cfg, hay que generarlo vía chroot (ver sección “Solución de problemas”).
Paso 3: Obtener el UUID del /boot de la nueva distro
lsblk -f
Busca el UUID de la partición ext4 que es /boot de la nueva distro.
Paso 4: Agregar entrada en 40_custom de la distro principal
Edita el archivo de entradas personalizadas de GRUB en tu distro principal (la que Libreboot carga por defecto):
sudo hx /etc/grub.d/40_custom
El archivo debe verse así:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'Nombre de la Distro' --class nombredistro --class gnu-linux --class os {
search --no-floppy --fs-uuid --set=root UUID_DEL_BOOT
configfile /grub/grub.cfg
}
Reemplaza:
Nombre de la Distro→ lo que quieras ver en el menú.--class→ el icono que se usaraUUID_DEL_BOOT→ el UUID de la partición/bootde esa distro (paso 3)./grub/grub.cfg→ usa/grub2/grub.cfgsi es Fedora.
Para múltiples distros, simplemente añade más bloques menuentry:
#!/bin/sh
exec tail -n +3 $0
menuentry 'Linux Mint' {
search --no-floppy --fs-uuid --set=root aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
configfile /grub/grub.cfg
}
menuentry 'Debian GNU/Linux' {
search --no-floppy --fs-uuid --set=root ffffffff-1111-2222-3333-444444444444
configfile /grub/grub.cfg
}
menuentry 'Arch Linux' {
search --no-floppy --fs-uuid --set=root 55555555-6666-7777-8888-999999999999
configfile /grub/grub.cfg
}
Paso 5: Asegurar que es ejecutable y regenerar
sudo chmod +x /etc/grub.d/40_custom
En Fedora:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
En Debian/Ubuntu/Mint:
sudo update-grub
Paso 6: Reiniciar y probar
sudo reboot
La nueva distro aparecerá al final del menú de arranque.
Arranque manual desde consola GRUB
Si algo falla, presiona c en el menú de Libreboot para obtener la consola GRUB.
Ver dispositivos disponibles
ls
Arrancar manualmente cargando grub.cfg de una distro
search --no-floppy --fs-uuid --set=root UUID_DEL_BOOT
configfile /grub/grub.cfg
Arrancar manualmente sin grub.cfg
set root=(nvme0n1,gptX)
linux /vmlinuz-VERSION root=/dev/mapper/NOMBRE_LUKS
initrd /initrd.img-VERSION
boot
Solución de problemas
La distro no generó grub.cfg
Desde tu distro principal, hacer chroot:
# Abrir LUKS si es cifrado
sudo cryptsetup open /dev/nvme0n1pY nombre-root
# Montar raíz (ajustar opciones según filesystem)
sudo mkdir -p /mnt/distro
sudo mount /dev/mapper/nombre-root /mnt/distro
# Si es btrfs con subvolumen:
# sudo mount -o subvol=@rootfs /dev/mapper/nombre-root /mnt/distro
# Montar /boot
sudo mount /dev/nvme0n1pX /mnt/distro/boot
# Montar sistemas virtuales
sudo mount --bind /dev /mnt/distro/dev
sudo mount --bind /dev/pts /mnt/distro/dev/pts
sudo mount --bind /proc /mnt/distro/proc
sudo mount --bind /sys /mnt/distro/sys
# Chroot y generar grub.cfg
sudo chroot /mnt/distro
update-grub # Debian/Ubuntu/Mint
# grub2-mkconfig -o /boot/grub2/grub.cfg # Fedora
exit
# Limpiar
sudo umount /mnt/distro/sys
sudo umount /mnt/distro/proc
sudo umount /mnt/distro/dev/pts
sudo umount /mnt/distro/dev
sudo umount /mnt/distro/boot
sudo umount /mnt/distro
sudo cryptsetup close nombre-root
Cae a initramfs (BusyBox) al arrancar
El initramfs no tiene instrucciones para desbloquear LUKS. Verificar crypttab y regenerar initramfs vía chroot:
# Dentro del chroot:
cat /etc/crypttab # Debe tener una entrada para el volumen LUKS
update-initramfs -u -k all # Debian/Ubuntu/Mint
# dracut --regenerate-all # Fedora
Notas sobre distros específicas
- Fedora: usa
/grub2/grub.cfg(no/grub/). Usa BLS por defecto. Si da problemas, editar/etc/default/gruby ponerGRUB_ENABLE_BLSCFG=false, luego regenerar. ConfigurarGRUB_TERMINAL=console. - Debian/Ubuntu/Mint: usa
/grub/grub.cfg. Formato tradicional, compatible sin ajustes. - Arch Linux: usa
/grub/grub.cfg. Compatible sin ajustes.
Notas sobre encriptación LUKS
- Libreboot 26.01+ soporta LUKS2 con argon2id nativamente (GRUB 2.14).
- El desbloqueo en GRUB es más lento que en el kernel (sin aceleración hardware). Si tarda mucho, ajustar parámetros KDF con:
cryptsetup luksConvertKey /dev/sdX --pbkdf argon2id --pbkdf-force-iterations 4 --pbkdf-memory 131072 - Si
/bootestá fuera del LUKS (como en esta guía), GRUB no necesita descifrar nada — el initramfs se encarga.
Referencia rápida
| Acción | Comando |
|---|---|
| Ver UUIDs | lsblk -f |
| Editar entradas custom | sudo hx /etc/grub.d/40_custom |
| Regenerar GRUB (Fedora) | sudo grub2-mkconfig -o /boot/grub2/grub.cfg |
| Regenerar GRUB (Debian/Mint) | sudo update-grub |
| Consola GRUB en Libreboot | Presionar c en el menú |
| Ver dispositivos en GRUB | ls |
| Regenerar initramfs (Debian) | sudo update-initramfs -u -k all |
| Regenerar initramfs (Fedora) | sudo dracut --regenerate-all |
| Abrir LUKS | sudo cryptsetup open /dev/nvme0n1pX nombre |
| Cerrar LUKS | sudo cryptsetup close nombre |