diff --git a/rm-multiboot.sh b/rm-multiboot.sh index 24485e2..afb982c 100755 --- a/rm-multiboot.sh +++ b/rm-multiboot.sh @@ -5,7 +5,7 @@ # Autor: Lic. Ricardo MONLA # Email: rmonla@gmail.com # GitHub: https://github.com/ricardomonla/rm-MULTIBOOT -# Versión: 2.10.0 +# Versión: 2.11.0 # Licencia: MIT # # Uso: sudo ./rm-multiboot.sh @@ -19,7 +19,7 @@ set -euo pipefail # ─── Constantes ─────────────────────────────────────────────────────────────── -readonly SCRIPT_VERSION="2.10.0" +readonly SCRIPT_VERSION="2.11.0" readonly SCRIPT_AUTHOR="Lic. Ricardo MONLA" readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly ISOS_CONF="$SCRIPT_DIR/isos.conf" @@ -226,14 +226,16 @@ menu_principal() { echo " 1) Agregar una ISO" echo " 2) Ver ISOs disponibles" echo " 3) Eliminar una ISO" - echo " 4) Salir" + echo " 4) Regenerar entradas GRUB" + echo " 5) Salir" echo "" - local opt; opt=$(ask "Opción [1-4]") + local opt; opt=$(ask "Opción [1-5]") case "$opt" in 1) menu_agregar_iso ;; 2) list_isos; pause; banner; detect_system; menu_principal ;; 3) remove_iso ;; - 4) echo ""; exit 0 ;; + 4) regenerar_entradas_grub ;; + 5) echo ""; exit 0 ;; *) menu_principal ;; esac fi @@ -1451,6 +1453,43 @@ CFG # LISTAR ISOs # ============================================================================= +regenerar_entradas_grub() { + banner + step "Regenerar entradas GRUB" + echo "" + echo -e " Vuelve a inspeccionar cada ISO y reescribe su entrada .cfg\n" + echo -e " con la lógica actualizada (loopback.cfg válido, initrd correcto).\n" + + local -a isos + while IFS= read -r iso; do + [[ -f "$iso" ]] && isos+=("$iso") + done < <(find "$ISO_DIR" -maxdepth 2 -name "*.iso" 2>/dev/null | sort) + + if [[ "${#isos[@]}" -eq 0 ]]; then + warn "No hay ISOs en la partición MULTIBOOT." + pause; banner; detect_system; menu_principal; return + fi + + local count=0 + for iso in "${isos[@]}"; do + local iso_name distro + iso_name=$(basename "$iso") + echo -e "\n ${C}→${N} $iso_name" + distro=$(detect_distro "$iso_name") + generate_grub_entry "$iso_name" "$distro" + count=$(( count + 1 )) + done + + divider + step "Actualizando GRUB..." + grub_update + + echo "" + ok "${count} entrada(s) regenerada(s) correctamente." + pause; banner; detect_system; menu_principal +} + + list_isos() { banner step "ISOs disponibles en MULTIBOOT"