Come utilizzare GRUB Rescue per riparare Linux
Pubblicato: 2023-05-14ls
, 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.
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 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.
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
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
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)
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)/
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
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
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
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
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
È 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