docs: actualizar plan Fase 3 con hallazgos y nota sobre Netinstall en isos.conf

- Estado general actualizado a v2.11.0
- Fase 3: en progreso — tareas ejecutadas marcadas, notas detalladas de ejecución
- Hallazgos documentados: Netinstall incompatible con loopback, loopback.cfg falso
  en Linux Mint, initrd.lz, prompts ask/confirm con ANSI literal
- Fase 4 ajustada: elimina Netinstall, agrega ISOs Live y prueba de regenerar entradas
- Registro de versiones: v2.8.0 a v2.11.0 documentadas
- isos.conf: nota de advertencia en Debian Netinstall (no apta para loopback en ext4)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ricardo Monla
2026-06-07 01:09:09 -03:00
co-authored by Claude Sonnet 4.6
parent de43263e8e
commit 93ec80b690
2 changed files with 121 additions and 39 deletions
+118 -39
View File
@@ -3,7 +3,7 @@
**Proyecto:** rm-MULTIBOOT
**Autor:** Lic. Ricardo MONLA
**Fecha de inicio:** 2026-06-06
**Estado general:** 🔄 En progreso — Fases 1 y 2 completadas, Fase 3 pendiente (v2.7.0)
**Estado general:** 🔄 En progreso — Fases 1 y 2 completadas, Fase 3 en progreso (v2.11.0)
---
@@ -255,73 +255,148 @@ El mensaje al usuario es claro pero la acción siguiente no está implementada e
### FASE 3 — Prueba de catálogo y descarga de ISOs
**Estado:** 🔲 Pendiente
**Estado:** 🔄 En progreso — ISOs descargadas, bugs encontrados y corregidos; pendiente re-test con ISOs Live
**Prerequisito:** Fase 2 completada y hallazgos revisados.
**Objetivo:** Verificar la descarga desde el catálogo (GitHub), el progreso en
**Objetivo:** Verificar la descarga desde el catálogo (Gitea local), el progreso en
pantalla (barra, %, MB/s, ETA) y la generación correcta de entradas GRUB.
> **Estrategia:** Empezar con una ISO pequeña (Alpine ~200 MB) para ciclar
> rápido. Agregar una ISO mediana (Debian netinstall ~700 MB) en segunda
> instancia.
> **Ajuste post-ejecución:** La estrategia original era empezar con Alpine.
> Se cambió a Debian Netinstall (liviana, ~755 MB) + Linux Mint Xfce (Drive).
> HALLAZGO CRÍTICO: Debian Netinstall NO es apta para loopback — ver hallazgos.
> La próxima ronda debe usar ISOs Live (Debian Live Xfce o Kubuntu 24.04).
#### Tareas
- [ ] **3.1** Desde el menú → Agregar ISO → Descargar desde catálogo
- [ ] **3.2** Verificar que el catálogo se carga desde GitHub (mensaje "GitHub — actualizado")
- [ ] **3.3** Seleccionar **Alpine Linux** (ISO pequeña para prueba rápida)
- [ ] **3.4** Verificar que se muestran correctamente durante la descarga:
- [ ] Barra de progreso `[####----]`
- [ ] Porcentaje `%`
- [ ] MB actuales / MB totales
- [ ] Velocidad en MB/s
- [ ] ETA en `mm:ss`
- [ ] **3.5** Verificar post-descarga:
```bash
ls -lh /mnt/multiboot/isos/
cat /mnt/multiboot/grub/entries/*.cfg
grep -i alpine /boot/grub/grub.cfg
```
- [ ] **3.6** Repetir descarga con **Debian 12 Netinstall**
- [ ] **3.7** Probar descarga de la ISO de Google Drive (Linux Mint desde Drive)
- [x] **3.1** Desde el menú → Agregar ISO → Descargar desde catálogo
- [x] **3.2** Verificar que el catálogo se carga desde Gitea local (sin GitHub en la VM)
- [x] **3.3** Implementar menú de catálogo en dos niveles: categoría → ISOs (v2.9.0)
- [x] **3.4** Descargar **Debian 13.5 Netinstall** (~755 MB) desde la categoría `rm-ISOs`
- [x] **3.5** Descargar **Linux Mint 22.1 Xfce** desde Google Drive (categoría `rm-ISOs`)
- [x] **3.6** Verificar que el catálogo se muestra con secciones y la ISO ya descargada aparece marcada
- [ ] **3.7** Verificar barra de progreso: `[####----]`, %, MB, MB/s, ETA *(parcial — visible pero no validado exhaustivamente)*
- [ ] **3.8** Verificar que "ya descargada" aparece si se intenta descargar de nuevo
- [ ] **3.9** Tomar snapshot: `02-post-descargas`
- [ ] **3.9** Repetir con **Debian Live Xfce** (ISO apta para loopback — pendiente)
- [ ] **3.10** Probar **Regenerar entradas GRUB** desde el menú (opción 4) *(pendiente)*
- [ ] **3.11** Tomar snapshot: `02-post-descargas` *(pendiente — esperar a ISOs Live)*
#### Notas de ejecución
```
[ espacio para registrar lo que ocurrió ]
2026-06-06 — Ejecución interactiva en la VM (teclado virtual via VBoxManage scancodes)
Estado de la VM al iniciar Fase 3: snapshot 01-post-setup activo (MULTIBOOT configurado,
sin ISOs, GRUB actualizado).
--- Mejoras implementadas antes del test ---
v2.8.0: submenú rm-MULTIBOOT en GRUB — las ISOs se agrupan bajo una entrada fija
"rm-MULTIBOOT [N ISOs]" en lugar de mezclarse con las entradas del SO.
El hook /etc/grub.d/41_multiboot genera el submenu dinámicamente leyendo los .cfg.
v2.9.0: catálogo en dos niveles — primero se elige categoría, luego se eligen ISOs.
Mejora la UX al no mostrar ~30 ISOs en pantalla simultáneamente.
isos.conf parseado por secciones "# ──" para detectar categorías.
Se agregó sección "rm-ISOs" con las ISOs de prueba prioritarias.
Fix ask()/confirm(): los prompts usaban read -rp que NO interpreta ANSI escapes.
Resultado: se mostraban literales "\033[1m" y "\033[0m" en pantalla.
Fix: cambiar a printf "%s" "$prompt" seguido de read -r por separado.
--- Descarga Debian 13.5 Netinstall ---
- Selección: categoría rm-ISOs → Debian 13.5 Netinstall
- Descarga exitosa (~755 MB)
- Entrada GRUB generada con rutas /install.amd/vmlinuz + /install.amd/initrd.gz
BUG ENCONTRADO (v2.10.0): La ISO fue montada e inspeccionada en loopback.
loopback.cfg: NO existe → se usó fallback genérico Debian.
El fallback para *debian* usaba rutas /live/vmlinuz (ISO live).
Para Netinstall las rutas son /install.amd/vmlinuz y /install.amd/initrd.gz.
Fix: agregar regla *netinst*|*netinstall* ANTES de la regla *debian* en el fallback.
--- Arranque Debian Netinstall (FALLIDO — limitación fundamental) ---
- Se reinició la VM y se seleccionó la entrada Netinstall en el submenú rm-MULTIBOOT.
- Error al arrancar: "Detectar y montar el medio de instalación"
El initramfs del instalador Netinstall NO incluye el driver ext4.
iso-scan busca la ISO en dispositivos reconocibles, pero no puede montar
la partición MULTIBOOT (ext4) → nunca encuentra la ISO.
- CONCLUSIÓN: Debian Netinstall es INCOMPATIBLE con el sistema de loopback en ext4.
No hay workaround — es una limitación del initramfs del instalador oficial.
Las ISOs Live de Debian SÍ son compatibles: tienen loopback.cfg real y usan
casper/live que sí incluye soporte ext4 en el initramfs.
- ACCIÓN: marcar Debian Netinstall como "no apta para loopback" en isos.conf.
--- Descarga Linux Mint 22.1 Xfce desde Google Drive ---
- Selección: categoría rm-ISOs → Linux Mint 22.1 Xfce (Drive)
- Descarga vía gdown exitosa.
- Entrada GRUB generada.
BUG ENCONTRADO (v2.10.0) — loopback.cfg FALSO en Linux Mint:
Linux Mint 22.1 incluye /boot/grub/loopback.cfg pero su contenido es:
source /boot/grub/grub.cfg
Esto es un loopback.cfg falso — no contiene entradas reales, solo redirige al GRUB
del host. El script lo detectaba como "tiene loopback.cfg" y generaba una entrada
que invoca configfile, que falla al bootear.
Fix: validar que loopback.cfg tenga contenido real (no solo "source", comentarios
o líneas vacías). Si es falso, usar el fallback.
BUG ENCONTRADO (v2.10.0) — initrd.lz en lugar de initrd:
Linux Mint 22.1 usa /casper/initrd.lz como initramfs (no /casper/initrd ni initrd.img).
El fallback genérico usaba /casper/initrd → entrada GRUB rota.
Fix: al montar la ISO, inspeccionar /casper/ buscando initrd.lz, initrd.img, initrd
en ese orden de prioridad. Pasar el nombre encontrado a generate_grub_entry_fallback().
v2.11.0: opción "Regenerar entradas GRUB" agregada al menú principal (opción 4).
Re-inspecciona todas las ISOs en /mnt/multiboot/isos/ y regenera sus .cfg
aplicando las correcciones actuales. Útil cuando se actualizan las reglas de detección.
--- Estado final de la VM ---
- ISOs en /mnt/multiboot/isos/: debian-13.5.0-netinst.iso, linux-mint-xfce.iso
- Entradas .cfg regeneradas con las correcciones de v2.10.0
- VM: restaurada al snapshot "01-debian-instalado" (sin MULTIBOOT, SSH activo)
Razón: el Netinstall no arrancó, y las ISOs Live apropiadas aún no se descargaron.
La Fase 3 continúa desde este snapshot en la próxima sesión.
```
#### Conclusión y hallazgos
| # | Hallazgo | Impacto en fase siguiente |
|---|---|---|
| | *(pendiente)* | — |
| 1 | **Debian Netinstall es incompatible con loopback en ext4**: el initramfs del instalador no incluye driver ext4 → iso-scan no puede encontrar la ISO. Limitación fundamental, sin workaround. | Usar únicamente ISOs Live para Debian en Fase 4. Marcar Netinstall como no apta en isos.conf. |
| 2 | **Linux Mint 22.1 tiene loopback.cfg falso**: contiene solo `source /boot/grub/grub.cfg`. El script lo confundía con un loopback válido y generaba una entrada rota. | Fix implementado en v2.10.0: validación real del contenido de loopback.cfg |
| 3 | **Linux Mint 22.1 usa initrd.lz** (no initrd ni initrd.img). El fallback genérico generaba una ruta inexistente `/casper/initrd`. | Fix implementado en v2.10.0: detección dinámica del initrd montando la ISO |
| 4 | **read -rp no interpreta ANSI escapes**: los prompts de `ask()` y `confirm()` mostraban códigos de color como texto literal. | Fix implementado antes del test: `printf` + `read -r` por separado |
| 5 | El menú de catálogo sin categorías es inmanejable con ~30 ISOs. | Fix implementado en v2.9.0: menú de dos niveles categoría → ISOs |
**¿Se ajusta el plan de la Fase 4?** 🔲 / 🔲 No
**Ajustes realizados:** *(ninguno hasta completar esta fase)*
**¿Se ajusta el plan de la Fase 4?**
**Ajustes realizados:** Eliminar "Debian Netinstall" de la Fase 4 y reemplazar con ISOs Live. Las ISOs a probar son: Debian Live Xfce + Linux Mint Xfce (con entradas GRUB corregidas). Agregar prueba de `regenerar_entradas_grub()` (v2.11.0).
---
### FASE 4 — Prueba de arranque desde GRUB
**Estado:** 🔲 Pendiente
**Prerequisito:** Fase 3 completada y hallazgos revisados.
**Prerequisito:** Fase 3 completada (incluyendo re-test con ISOs Live) y hallazgos revisados.
**Objetivo:** Reiniciar la VM y verificar que el menú GRUB muestra las ISOs
y que al menos una arranca correctamente en modo live.
> **Ajuste post-Fase 3:** Debian Netinstall queda fuera de scope — es incompatible con
> loopback en ext4 (limitación fundamental del initramfs del instalador). Las ISOs a
> probar son ISOs Live: Debian Live Xfce y Linux Mint 22.1 Xfce.
#### Tareas
- [ ] **4.1** Reiniciar la VM
- [ ] **4.2** Verificar que el menú GRUB muestra la entrada `rm-MULTIBOOT [N ISOs]` y que al seleccionarla aparece el submenú con las ISOs descargadas
- [ ] **4.3** Bootear **Alpine Linux** desde el menú GRUB
- [ ] **4.1** Descargar **Debian Live Xfce** (~3 GB) desde catálogo `rm-ISOs`
- [ ] **4.2** Ejecutar `Regenerar entradas GRUB` (opción 4) para aplicar correcciones v2.10.0 a todas las ISOs
- [ ] **4.3** Reiniciar la VM
- [ ] **4.4** Verificar que el menú GRUB muestra la entrada `rm-MULTIBOOT [N ISOs]` y que al seleccionarla aparece el submenú correcto
- [ ] **4.5** Bootear **Debian Live Xfce** desde el menú GRUB
- [ ] Carga el kernel sin error
- [ ] Llega al prompt de login live
- [ ] **4.4** Reiniciar y bootear **Debian Netinstall** desde el menú GRUB
- [ ] Aparece el instalador de Debian
- [ ] **4.5** Documentar cualquier error de GRUB (mensajes, pantalla negra, kernel panic)
- [ ] **4.6** Si alguna ISO falla, registrar el mensaje de error exacto y la entrada `.cfg` generada
- [ ] **4.7** Tomar snapshot: `03-post-boot-test`
- [ ] Llega al entorno live (escritorio o prompt)
- [ ] **4.6** Reiniciar y bootear **Linux Mint 22.1 Xfce** desde el menú GRUB
- [ ] Carga el kernel sin error con initrd.lz detectado correctamente
- [ ] Llega al entorno live
- [ ] **4.7** Documentar cualquier error de GRUB (mensajes, pantalla negra, kernel panic)
- [ ] **4.8** Si alguna ISO falla, registrar el mensaje de error exacto y la entrada `.cfg` generada
- [ ] **4.9** Tomar snapshot: `02-post-boot-test`
#### Notas de ejecución
@@ -445,6 +520,10 @@ fallaron y documentar el estado final del script para uso en producción.
| Fase 2 | 2.5.0 | Motor de detección de 4 escenarios de disco |
| Fase 2 | 2.6.0 | Escenario 4: resize vía initramfs, sin Live CD |
| Fase 2 | 2.7.0 | `_complete_setup_if_needed()` + cleanup robusto del local-bottom |
| Fase 3 | 2.8.0 | Submenú `rm-MULTIBOOT` en GRUB — ISOs agrupadas bajo entrada fija |
| Fase 3 | 2.9.0 | Catálogo en dos niveles: categoría → ISOs; sección `rm-ISOs` en isos.conf |
| Fase 3 | 2.10.0 | Detección dinámica de initrd (initrd.lz/initrd.img/initrd); validación real de loopback.cfg; regla netinstall separada en fallback GRUB |
| Fase 3 | 2.11.0 | Opción `Regenerar entradas GRUB` (menú opción 4): re-inspecciona todas las ISOs y regenera .cfg |
---
@@ -452,7 +531,7 @@ fallaron y documentar el estado final del script para uso en producción.
- [x] Fase 1 — Entorno VirtualBox preparado
- [x] Fase 2 — Setup inicial validado
- [ ] Fase 3 — Descargas y catálogo validados
- [~] Fase 3 — Descargas y catálogo (en progreso — ISOs Live pendientes)
- [ ] Fase 4 — Arranque GRUB validado
- [ ] Fase 5 — Casos borde validados
- [ ] Fase 6 — Correcciones aplicadas y plan cerrado
+3
View File
@@ -16,6 +16,9 @@
# =============================================================================
# ── rm-ISOs ───────────────────────────────────────────────────────────────────
# NOTA: Debian Netinstall NO es apta para loopback en ext4 — el initramfs del
# instalador no incluye driver ext4, iso-scan no puede encontrar la ISO.
# Usar ISOs Live de Debian en su lugar (tienen loopback.cfg real y casper con ext4).
Debian 13.5 Netinstall | https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.5.0-amd64-netinst.iso
Kubuntu 24.04 LTS | https://cdimage.ubuntu.com/kubuntu/releases/24.04/release/kubuntu-24.04.1-desktop-amd64.iso
Linux Mint 22.1 Cinnamon | https://mirrors.edge.kernel.org/linuxmint/stable/22.1/linuxmint-22.1-cinnamon-64bit.iso