Risoluzione del GRUB Rescue Mode su sistemi UEFI

Introduzione

Il bootloader GRUB (Grand Unified Bootloader) è un componente fondamentale nei sistemi Linux, responsabile del caricamento del kernel e della gestione del menu di avvio. Tuttavia, non è raro imbattersi nell'errore unknown filesystem seguito dall'ingresso in modalità rescue, specialmente dopo aggiornamenti di sistema, modifiche alle partizioni o problemi di configurazione.

Analisi del Problema

Sintomi Comuni

Il problema si manifesta tipicamente con il messaggio:

Bash output

error: unknown filesystem
Entering rescue mode...
grub rescue>
Questo errore indica che GRUB non riesce a localizzare o riconoscere il filesystem contenente i suoi file di configurazione, rendendo impossibile l'avvio normale del sistema.

Cause Principali

  • Discrepanza tra configurazione e realtà del sistema: Il caso più comune è quando il file /etc/fstab o la configurazione di GRUB punta a una partizione diversa da quella effettivamente utilizzata
  • Moduli filesystem non caricati: GRUB potrebbe non aver caricato i moduli necessari per riconoscere specifici filesystem
  • Corruzione della configurazione: File di configurazione danneggiati o inconsistenti
  • Cambio dell'ordine delle partizioni: Modifiche hardware o del firmware che alterano l'enumerazione dei dischi

Metodologia di Risoluzione

Fase 1: Diagnosi e Identificazione

Il primo passo consiste nell'identificare le partizioni disponibili e i loro filesystem. Questo comando rivela la struttura delle partizioni disponibili.

Bash output

# Dal prompt grub rescue>
ls
(hd0) (hd0,gpt6) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)
La presenza di gpt indica l'utilizzo di una tabella di partizione GPT, comune nei sistemi UEFI moderni.

Fase 2: Caricamento dei Moduli Filesystem

GRUB in modalità rescue ha un set limitato di moduli caricati. È necessario caricare manualmente i moduli per i filesystem più comuni:
Bash output

insmod part_gpt
insmod ext2
insmod ext4
insmod fat
insmod ntfs
insmod reiserfs
Il comando insmod part_gpt è particolarmente importante per sistemi con tabelle di partizione GPT.

Fase 3: Identificazione della Partizione Root

Una volta caricati i moduli appropriati, è possibile esplorare le partizioni:
Bash output

ls (hd0,gpt1)/
ls (hd0,gpt2)/
# ... continuare per tutte le partizioni
Nel caso in esame, prima che GRUB si compromettesse, la partizione linux era installata sul disco nella partizione numero 6. A seguito di una serie di aggiornamenti sia del BIOS che del sistema operativo Microsoft Windows 11 (anche lui installato su una partizione dedicata), qualcosa ha corrotto la configurazione di GRUB, ma anche la numerazione delle partizione sul disco. Adesso la partizione che contiene il sistema operativo Linux è la numero 5, come si vedrà più avanti.
La partizione contenente la directory root del sistema Linux mostrerà strutture familiari come /bin, /boot, /etc, /home, /usr, /var.
L'informazione fondamentale che ci metterà sulla soluzione del problema, è il rilevamento nella directory /boot/ della sottodirectory /boot/grub ed in particolare del file grub.cfg

Fase 4: Configurazione Temporanea di GRUB

Identificata la partizione corretta, configuriamo GRUB temporaneamente:
Bash output

set root=(hd0,gpt5)
set prefix=(hd0,gpt5)/boot/grub
insmod normal
normal
Questo ripristina temporaneamente l'accesso al menu di GRUB.

Risoluzione Definitiva

Correzione della Configurazione fstab

Il problema più comune è una discrepanza tra la configurazione in /etc/fstabe la realtà del sistema. Infatti, una volta ripristinato l'accesso al menù di GRUB, si può verificare un problema all'avvio della distribuzione linux, causato da un errore di Kernel Panic in quanto la partizione di inizializzazione è errata. Nel nostro caso:
Bash output

