# Plan 01 — Pruebas en entorno controlado (VirtualBox) **Proyecto:** rm-MULTIBOOT **Autor:** Lic. Ricardo MONLA **Fecha de inicio:** 2026-06-06 **Estado general:** 🔄 En progreso — Fases 1 y 2 completadas, Fase 3 en progreso (v2.11.0) --- ## Objetivo Validar el comportamiento del script `rm-multiboot.sh` en un entorno controlado antes de usarlo en equipos reales. El entorno es una VM Linux en VirtualBox sobre el equipo local, donde se simula el flujo completo: setup, descarga de ISOs, generación de entradas GRUB y arranque desde el menú multiboot. --- ## Metodología — Mejora continua por fases Cada fase tiene: - **Tareas** con casillas para marcar al completarlas. - **Notas de ejecución** donde se registra lo que pasó realmente. - **Conclusión y hallazgos** que se completa al cerrar la fase. > Los hallazgos de cada fase son **input obligatorio** para revisar y ajustar > las fases siguientes antes de ejecutarlas. No se avanza a la fase N+1 sin > haber completado la sección de conclusión de la fase N. ``` Fase 1 ──→ [Conclusión] ──→ Replanteo Fase 2 Fase 2 ──→ [Conclusión] ──→ Replanteo Fase 3 ...y así sucesivamente ``` --- ## Fases --- ### FASE 1 — Preparación del entorno VirtualBox **Estado:** ✅ Completada **Objetivo:** Tener una VM Linux operativa con disco configurado para simular un equipo real con espacio libre disponible para crear la partición MULTIBOOT. #### Especificaciones de la VM — valores reales aplicados | Parámetro | Valor planificado | Valor aplicado | |---|---|---| | Nombre | rm-multiboot-test | rm-multiboot-test ✓ | | SO base | Debian 12 o Ubuntu 24.04 | Debian 13.5.0 (versión actual) | | RAM | 2048 MB | 2048 MB ✓ | | CPU | 2 núcleos | 2 núcleos ✓ | | Disco principal | 40 GB | 40 GB dinámico VDI ✓ | | Red | NAT | NAT ✓ | | Modo firmware | BIOS Legacy | BIOS Legacy ✓ | | ISO instalación | Debian 12 netinstall | Debian 13.5.0 netinstall (755 MB) | #### Tareas - [x] **1.1** Crear la VM en VirtualBox con las especificaciones indicadas - [x] **1.2** Instalar el SO base *(ver hallazgo #2 — disco usado al 100%, sin espacio libre)* - [x] **1.3** Verificar con `lsblk -f` — sda1 ext4 40GB al 3%, sda5 swap, sin espacio sin particionar - [x] **1.4** Instalar dependencias: git, curl, wget, parted, e2fsprogs ✓ - [x] **1.5** Acceso a internet desde la VM: `HTTP/2 301` ✓ - [x] **1.6** Tomar snapshot de VirtualBox con nombre `00-base-limpia` - [x] **1.7** Repositorio clonado en `/root/rm-MULTIBOOT` ✓ - [x] **1.8** SSH habilitado via VirtualBox Guest Additions + guestcontrol *(ver hallazgo #5)* #### Notas de ejecución ``` 2026-06-06 — Ejecución automatizada con VBoxManage - VirtualBox 7.1.12 ya instalado en el host - VM "rm-multiboot-test" creada (UUID: 62cec506-d91a-4ab4-91c7-dbf6e6216e72) - Disco VDI 40 GB dinámico creado y conectado al controlador SATA - Controlador IDE agregado para DVD - ISO Debian 13.5.0 netinstall descargada (755 MB) y conectada al DVD - Snapshot "00-base-limpia" tomado antes de iniciar la instalación (UUID snapshot: 7d07296a-707f-44b3-ada9-5eb9c42b1a69) HALLAZGO: La URL de Debian en isos.conf estaba desactualizada (12.9.0 → 13.5.0). Debian ya publicó la versión 13 (Trixie). Requiere actualizar isos.conf. --- Primera instalación (fallida) --- - Se instaló Debian 13.5.0 desde la GUI de VirtualBox - Al reiniciar: pantalla negra con cursor parpadeante = GRUB no instalado en MBR - Intento de SSH para rescue → sin respuesta (VM no arrancaba) - Diagnóstico: el instalador probablemente no instaló GRUB correctamente --- Reinstalación limpia --- - Se conectó la ISO al DVD y se reinició la VM - Reinstalación con opción "usar todo el disco" (sin espacio libre) - GRUB instalado correctamente en /dev/sda - VM arranca y login funciona: usuario rmonla / Debian 13 (Trixie) --- Intento de SSH (fallido) --- - Port forwarding host:2222 → VM:22 configurado y activo - SSH falla con "Permission denied" — Debian deshabilita PasswordAuthentication por defecto - Requiere habilitación manual desde consola de la VM (tarea 1.8) --- Instalación de VirtualBox Guest Additions --- - ISO /usr/share/virtualbox/VBoxGuestAdditions.iso conectada al DVD via VBoxManage - Montaje del DVD: mount /dev/cdrom /mnt (ejecutado via scancodes directos) - Instalador ejecutado: sh /mnt/VBoxLinuxAdditions.run - Resultado: instalación parcial — faltan linux-headers del kernel (kernel 6.12.90+deb13.1-amd64 sin headers instalados) - A pesar de la instalación parcial, VBoxManage guestcontrol funcionó --- Habilitación de SSH via guestcontrol --- - Problema con keymap: VM tiene layout 'es' (España), host tiene 'latam' Efecto: '/' → '-', "'" → '{', '-' → "'" - Solución: crear scripts en el host, copiarlos con 'guestcontrol copyto' y ejecutarlos con 'guestcontrol run --exe /usr/bin/sh -- /tmp/script.sh' - SSH configurado: PasswordAuthentication yes + PermitRootLogin yes - Conexión SSH verificada: root@127.0.0.1:2222 ✓ --- Estado final del disco (lsblk -f) --- NAME FSTYPE LABEL FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 ext4 34.1G 3% / ├─sda2 (extendida) └─sda5 swap [SWAP] HALLAZGO: Disco 100% particionado — el script debe manejar este escenario real. ``` #### Conclusión y hallazgos | # | Hallazgo | Impacto en fase siguiente | |---|---|---| | 1 | URLs de Debian en `isos.conf` desactualizadas (v12 → v13) | Actualizar catálogo antes de Fase 3 | | 2 | Instalación con "todo el disco" no deja espacio libre — **este es el escenario real más común** | El script debe detectar disco lleno y actuar: redimensionar partición existente o pedir al usuario que libere espacio. La Fase 2 prueba justamente eso | | 3 | Debian deshabilita SSH `PasswordAuthentication` por defecto | En producción no afecta al script; para pruebas se resolvió con guestcontrol | | 4 | Primera instalación de Debian no instaló GRUB en MBR → pantalla negra | En netinstall hay que confirmar el paso de instalación de GRUB explícitamente | | 5 | `keyboardputstring` de VBoxManage no maneja diferencia de keymaps (host:latam / VM:es) — chars especiales (`/`, `'`, `-`) llegan incorrectos | Solución definitiva: usar Guest Additions + `guestcontrol copyto` + `guestcontrol run` para automatización; `keyboardputscancode` con KP_Divide para rutas en último recurso | **¿Se ajusta el plan de la Fase 2?** ✅ Sí **Ajustes realizados:** La Fase 2 debe probarse con disco 100% particionado (sin espacio libre). El script debe detectar esta situación y ofrecer opciones al usuario (reducir partición existente, o usar disco secundario). Esto es el escenario real más común. --- ### FASE 2 — Ejecución del setup inicial **Estado:** ✅ Completada **Prerequisito:** Fase 1 completada y hallazgos revisados. **Objetivo:** Verificar que el wizard de setup detecta correctamente el sistema y maneja todos los escenarios de disco reales — incluyendo disco 100% particionado. > **Ajuste post-Fase 1:** La Fase 2 amplía su alcance para incluir la implementación > y prueba del motor de detección de espacio ampliado (Escenarios 1–4). #### Escenarios de disco que el script debe cubrir | # | Escenario | Acción del script | |---|---|---| | 1 | Espacio libre sin particionar ≥ 10 GB | Crear partición directamente | | 2 | Segundo disco virgen disponible | Crear MULTIBOOT en ese disco | | 3 | Partición no-raíz con filesystem con espacio libre | Redimensionar en caliente (stub pendiente) | | 4 | Solo espacio en filesystem raíz, disco 100% particionado | Instalar hook en initramfs para resize automático en el próximo boot — **sin Live CD** | #### Tareas - [x] **2.1** Ejecutar el script v2.3.2 y registrar la salida de detección - [x] **2.2** Verificar detección del sistema: - [x] Modo de arranque: **BIOS Legacy** ✓ - [x] SO detectado: **Debian GNU/Linux 13 (trixie)** ✓ - [x] Disco principal: **/dev/sda (40G)** ✓ - [x] Espacio libre: **no encontrado** → error registrado en log ✓ - [x] **2.3** Agregar sistema de log al script → `/var/log/rm-multiboot.log` (v2.4.0) - [x] **2.4** Implementar motor de detección de espacio ampliado (Escenarios 1–4) (v2.5.0) - [x] **2.5** Implementar Escenario 4: instalar hook de initramfs para resize automático sin Live CD (v2.6.0) - [x] **2.6** Probar flujo del Escenario 4 en la VM: ejecutar rm-multiboot.sh → instalar hook → reiniciar → verificar resize automático vía initramfs - [x] **2.7** Verificar resultado post-setup: ```bash lsblk -f grep MULTIBOOT /etc/fstab ls /mnt/multiboot/ cat /etc/grub.d/41_multiboot ``` - [x] **2.8** Verificar que GRUB fue actualizado sin errores: ```bash grep -i multiboot /boot/grub/grub.cfg ``` - [x] **2.9** Tomar snapshot: `01-post-setup` (UUID: 43d76b0d-7d27-43cf-912f-bd1542740d4c) - [x] **2.10** Implementar submenú `rm-MULTIBOOT` en GRUB (v2.8.0): las ISOs aparecen agrupadas bajo una entrada fija en el arranque, no mezcladas con las entradas del SO #### Notas de ejecución ``` 2026-06-06 — Ejecución del script v2.3.2 en la VM via SSH Salida real del script: ✓ Modo de arranque: BIOS Legacy ✓ Sistema operativo: Debian GNU/Linux 13 (trixie) ✓ Disco principal: /dev/sda ( 40G) ⚠ Partición MULTIBOOT: no encontrada → Opción 1: Preparar este equipo para multiboot ✗ No se encontró espacio libre ≥ 10 GB sin asignar en /dev/sda Para continuar necesitás liberar espacio con GParted u otra herramienta. La detección del sistema funciona perfectamente. El error de espacio libre es correcto — el disco está 100% particionado. El mensaje al usuario es claro pero la acción siguiente no está implementada en el script. --- Implementación motor de espacio (v2.4.0 → v2.5.0) --- - Sistema de log en /var/log/rm-multiboot.log - Motor de 4 escenarios: libre sin particionar / disco virgen / partición no-raíz / raíz --- Escenario 4 vía initramfs (v2.6.0) --- - El script instaló hooks en /etc/initramfs-tools/ + regeneró el initramfs - Al reiniciar, el initramfs ejecutó: e2fsck + resize2fs + parted + mkfs.ext4 - Problemas encontrados y resueltos durante la prueba: * /tmp no existe en el initramfs de Debian 13 → usar /run/ * local-premount corre antes de wait_for_root: dispositivo no disponible → loop de espera 30s * parted -s falla con "partition in use" → usar printf "Yes\n" | parted ---pretend-input-tty * Descalce de 1 MiB entre filesystem y partición (parted alinea antes del límite) → +1 MiB extra * mkfs.ext4: applet not found en busybox → usar mke2fs -t ext4 como fallback * mkpart falla por partición extendida adyacente → printf "Yes\n" para aceptar "closest location" * Cleanup del local-bottom no borró los archivos (path rootmnt no funcionó como esperado) --- Estado post-Escenario 4 (verificado con SSH) --- lsblk -f: sda1 ext4 23552MiB 20G free / sda2 (extendida) sda3 ext4 LABEL=MULTIBOOT UUID=8b8a9497 13.9G free /mnt/multiboot sda5 swap /etc/fstab: UUID=8b8a9497... /mnt/multiboot ext4 defaults,noatime 0 2 ✓ /etc/grub.d/41_multiboot: instalado y ejecutable ✓ /boot/grub/grub.cfg: ### BEGIN/END /etc/grub.d/41_multiboot ### ✓ /mnt/multiboot/isos/ y grub/entries/ creados ✓ --- Arreglos posteriores (v2.7.0) --- - _complete_setup_if_needed(): completa fstab + grub hook post-reboot + limpia hooks residuales - local-bottom cleanup mejorado: busca mountpoint correcto, agrega logging detallado ``` #### Conclusión y hallazgos | # | Hallazgo | Impacto en fase siguiente | |---|---|---| | 1 | El script solo maneja espacio libre sin particionar. Con disco 100% usado sale con error y deriva al usuario a GParted. Falta implementar la lógica de redimensionamiento automático. | Antes de continuar la Fase 2, hay que agregar esta funcionalidad al script | | 2 | La detección del sistema (BIOS/UEFI, OS, disco) funciona correctamente en la VM | Sin impacto negativo | | 3 | El script no tiene sistema de log — toda la información se pierde al cerrar | Agregar log a `/var/log/rm-multiboot.log` en la próxima versión del script | **¿Se ajusta el plan de la Fase 3?** ✅ Sí **Ajustes realizados:** Actualizar isos.conf (URLs Debian v12 → v13) antes de ejecutar la Fase 3. El catálogo en GitHub usa la URL de descarga de Debian 13.5.0 que ya fue verificada. --- ### FASE 3 — Prueba de catálogo y descarga de ISOs **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 (Gitea local), el progreso en pantalla (barra, %, MB/s, ETA) y la generación correcta de entradas GRUB. > **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 - [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** 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 ``` 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 | |---|---|---| | 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?** ✅ Sí **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 (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** 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 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 ``` [ espacio para registrar lo que ocurrió ] ``` #### Conclusión y hallazgos | # | Hallazgo | Impacto en fase siguiente | |---|---|---| | — | *(pendiente)* | — | **¿Se ajusta el plan de la Fase 5?** 🔲 Sí / 🔲 No **Ajustes realizados:** *(ninguno hasta completar esta fase)* --- ### FASE 5 — Prueba de escenarios avanzados y condiciones adversas **Estado:** 🔲 Pendiente **Prerequisito:** Fase 4 completada y hallazgos revisados. **Objetivo:** Validar el comportamiento del script ante escenarios reales de mayor complejidad: sin red, múltiples discos, tabla GPT, modo UEFI, segunda ejecución. > **Ajuste post-Fase 2:** "Disco sin espacio libre" ya NO es caso borde — > es el escenario base implementado en Fase 2. Esta fase prueba escenarios > adicionales no cubiertos en fases anteriores. #### Tareas — Sin conexión a internet - [ ] **5.1** Deshabilitar la red de la VM en VirtualBox - [ ] **5.2** Ejecutar el script y elegir "Descargar desde catálogo" - [ ] **5.3** Verificar que cae al fallback local (`isos.conf` junto al script) - [ ] **5.4** Rehabilitar la red #### Tareas — Gestión de ISOs - [ ] **5.5** Probar "Ver ISOs disponibles" y verificar que muestra estado correcto - [ ] **5.6** Eliminar una ISO desde el menú y verificar: ```bash ls /mnt/multiboot/isos/ ls /mnt/multiboot/grub/entries/ grep -c menuentry /boot/grub/grub.cfg ``` - [ ] **5.7** Reiniciar y verificar que la ISO eliminada ya no aparece en GRUB #### Tareas — Segundo disco (Escenario 2) - [ ] **5.8** Agregar un segundo disco VDI a la VM desde el host - [ ] **5.9** Verificar que el script detecta el segundo disco y lo ofrece como destino - [ ] **5.10** Completar el setup usando el segundo disco #### Tareas — Modo UEFI - [ ] **5.11** Restaurar snapshot `00-base-limpia` - [ ] **5.12** Cambiar la VM a modo EFI en VirtualBox (Configuración → Sistema → Habilitar EFI) - [ ] **5.13** Reinstalar el SO base en modo UEFI - [ ] **5.14** Repetir el setup con `rm-multiboot.sh` y verificar detección UEFI - [ ] **5.15** Verificar que el hook de GRUB funciona igual en UEFI #### Notas de ejecución ``` [ espacio para registrar lo que ocurrió ] ``` #### Conclusión y hallazgos | # | Hallazgo | Impacto en fase siguiente | |---|---|---| | — | *(pendiente)* | — | **¿Se ajusta el plan de la Fase 6?** 🔲 Sí / 🔲 No **Ajustes realizados:** *(ninguno hasta completar esta fase)* --- ### FASE 6 — Correcciones, optimizaciones y cierre **Estado:** 🔲 Pendiente **Prerequisito:** Fases 1–5 completadas y hallazgos consolidados. **Objetivo:** Aplicar todos los fixes identificados, re-validar los casos que fallaron y documentar el estado final del script para uso en producción. #### Tareas - [ ] **6.1** Consolidar todos los bugs encontrados en las fases anteriores - [ ] **6.2** Priorizar fixes por impacto (bloqueante / menor / cosmético) - [ ] **6.3** Implementar y commitear cada fix por separado con mensaje descriptivo - [ ] **6.4** Re-ejecutar los casos que fallaron en las fases anteriores - [ ] **6.5** Actualizar `isos.conf` si se detectaron URLs rotas o desactualizadas - [ ] **6.6** Actualizar versión del script según la magnitud de los cambios - [ ] **6.7** Hacer push final al repositorio - [ ] **6.8** Documentar el estado "apto para uso en equipos reales" o las condiciones pendientes #### Notas de ejecución ``` [ espacio para registrar lo que ocurrió ] ``` #### Conclusión y hallazgos — Cierre del plan | # | Hallazgo / Resultado | Acción tomada | |---|---|---| | — | *(pendiente)* | — | **Bugs encontrados:** 0 *(actualizar)* **Bugs resueltos:** 0 *(actualizar)* **Pendientes para próximo ciclo:** *(ninguno hasta completar)* --- ## Registro de versiones del script durante las pruebas | Fase | Versión del script | Cambios relevantes | |---|---|---| | Inicio | 2.3.2 | Versión inicial de pruebas | | Fase 2 | 2.4.0 | Sistema de log en `/var/log/rm-multiboot.log` | | 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 | --- ## Checklist general de avance - [x] Fase 1 — Entorno VirtualBox preparado - [x] Fase 2 — Setup inicial validado - [~] 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