Come utilizzare GRUB Rescue per riparare Linux

Pubblicato: 2023-05-14
Schermata di avvio di Ubuntu Linux su un laptop
Jordan Gloor / How-To Geek
Se le tue shell GRUB mostrano un prompt "grub>", puoi usare i comandi ls , set , linux e initrd per riparare il tuo sistema Linux. Se invece vedi un prompt "grub rescue>", usa i comandi set , insmod , linux e initrd per avviare il tuo PC.

Se il tuo computer Linux non riesce ad avviarsi nel suo sistema operativo, è probabile che ti ritroverai a fissare un prompt nella shell di GRUB. Segui questi passaggi per riparare i processi di avvio interrotti.

Sommario

Quando il tuo Bootloader non si avvia
Utilizzo della shell di GRUB
Utilizzo di GRUB Rescue Shell
Altri possibili rimedi

Quando il tuo Bootloader non si avvia

Ci sono pochissimi problemi con il computer che ti fanno sprofondare il cuore così profondamente e rapidamente come un errore di avvio. Senza un sistema operativo funzionante, il tuo computer non è davvero un computer.

Può essere un problema molto opaco, senza un modo semplice per approfondire la causa principale. Senza l'accesso a Linux, non puoi utilizzare nessuno dei soliti strumenti e processi diagnostici che utilizzeresti per indagare sul problema. E senza determinare qual è il problema, come puoi risolverlo?

Su Linux, GRUB è il software che controlla il processo di avvio. Se hai installato più sistemi operativi, ti consente di scegliere quello da cui vuoi eseguire l'avvio.

GRUB è controllato dalla sua configurazione. Si basa anche su altri file di supporto per svolgere le sue funzioni. Se uno di questi manca o viene danneggiato, GRUB non funzionerà. Le modifiche ai dischi rigidi e alle partizioni del tuo computer devono essere riflesse nella configurazione di GRUB. In caso contrario, le istruzioni di GRUB non avranno senso e il processo di avvio non funzionerà.

Come masterizzare un file ISO su un'unità USB in Linux
CORRELATO Come masterizzare un file ISO su un'unità USB in Linux

Come nota a margine, ciò che tutti chiamiamo GRUB è in realtà GRUB 2. Questa è una versione avanzata di GRUB che è stata rilasciata nel 2012. Tra le altre modifiche, ha cambiato il modo in cui è stato creato il file "grub.cfg" e ti ha permesso di avvio da supporto rimovibile.

Se GRUB non è in grado di caricare un sistema operativo, rimarrai a fissare un prompt nella shell di GRUB. Questo è un ambiente minimalista che ti permetterà di eseguire una manciata di azioni. Se eseguiti correttamente, tuttavia, questi passaggi possono resuscitare il computer.

Esistono due diverse shell di GRUB. A seconda della causa principale del problema, potresti trovarti al prompt della shell di GRUB:

 grub>

o al prompt della shell di salvataggio di GRUB:

 salvataggio grub>

La shell di ripristino di GRUB è ancora più limitata della shell di GRUB, ma offre comunque abbastanza forza per avviare il computer. Una volta avviato il computer, sei in una posizione molto migliore per curare la causa principale.

Utilizzo della shell di GRUB

La shell di GRUB è un'interfaccia a riga di comando che consente di utilizzare un piccolo sottoinsieme di comandi Linux. Se ti trovi qui invece che nella solita schermata di accesso, significa che il tuo processo di avvio è incasinato.

Il prompt della shell di GRUB

I comandi a cui hai accesso non sono gli stessi delle solite versioni di Linux. Ad esempio, il comando ls della shell di GRUB non è il comando ls Bash. Ha ben poco in comune con esso. Possiamo vederlo usando l'opzione --help .

 ls --help 

Usando l'opzione --help con la versione della shell di GRUB di ls

Elenca solo cinque opzioni. Questo è molto diverso dalle dozzine di opzioni supportate da ls in Bash. Tuttavia, anche con la nostra gamma di comandi un po' smorzata, possiamo ancora correggere la situazione.

Al prompt, digita ls e premi "Invio".

 ls 

L'output della versione shell di GRUB di ls, che mostra unità e partizioni

Su questo computer, elenca tre elementi.

  • (hd0) è il primo disco rigido.
  • (hd0,gpt1) è la prima partizione sul primo disco rigido.
  • (hd0,gpt2) è la seconda partizione sul primo disco rigido.

L'etichetta "gpt" sta per tabella delle partizioni GUID. Dobbiamo includere le parentesi " () " quando facciamo riferimento a una partizione, ma possiamo omettere l'etichetta.

Per guardare le partizioni a turno, useremo ls .

 ls (hd0,1)
 ls (hd0,2) 

Utilizzo della versione shell GRUB di ls per identificare la partizione Linux

Abbiamo scoperto che la seconda partizione contiene un file system Linux. Indagheremo un po' più a fondo osservando la directory radice di quella partizione.

 ls (hd0,2)/ 