# Configurazione errata
/dev/nvme0n1p6    /    reiserfs     defaults    1   1

# Configurazione corretta
/dev/nvme0n1p5    /    reiserfs     defaults    1   1
La correzione richiede:
  • Montaggio del filesystem in modalità lettura-scrittura: mount -o remount,rw /
  • Modifica del file fstab editando modificando la partizione di root da nvme0n1p6 a nvme0n1p5: vim /etc/fstab

Reinstallazione di GRUB per Sistemi UEFI

Per sistemi UEFI, è fondamentale reinstallare GRUB correttamente:
Bash output

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
Questo comando: - Specifica il target per architettura x86_64 in modalità EFI - Indica la directory della partizione EFI - Imposta l'identificatore del bootloader

Rigenerazione della Configurazione

Dopo le modifiche, è essenziale rigenerare la configurazione:
Bash output

grub-mkconfig -o /boot/grub/grub.cfg

Gestione delle Problematiche di Visualizzazione

Configurazione della Risoluzione Grafica

Un problema comune nei sistemi UEFI moderni è l'alta risoluzione del menu GRUB, che può renderlo illeggibile. La configurazione si effettua tramite /etc/default/grub:
Bash output

GRUB_GFXMODE=1024x768
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_TERMINAL=gfxterm

Limitazioni Hardware

Tuttavia, alcuni sistemi UEFI non supportano la modifica della risoluzione grafica. In questi casi, è possibile forzare la modalità testuale:
Bash output

GRUB_TERMINAL_INPUT=console
GRUB_TERMINAL_OUTPUT=console
GRUB_GFXMODE=text

Gestione delle Voci di Menu Duplicate

Problema delle Voci Multiple

La presenza di voci duplicate nel menu GRUB è spesso causata da:
  • Link simbolici ai kernel (es. vmlinuz -> vmlinuz-huge-6.1.33)
  • Configurazioni di strumenti come grub-customizer
  • Accumulo di versioni di kernel obsolete

Configurazione Ottimale

Per ridurre le voci duplicate:
Bash output

GRUB_DISABLE_SUBMENU=true
GRUB_DISABLE_RECOVERY=true
GRUB_DEFAULT=0

Considerazioni per l'Amministrazione di Sistema

Backup e Prevenzione

Prima di modificare configurazioni critiche come GRUB:
  1. Creare backup dei file di configurazione
  2. Documentare le modifiche effettuate
  3. Testare le configurazioni in ambiente controllato

Monitoraggio Post-Modifica

Dopo la risoluzione:
  1. Verificare che tutti i kernel installati siano avviabili
  2. Testare il dual-boot se presente
  3. Monitorare eventuali errori nei log di sistema

Strumenti Diagnostici Avanzati

Utilizzo della Command Line di GRUB

La command line di GRUB offre strumenti diagnostici utili:

Bash output

# Informazioni sui dispositivi video
videoinfo

# Test delle modalità video
videotest

# Visualizzazione variabili
set

Analisi della Configurazione

Per sistemi complessi, l'analisi della struttura degli script in /etc/grub.d/ può rivelare configurazioni non standard o conflitti.

Conclusioni

La risoluzione del GRUB rescue mode richiede un approccio metodico che comprende diagnosi, identificazione del problema root, correzione della configurazione e verifica della soluzione. La comprensione delle differenze tra sistemi BIOS legacy e UEFI è cruciale per un intervento efficace.
La prevenzione attraverso backup regolari e la documentazione delle modifiche al sistema rimane la migliore strategia per evitare questi problemi. Quando si verificano, tuttavia, un approccio sistematico può ripristinare rapidamente la funzionalità del sistema senza perdita di dati.
Per amministratori di sistema e tecnici IT, la padronanza di questi concetti è essenziale per la gestione efficace di infrastrutture Linux moderne, specialmente in ambienti dove la continuità operativa è critica.