v2.11.0: opción 4 — Regenerar entradas GRUB en el menú principal

Agrega regenerar_entradas_grub(): recorre todas las ISOs existentes,
las re-inspecciona con la lógica actual de generate_grub_entry() y
reescribe sus .cfg. Corrige entradas generadas con versiones anteriores
que tenían loopback.cfg falso o initrd con nombre incorrecto.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ricardo Monla
2026-06-07 00:46:27 -03:00
co-authored by Claude Sonnet 4.6
parent 5efdfd140e
commit de43263e8e
+44 -5
View File
@@ -5,7 +5,7 @@
# Autor: Lic. Ricardo MONLA # Autor: Lic. Ricardo MONLA
# Email: rmonla@gmail.com # Email: rmonla@gmail.com
# GitHub: https://github.com/ricardomonla/rm-MULTIBOOT # GitHub: https://github.com/ricardomonla/rm-MULTIBOOT
# Versión: 2.10.0 # Versión: 2.11.0
# Licencia: MIT # Licencia: MIT
# #
# Uso: sudo ./rm-multiboot.sh # Uso: sudo ./rm-multiboot.sh
@@ -19,7 +19,7 @@
set -euo pipefail set -euo pipefail
# ─── Constantes ─────────────────────────────────────────────────────────────── # ─── Constantes ───────────────────────────────────────────────────────────────
readonly SCRIPT_VERSION="2.10.0" readonly SCRIPT_VERSION="2.11.0"
readonly SCRIPT_AUTHOR="Lic. Ricardo MONLA" readonly SCRIPT_AUTHOR="Lic. Ricardo MONLA"
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly ISOS_CONF="$SCRIPT_DIR/isos.conf" readonly ISOS_CONF="$SCRIPT_DIR/isos.conf"
@@ -226,14 +226,16 @@ menu_principal() {
echo " 1) Agregar una ISO" echo " 1) Agregar una ISO"
echo " 2) Ver ISOs disponibles" echo " 2) Ver ISOs disponibles"
echo " 3) Eliminar una ISO" echo " 3) Eliminar una ISO"
echo " 4) Salir" echo " 4) Regenerar entradas GRUB"
echo " 5) Salir"
echo "" echo ""
local opt; opt=$(ask "Opción [1-4]") local opt; opt=$(ask "Opción [1-5]")
case "$opt" in case "$opt" in
1) menu_agregar_iso ;; 1) menu_agregar_iso ;;
2) list_isos; pause; banner; detect_system; menu_principal ;; 2) list_isos; pause; banner; detect_system; menu_principal ;;
3) remove_iso ;; 3) remove_iso ;;
4) echo ""; exit 0 ;; 4) regenerar_entradas_grub ;;
5) echo ""; exit 0 ;;
*) menu_principal ;; *) menu_principal ;;
esac esac
fi fi
@@ -1451,6 +1453,43 @@ CFG
# LISTAR ISOs # 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() { list_isos() {
banner banner
step "ISOs disponibles en MULTIBOOT" step "ISOs disponibles en MULTIBOOT"