Utilizzo della versione shell di GRUB di ls per esaminare una particolare partizione

Chiaramente, questa è la partizione Linux, con la directory di avvio su di essa. Qui sono archiviati i file GRUB, le immagini di avvio di Linux e altri file di avvio.

Su questo computer, dovremo fare riferimento alla partizione (hd0,2) quando impartiamo i nostri comandi. Sul tuo computer useresti qualsiasi partizione su cui trovi la tua installazione di Linux.

Possiamo usare il comando cat per guardare i file di testo aggiungendo il percorso della directory e il nome del file al nome della partizione, in questo modo:

 cat (hd0,2)/etc/issue 

Guardando la versione di Linux usando il comando cat nella shell di GRUB

Nelle installazioni ad avvio multiplo, questo è un modo utile per verificare di essere sulla partizione corretta. È anche ottimo per cercare all'interno dei file di configurazione.

Qui, stiamo usando il comando ls con le opzioni -l (long) e -h (dimensioni leggibili dall'uomo) per elencare i file nella directory "/boot".

 ls -lh(hd0,2)/boot 

Elencando i file nella directory /boot utilizzando la versione GURB di ls

Per avviare questo computer, dobbiamo dire a GRUB che la nostra partizione Linux appena scoperta contiene i file di avvio.

 imposta root=(hd0,2)

Dobbiamo specificare da quale kernel Linux eseguire l'avvio. Lo facciamo con il comando linux . Si noti che dobbiamo anche fornire la directory principale utilizzando il solito schema di denominazione del disco rigido e della partizione di Linux.

 linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2

Sul nostro computer di esempio, stiamo usando (hd0) che è il primo disco rigido. Questo si chiama sda nella solita nomenclatura di Linux. Abbiamo scoperto che la seconda partizione è la partizione Linux, quindi dobbiamo specificare sda2 .

La tua macchina potrebbe essere diversa. Ad esempio, se la tua partizione Linux viene segnalata come (hd2,1) significa partizione uno sul terzo disco rigido o sdc1 .

Dobbiamo anche specificare quale immagine del file system basata su RAM utilizzare all'avvio del computer. Questo deve usare lo stesso componente numerico del kernel Linux che stiamo usando.

 initrd /boot/initrd.img-6.2.0-20-generic 

Impostazione dei parametri di avvio nella shell di GRUB

Ora, per avviare il nostro sistema, digita "boot" e premi "Invio".

Questo dovrebbe avviare il tuo computer in Linux. Questo ci ha rimesso in funzione, ma dobbiamo ancora riparare GRUB, quindi non dobbiamo farlo ogni volta che avviamo il nostro computer.

Eseguiremo update-grub . Questo eseguirà la scansione del nostro sistema, identificherà i sistemi operativi e creerà una nuova configurazione di GRUB. Dobbiamo eseguirlo come utente root.

 sudo update-grub 

Eseguire update-grub per ricostruire il file grub.cfg

Raramente, potrebbe essere necessario reinstallare anche il bootloader GRUB, utilizzando grub-install .

 sudo grub-install /dev/sda

Nota che non è necessario specificare su quale partizione installare, solo su quale unità. Nelle normali installazioni, è la stessa unità su cui si trova Linux.

La prova del budino arriva con il prossimo riavvio. Il computer dovrebbe riavviarsi normalmente.

CORRELATO: Come configurare le impostazioni del boot loader GRUB2

Utilizzo di GRUB Rescue Shell

A seconda della natura del problema di avvio, potresti non essere inserito nella shell di GRUB. Potresti essere lasciato nella modalità di salvataggio di GRUB. In tal caso, il tuo prompt sarà simile a questo:

 salvataggio grub>

I comandi che dobbiamo emettere in questa shell sono diversi. Dobbiamo usare ls per trovare la partizione Linux, proprio come se stessi usando la shell di GRUB. Dopo aver identificato la partizione Linux, puoi andare avanti e inserire questi comandi.

Ricorda di utilizzare gli identificatori di unità e i numeri di versione del kernel corretti per il tuo computer. Il comando insmod carica i moduli del kernel.

 imposta prefisso=(hd0,2)/boot/grub
 imposta root=(hd0,2)
 insmod normale
 insmod linux
 linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2
 initrd /boot/initrd.img-6.2.0-20-generic 

Impostazione dei parametri di avvio nella shell di salvataggio di GRUB

È quindi possibile digitare "boot" e premere "Invio" per riavviare il computer. Una volta riavviato e dopo aver effettuato l'accesso, aggiornare GRUB con il comando update-grub .

Altri possibili rimedi

Se il problema risulta essere file di avvio mancanti, come i file "vmlinuz" e "initrd.img", puoi avviare il tuo computer da un Live DVD o da un'unità flash USB Linux avviabile e copiare i file mancanti in posizione.

Si noti che i file "vmlinuz" e "initrd.img" devono contenere gli stessi numeri di versione, perché funzionano come una coppia corrispondente.

CORRELATO: Come creare un USB Live Linux avviabile sul tuo Mac