Commit Graph
12 Commits
Author SHA1 Message Date
Ricardo MonlaandClaude Sonnet 4.6 c2cd1e4240 v2.9.0: menú de catálogo en dos niveles — categoría → ISOs
download_from_catalog() refactorizada en 4 funciones:
  _catalog_load()             — parsea isos.conf agrupando por sección # ──
  _catalog_menu_categorias()  — muestra las categorías con conteo de ISOs
  _catalog_menu_isos(cat)     — muestra solo las ISOs de la categoría elegida
  _catalog_do_download()      — ejecuta la descarga (sin cambios funcionales)

El usuario elige primero la categoría (rm-ISOs, Debian, Ubuntu, etc.)
y luego ve solo las ISOs de esa categoría, evitando la lista larga.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 00:08:37 -03:00
Ricardo MonlaandClaude Sonnet 4.6 fd586f22f0 v2.8.0: submenú rm-MULTIBOOT en GRUB en lugar de entradas sueltas
El hook 41_multiboot ahora envuelve todas las ISOs dentro de un submenu
de GRUB con título 'rm-MULTIBOOT [N ISOs]'. Si no hay ISOs, no aparece
ninguna entrada en el menú. Esto da una entrada fija y ordenada en el
menú de arranque en lugar de mezclar las ISOs con las entradas del SO.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 00:02:13 -03:00
Ricardo MonlaandClaude Sonnet 4.6 0aa6b1d4b3 v2.7.0: completar setup post-initramfs y mejorar cleanup de hooks
- _complete_setup_if_needed(): completa fstab + grub hook cuando MULTIBOOT
  existe pero el script se corre por primera vez post-reboot (Escenario 4).
  También limpia hooks residuales del initramfs si el local-bottom falló y
  regenera el initramfs. Se llama desde menu_principal al detectar MULTIBOOT.
- local-bottom: robustecer el script de cleanup para buscar el mountpoint
  correcto cuando rootmnt no está en el entorno. Agrega logging detallado.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 21:06:40 -03:00
Ricardo MonlaandClaude Sonnet 4.6 f6923edb71 v2.6.0: resize automático via initramfs — sin Live CD (Escenario 4)
Reemplaza el script de rescue manual (que requería Live CD) por un
mecanismo que instala hooks en initramfs para reducir la partición
raíz y crear MULTIBOOT en el próximo arranque, sin ningún medio externo.

Cambios técnicos:
- _wizard_rescue_root: genera local-premount y local-bottom en initramfs
- Hook de herramientas: copia resize2fs, parted, mkfs.ext4, mke2fs, e2fsck
- parted ---pretend-input-tty con doble Yes: acepta warnings interactivos
- +1 MiB en new_root_end_mib: corrige descalce de alineamiento de parted
- mkpart con Yes: acepta "closest location" cuando hay partición extendida adyacente
- local-bottom cleanup: elimina hooks de la raíz vía ${rootmnt} post-resize
- Condición idempotente: no actúa si el dispositivo destino ya existe
- Plan actualizado: tareas 2.4 y 2.5 completadas, versiones registradas

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 21:00:40 -03:00
Ricardo MonlaandClaude Sonnet 4.6 08e16502a9 v2.5.0: motor de detección de espacio ampliado + log + script rescue
- Implementa 4 escenarios de disco reales:
  Escenario 1: espacio libre sin particionar en cualquier disco (anterior)
  Escenario 2: disco secundario vacío disponible
  Escenario 3: partición no-raíz con espacio libre (resize en caliente)
  Escenario 4: solo espacio en filesystem raíz → genera script rescue para live CD
- Agrega sistema de log en /var/log/rm-multiboot.log con timestamps
- El script rescue generado automatiza e2fsck + resize2fs + parted + mkfs
- Plan de pruebas actualizado: Fase 2 ampliada, Fase 5 ajustada

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 19:55:02 -03:00
Ricardo MonlaandClaude Sonnet 4.6 de2a86fe78 feat(v2.3.2): ETA en tiempo real en la barra de progreso de descarga
Calcula el tiempo estimado restante usando velocidad promedio desde el
inicio de la descarga (más estable que velocidad instantánea para ETA).
Formato mm:ss para descargas < 1 hora, h:mm:ss para descargas largas.

Muestra "--:--" mientras no hay datos suficientes para estimar.
ETA solo aparece cuando el servidor informa Content-Length.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 17:58:28 -03:00
Ricardo MonlaandClaude Sonnet 4.6 055d099363 feat(v2.3.1): velocidad de descarga en MB/s en tiempo real
Calcula delta de bytes entre cada tick del loop (0.3 s) y lo convierte
a MB/s con un decimal via awk. Se muestra en la misma línea de progreso:

  →  [########------------]   42%  (1823 de 4340 MB)  23.5 MB/s

Sin Content-Length: "1247 MB  23.5 MB/s"
Al completar: muestra tamaño final sin velocidad (limpia la línea).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 17:56:40 -03:00
Ricardo MonlaandClaude Sonnet 4.6 b0e56f127f feat(v2.3.0): progreso de descarga unificado con barra y porcentaje
- Nueva función get_remote_size: obtiene Content-Length via HEAD request
- Nueva función download_with_progress: descarga en background y muestra
  barra [####----] + porcentaje + MB actuales / MB totales en tiempo real
- gdrive_download simplificada: delega en download_with_progress
- download_from_catalog usa un único punto de descarga para Drive y URLs directas
- Fallback a "X MB descargados..." cuando el servidor no informa Content-Length

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 17:54:59 -03:00
Ricardo MonlaandClaude Sonnet 4.6 6c6564dc96 feat(v2.2.0): soporte Google Drive y ChromeOS Flex en catálogo
- Nuevas funciones: is_gdrive_url, gdrive_file_id, gdrive_real_filename,
  gdrive_download — detectan y descargan desde URLs de Google Drive
  usando drive.usercontent.google.com con confirm=t (sin redirección)
- El nombre del archivo se obtiene del header Content-Disposition;
  si falla, se genera desde el nombre del catálogo
- Agrega ChromeOS Flex (stable) al catálogo con nota de que es imagen
  de disco para flashear, no ISO booteable por GRUB loopback

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 17:50:49 -03:00
Ricardo MonlaandClaude Sonnet 4.6 8185c86895 feat(v2.1.0): leer isos.conf desde GitHub en cada ejecución
El catálogo se obtiene en tiempo de ejecución desde:
  raw.githubusercontent.com/ricardomonla/rm-MULTIBOOT/main/isos.conf

Flujo: intenta GitHub primero → fallback al archivo local si no hay red.
El archivo temporal se limpia automáticamente tras leer las entradas.
Actualizar el catálogo ahora solo requiere editar isos.conf en GitHub.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 17:20:56 -03:00
Ricardo MonlaandClaude Sonnet 4.6 9f2c0f4580 fix: corregir datos del autor (Lic. Ricardo MONLA, rmonla@gmail.com)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 17:15:29 -03:00
Ricardo MonlaandClaude Sonnet 4.6 08a5bbdbf8 feat(v2.0.0): renombrar script, agregar catálogo isos.conf y descarga directa
- Script renombrado a rm-multiboot.sh con header de autor y versión
- Nuevo archivo isos.conf: catálogo NOMBRE|URL con 30+ distros populares
- Nuevo flujo "Agregar ISO": elegir entre descargar del catálogo o ruta local
- Descarga con wget (con fallback a curl) y retoma descargas incompletas (-c)
- El nombre del catálogo se usa como etiqueta GRUB cuando la detección es genérica

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 17:13:45 -03:00