feat: initial multiboot manager script and research doc

Script interactivo para configurar multiboot desde disco interno.
Auto-detecta sistema, crea partición MULTIBOOT en espacio libre,
gestiona ISOs con entradas GRUB automáticas (loopback + fallback).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ricardo Monla
2026-06-06 16:55:22 -03:00
co-authored by Claude Sonnet 4.6
commit 489af9b387
3 changed files with 964 additions and 0 deletions
+253
View File
@@ -0,0 +1,253 @@
# Multiboot Nativo desde HD — Investigación y Plan
## Objetivo
Reemplazar el pendrive booteable con ISOs por una partición del disco duro interno que permita arrancar distintas ISOs de instalación de Linux directamente, sin depender de hardware externo.
**Flujo deseado:**
```
Reiniciar PC → Menú GRUB → Elegir ISO → Instalar distro en la PC de turno
```
---
## Panorama de Enfoques
### Opción A — GRUB2 Loopback Manual
**¿Qué es?** GRUB2 incluye soporte nativo para montar ISOs en tiempo de arranque (loopback) y pasar el kernel/initrd directamente desde el archivo `.iso` sin descomprimirlo.
**Cómo funciona:**
1. La ISO vive en cualquier partición que GRUB pueda leer (ext4, NTFS, FAT32)
2. GRUB monta la ISO como loop device en tiempo de boot
3. Se carga el kernel + initrd extraídos de adentro de la ISO
4. El kernel recibe un parámetro que le indica dónde está la ISO para continuar
**Requisito clave:** La ISO debe incluir un archivo `boot/grub/loopback.cfg` — la mayoría de distros modernas lo tienen (Ubuntu, Debian, Fedora, Arch, etc.).
**Ejemplo de entrada GRUB:**
```grub
menuentry "Ubuntu 24.04 LTS" {
set isofile="/isos/ubuntu-24.04-desktop-amd64.iso"
loopback loop (hd0,3)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash
initrd (loop)/casper/initrd
}
```
**Pros:**
- Sin dependencias externas — GRUB puro
- Control total sobre el menú
- Funciona con BIOS/Legacy y UEFI (con Secure Boot desactivado)
**Contras:**
- Cada ISO requiere una entrada manual en grub.cfg
- Sintaxis varía entre distros (Ubuntu usa `casper`, Fedora usa `rd.live.image`, Arch es diferente)
- Mantenimiento manual al agregar ISOs
---
### Opción B — GLIM (GRUB2 Live ISO Multiboot)
**Repo:** https://github.com/thias/glim
**¿Qué es?** Colección de scripts y configuraciones GRUB prehechas para arrancar múltiples ISOs. Detecta la distro por nombre de archivo y aplica la configuración correcta automáticamente.
**Estructura de uso:**
```
/boot/isos/
ubuntu/ ← Ubuntu ISOs van aquí
debian/ ← Debian ISOs van aquí
fedora/ ← Fedora ISOs van aquí
arch/ ← Arch Linux ISOs van aquí
...
```
**Soporte de particiones:**
- Partición 1: FAT32, etiqueta `GLIM` (100MB mínimo, para el bootloader)
- Partición 2: ext4, etiqueta `GLIMISO` (para ISOs > 4GB que no caben en FAT32)
**Pros:**
- Agregar ISO = copiar archivo a la carpeta correcta
- Soporta > 60 distros out-of-the-box
- Maneja automáticamente las diferencias de sintaxis por distro
**Contras:**
- Diseñado para USB, adaptarlo a HD interno requiere ajustes
- Requiere partición FAT32 separada para el bootloader GLIM
- Puede coexistir con un OS existente, pero necesita configuración adicional
---
### Opción C — Ventoy en Disco Interno
**Repo:** https://github.com/ventoy/Ventoy
**¿Qué es?** Herramienta que convierte un disco (o partición) en un multiboot que simplemente copia ISOs y listo.
**Instalación en HD interno:**
```bash
# Instalar Ventoy en un disco dedicado o partición reservada
sudo sh Ventoy2Disk.sh -I /dev/sdX
# Luego copiar ISOs a la partición Ventoy
```
**Pros:**
- La más simple: copiar ISO → aparece en el menú al reiniciar
- Soporta > 1300 sistemas operativos
- Funciona con BIOS y UEFI (incluyendo Secure Boot)
- Soporta ISO, WIM, IMG, VHD, EFI
**Contras / Riesgo importante:**
- Ventoy toma control del MBR/GPT del disco donde se instala
- Si se instala en el disco del OS actual: **riesgo de romper el boot existente**
- La solución más segura es un **disco físico separado** o un disco dedicado solo a Ventoy
- Durante la instalación de un OS destino, el installer puede confundirse y seleccionar el disco Ventoy
**Mitigación:** Reservar un disco SSD secundario o una segunda unidad NVMe solo para Ventoy.
---
### Opción D — grml-rescueboot (paquete Debian/Ubuntu)
**¿Qué es?** Paquete que se integra con `update-grub`. Escanea `/boot/grml/` y agrega entradas automáticamente al GRUB del sistema.
```bash
sudo apt install grml-rescueboot
# Copiar ISO a /boot/grml/
sudo update-grub # agrega la entrada automáticamente
```
**Pros:** Extremadamente simple, integrado con el sistema
**Contras:** Diseñado principalmente para ISOs Grml, soporte limitado para otras distros
---
## Comparativa Rápida
| Criterio | A: GRUB Manual | B: GLIM | C: Ventoy HD | D: grml-rescueboot |
|---|---|---|---|---|
| Simplicidad de uso | Baja | Media | Alta | Alta |
| Agregar nueva ISO | Manual | Copiar a carpeta | Copiar a partición | Copiar + update-grub |
| Soporte de distros | Todas* | ~60 | +1300 | Grml + pocas |
| Riesgo para OS actual | Bajo | Bajo | **Alto** | Bajo |
| UEFI Secure Boot | No** | No** | Sí | No** |
| Scripteabilidad | Total | Alta | Alta | Media |
*con entrada GRUB correcta
**requiere desactivar Secure Boot
---
## Recomendación: Plan en 3 Fases
### Fase 1 — Estructura Base (mínimo viable)
**Arquitectura elegida:** Partición dedicada ext4 en el disco actual + GRUB2 Loopback + script de gestión
**¿Por qué esta combinación?**
- Sin riesgo para el OS actual (es solo una partición nueva)
- Control total (no dependemos de proyectos externos)
- Scripteabilidad completa para automatizar el flujo
- Compatible con BIOS y UEFI
**Pasos:**
1. **Crear partición dedicada** (2050 GB, ext4, etiqueta `MULTIBOOT`)
```bash
# Identificar disco y espacio libre
lsblk
sudo fdisk /dev/sdX # o parted / gparted
sudo mkfs.ext4 -L MULTIBOOT /dev/sdXN
```
2. **Punto de montaje permanente** en `/etc/fstab`:
```
LABEL=MULTIBOOT /mnt/multiboot ext4 defaults,noatime 0 2
```
3. **Estructura de carpetas:**
```
/mnt/multiboot/
isos/
ubuntu/
debian/
fedora/
arch/
grub/
grub.cfg ← configuración principal
entries/ ← un .cfg por ISO
```
4. **Entradas GRUB:** Agregar a `/etc/grub.d/40_custom` o crear `/etc/grub.d/41_multiboot`:
```grub
menuentry "--- Multiboot ISOs ---" { echo }
source (hd0,X)/grub/grub.cfg
```
### Fase 2 — Script de Gestión (`add-iso.sh`)
Script que dado un archivo ISO:
1. Lo copia a la partición en la carpeta correcta según la distro detectada
2. Genera automáticamente la entrada GRUB para esa ISO
3. Ejecuta `sudo update-grub` para registrarla
```bash
#!/bin/bash
# add-iso.sh <ruta-al-iso>
# Uso: ./add-iso.sh ~/downloads/ubuntu-24.04.iso
```
Detección de distro por nombre: `ubuntu*` → carpeta ubuntu, `debian*` → debian, etc.
### Fase 3 — Mejoras
- Script `list-isos.sh`: listar ISOs disponibles con info de tamaño y fecha
- Script `remove-iso.sh`: eliminar ISO y su entrada GRUB
- Soporte para ISOs con `loopback.cfg` nativo (delegar la config a la propia ISO)
- Considerar migrar a **GLIM** si el número de distros crece mucho
---
## Consideraciones Importantes
### UEFI vs BIOS Legacy
- Si la PC usa **UEFI**, hay que asegurarse de que **Secure Boot esté desactivado** para que GRUB cargue ISOs de terceros
- En UEFI, el GRUB de la partición EFI existente es el que controla el arranque
### ISOs que soportan loopback.cfg (recomendadas)
- Ubuntu / Xubuntu / Kubuntu / Lubuntu
- Debian (live e installer)
- Linux Mint
- Fedora Workstation
- openSUSE
- Manjaro
- Kali Linux
### ISOs con soporte limitado o especial
- Arch Linux: no tiene loopback.cfg, requiere entrada GRUB personalizada
- Windows ISOs: requieren enfoque diferente (memdisk o Ventoy)
- Alpine Linux: funciona pero con parámetros especiales
### Riesgo de confusión del installer
Cuando se arranca una ISO de instalación desde el HD interno y se va a instalar en **otra PC** (escenario típico del usuario), no hay problema porque la ISO corre en la PC fuente como live environment. El riesgo existe si se intenta instalar en la **misma PC** del multiboot.
---
## Próximos Pasos Concretos
1. **Determinar la máquina host:** ¿Qué disco/partición tiene espacio libre? (`lsblk -f`)
2. **Elegir modo boot:** ¿BIOS/Legacy o UEFI? (`[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS`)
3. **Crear la partición MULTIBOOT** con el espacio disponible
4. **Implementar `add-iso.sh`** con soporte inicial para Ubuntu, Debian y Fedora
5. **Probar el boot** con una ISO conocida antes de ampliar
---
## Fuentes y Referencias
- [Ubuntu Wiki — GRUB2 ISOBoot](https://help.ubuntu.com/community/Grub2/ISOBoot)
- [ArchWiki — Multiboot USB Drive](https://wiki.archlinux.org/title/Multiboot_USB_drive)
- [GLIM en GitHub (thias)](https://github.com/thias/glim)
- [Ventoy — GitHub oficial](https://github.com/ventoy/Ventoy)
- [LinuxBabe — Boot ISO desde GRUB2](https://www.linuxbabe.com/desktop-linux/boot-from-iso-files-using-grub2-boot-loader)
- [DEV.to — Boot desde ISO sin USB](https://dev.to/oryaacov/how-to-boot-from-iso-file-using-grub-internal-hdd-without-external-usbcd-4a09)
- [grml-rescueboot — GitHub](https://github.com/grml/grml-rescueboot)
- [Loopback.cfg — Super Grub Disk Wiki](https://www.supergrubdisk.org/wiki/Loopback.cfg)