Come ripristinare GRUB
Hai appena ripristinato Windows su un computer configurato in dual-boot con Linux e, all’accensione del PC, non ti viene più consentito di scegliere quale sistema operativo avviare? Non ti preoccupare, si tratta di un problema piuttosto comune e tutto quello che devi fare per risolverlo è ripristinare GRUB. Non sai di cosa sto parlando? Te lo spiego subito.
GRUB (acronimo di GRand Unified Bootloader) è il boot loader che viene usato da molte distribuzioni Linux, come ad esempio la famosissima Ubuntu, per gestire i sistemi operativi installati sul computer. In altre parole si tratta del software che “vede” quali sistemi operativi sono installati sul PC e permette di scegliere quale avviare dopo l’accensione della macchina.
Ripristinarlo è molto più semplice di quello che sembra. Inoltre, per riuscirci non c’è bisogno né di formattare l’hard disk del computer né di reinstallare uno dei sistemi operativi già presenti sul PC. Allora che aspetti? Armati di un pizzico di pazienza, della giusta dose d’attenzione e prova a ripristinare il menu iniziale di GRUB seguendo le indicazioni che trovi di seguito. Sono sicuro che te la caverai alla grande! In bocca al lupo!
Indice
- Operazioni preliminari
- Come ripristinare GRUB da Terminale Linux
- Come riparare GRUB con Boot Repair Disk
- Come ripristinare GRUB da Windows
- In caso di ulteriori problemi
Operazioni preliminari
Prima di entrare nel vivo di questa guida e di illustrarti quali sono i metodi più efficaci per ripristinare GRUB, devi innanzitutto verificare se il tuo PC è basato sul firmware UEFI, cosa quasi sempre vera per tutti i computer prodotti a partire dal 2016, oppure sul vecchio sistema di gestione BIOS. Sebbene in entrambi i casi sia possibile riportare GRUB al suo funzionamento originale, la modalità operativa cambia, in base al firmware presente sul computer.
Puoi accertarti circa la presenza di UEFI o BIOS sia da Windows che da Linux, in maniera semplicissima: nel primo caso, premi la combinazione di tasti Win+R sulla tastiera, impartisci il comando msinfo32
nella schermata che va ad aprirsi e dai Invio; giunto nella nuova finestra, clicca sulla voce Risorse di sistema e verifica quanto scritto in corrispondenza della voce Modalità BIOS, per ottenere l’informazione che cerchi.
Su Linux, invece, ti basta aprire il Terminale, digitare il comando ls -l /sys/firmware/efi
e dare Invio: se l’output ha esito positivo, vuol dire che la cartella esiste e che il PC è basato su UEFI; se, invece, vedi un messaggio d’errore, vuol dire che il PC è basato su BIOS.
Raramente, può capitare che i PC in modalità UEFI “ospitino” un sistema operativo in modalità BIOS, per questioni di compatibilità: in casi del genere, si utilizza una modalità denominata UEFI Legacy, che va trattata in maniera analoga a quanto succederebbe con BIOS. Tieni conto, però, che il dual boot è fattibile soltanto se tutti e due i sistemi operativi sono stati installati in modalità UEFI Legacy; diversamente, a prescindere dalla presenza di GRUB, è necessario reinstallare Windows oppure Linux in dual-boot, impostandolo con la stessa modalità d’avvio dell’OS già presente.
Come ripristinare GRUB da Terminale Linux
La strada più immediata che puoi percorrere per ripristinare GRUB consiste nell’agire dal Terminale di Linux; qualora non fosse possibile avviare la distribuzione installata sul tuo computer, devi servirti di una chiavetta USB oppure di un CD/DVD contenente la versione Live del sistema operativo, ossia dello stesso supporto che hai usato per installare Linux sul PC, per intenderci.
Se non lo hai più, puoi realizzarlo con estrema semplicità, seguendo le indicazioni che trovi nei primi due capitoli della mia guida su come installare Linux da USB.
Una volta preparato il supporto, se necessario, devi avviare il PC da quest’ultimo; generalmente, è sufficiente collegare la chiavetta o inserire il disco nel PC, accenderlo e attendere che la schermata di benvenuto della distribuzione scelta compaia sullo schermo.
Qualora ciò non dovesse avvenire, potresti dover intervenire nelle impostazioni di UEFI/BIOS del computer e impostare l’avvio primario da USB o CD/DVD, così come ti ho spiegato nella mia guida su come impostare BIOS/UEFI. Giunto alla schermata di scelta del supporto, se il tuo PC è dotato di sistema UEFI, assicurati di avviare il dispositivo contrassegnato con la dicitura (EFI mode) o simili, altrimenti potresti non essere in grado di riconfigurare correttamente il boot loader.
Chiaramente, se hai ancora la possibilità di avviare Linux, i passaggi di cui sopra non sono necessari, in quanto le procedure che mi appresto a mostrarti qui di seguito possono essere eseguite anche da un sistema operativo già installato.
Sistemi UEFI
Per iniziare, vediamo come ripristinare GRUB su una partizione UEFI. Innanzitutto, apri il Terminale dal menu Applicazioni della tua distribuzione Linux, impartisci il comando mount | grep efivarfs
e dai Invio. Se non vedi alcun output, oppure se riscontri un messaggio d’errore, vuol dire che la tua distribuzione non è stata correttamente avviata in modalità UEFI: riavvia dunque il computer e, in fase di scelta del dispositivo di boot, assicurati di selezionare il disco o la chiavetta contrassegnati con la voce EFI mode.
Adesso, identifica i “codici” con i quali Linux riconosce i dischi collegati al sistema, impartendo il comado lsblk -f | grep sd
e premendo il tasto Invio della tastiera; ora, aiutandoti con la dimensione e il file system, individua il codice associato alla partizione principale (ad es. sda
), quello associato alla partizione di sistema Linux (ad es. sda5
) e quello associato alla partizione EFI, l’unica con file system vfat/FAT32 (ad es. sda1
).
Se sul tuo PC è presente un’unità disco di tipo SSD NVMe, il comando di sopra potrebbe non restituirti alcun output, in quanto il sistema operativo legge i dischi usando un driver diverso e vi associa, di conseguenza, codici differenti; in casi del genere, il comando da impartire è invece lsblk -f | grep nvm
e i codici associati a ciascun disco/partizione sono di tipo nvmeXnYpZ
, per esempio nvme0n1p1
per la partizione EFI, nvme0n1p5
per quella di sistema, nvme0n1
per il disco principale, e così via.
Dopo aver identificato correttamente i codici, acquisisci i privilegi da amministratore, digitando il comando sudo -s
seguito dalla pressione del tasto Invio; in seguito, utilizza il comando mount /dev/sda5 /mnt
per montare la partizione di Linux nella cartella dedicata, avendo cura di sostituire a sda5 il codice identificato in precedenza, e premi il tasto Invio della tastiera. Laddove la partizione non fosse formattata con filesystem ext ma in Btrfs, il comando da usare invece è mount -o subvol=@ /dev/sda5 /mnt
.
Allo stesso modo, monta la partizione EFI nella cartella dedicata, impartendo il comando mount /dev/sda1 /mnt/boot/efi
e premendo il tasto Invio della tastiera.
Fatto ciò, devi montare tutte le restanti cartelle di sistema, cambiare la directory radice della shell sulla quale stai lavorando e, infine, procedere con la reinstallazione di GRUB. Il tutto si riduce a impartire i comandi che ti elenco qui sotto, ciascuno seguito dalla pressione del tasto Invio della tastiera.
for i in dev dev/pts proc sys sys/firmware run; do mount --bind /$i /mnt/$i; done
chroot /mnt
update-grub
grub-install /dev/sda
Per finire, non ti resta che uscire dall’ambiente chroot e riavviare il computer, impartendo i comandiexit
ereboot
, ciascuno seguito dalla pressione del tasto Invio della tastiera. Con un pizzico di fortuna, al boot successivo, GRUB dovrebbe consentirti di scegliere quale sistema operativo avviare.
Sistemi non UEFI
Se invece il tuo PC non supporta UEFI, oppure se tutti i sistemi operativi sono stati installati in modalità legacy, la procedura da seguire è leggermente diversa e richiede, anche in questo caso, la reinstallazione del boot loader.
Dunque, se stai operando da CD o USB Live, apri il Terminale, impartisci l’istruzione lsblk -f | grep sd
e premi il tasto Invio della tastiera: così facendo, hai la possibilità di visualizzare tutti i dischi collegati al computer e le partizioni con le quali esse sono suddivise. Ora, basandoti sulla dimensione e sul file system, annota il codice assegnato alla partizione contenente Linux (ad es. sda2
), quello assegnato alla partizione /boot, se presente (ad es. sda3
) e quello assegnato al disco principale, cioè quello “radice” (ad es. sda
), poiché ti serviranno tra non molto.
Adesso, devi montare tutte le partizioni e i dispositivi relativi all’edizione di Linux installata, all’interno della distribuzione Live: per farlo, impartisci i comandi che vedi qui sotto, ciascuno seguito dalla pressione del tasto Invio, avendo cura di sostituire a **sda2**
il codice identificato in precedenza.
sudo -s
mount /dev/sda2 /mnt
mount /dev/sda3 /boot _#solo in caso di partizione /boot separata, altrimenti salta questo comando_
for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done
chroot /mnt
A questo punto, procedi con la reinstallazione di GRUB impartendo il comandogrub-install /dev/sda
, seguito dalla pressione del tasto Invio, avendo cura di sostituire a**sda**
l’identificativo del disco individuato in precedenza; per finire, digita il comandoupdate-grub2
, dai Invio e attendi che la lista dei sistemi operativi presenti sul disco venga rilevata e rigenerata in GRUB.
Adesso, smonta tutti i dispositivi montati in precedenza e riavviare il computer digitando, in sequenza, le istruzioni che ti elenco qui sotto (ciascuna seguita dalla pressione del tasto Invio della tastiera).
exit
for i in /dev /proc /sys; do sudo umount /mnt$i; done
reboot
Per finire, rimuovi il supporto di Linux e attendi che il computer si riavvii regolarmente: con un pizzico di fortuna, dovresti visualizzare nuovamente la schermata di GRUB, la quale dovrebbe nuovamente consentirti di scegliere il sistema operativo da avviare.
Come riparare GRUB con Boot Repair Disk
Se hai qualche difficoltà nel portare a termine i passaggi visti poc’anzi, puoi provare a semplificarti la vita usando Boot Repair Disk, un sistema operativo basato su Linux Mint a 64 bit che, grazie a una comoda interfaccia grafica, permette di risolvere i più comuni problemi che impediscono l’avvio di GRUB. Per ottenerla, collegati a questo sito Web, clicca sul pulsante Download e attendi qualche istante, affinché l’ISO del sistema operativo venga scaricata sul disco.
A download completato, riversa il contenuto del file ISO su di un supporto DVD oppure su una chiavetta USB, usando il software di masterizzazione o scrittura che preferisci (ad es. Rufus), collega il supporto creato al computer problematico e utilizzalo per avviare quest’ultimo, andando a intervenire sulle opzioni di boot, se necessario.
Giunto nella schermata del sistema operativo, se sei collegato a Internet, clicca sul pulsante Yes per effettuare il download degli aggiornamenti e, completato quest’ultimo, fai clic sul pulsante Recommended repair (repairs most frequent problems), per avviare la riparazione automatica di GRUB; in seguito, clicca sul pulsante No per evitare di creare un rapporto su pastebin, clicca sul pulsante OK e, se lo desideri, esamina il log della riparazione eseguita.
A questo punto, non ti resta che riavviare il computer (cliccando sul simbolo di spegnimento disponibile nel menu Mint), rimuovere il supporto di Boot Repair Disk e verificare che GRUB sia stato reinstallato correttamente.
Come ripristinare GRUB da Windows
Hai recentemente apportato delle modifiche a Windows e, a seguito di queste ultime, GRUB non compare più e riesci ad aprire unicamente il sistema operativo Microsoft? Come opzione alternativa a quelle di cui sopra, se tutti e due i sistemi operativi sono stati installati in modalità UEFI, puoi provare a reimpostare il sistema d’avvio affinché riconosca GRUB come bootloader principale.
Per poterci riuscire, apri una finestra del Prompt dei Comandi oppure di PowerShell/Terminale in modalità Amministratore, impartisci il comando diskpart
e dai Invio; ora, digita il comando list disk
, dai Invio, identifica la cifra corrispondente al disco di sistema (che di norma è 0) e impartisci l’istruzione sel disk X
, per selezionarlo, avendo cura di sostituire a X la cifra recuperata in precedenza.
Ora, digita il comando list partition
, dai Invio, individua il numero associato alla partizione EFI (generalmente di tipo Sistema e di dimensione pari a 100 MB) e impartisci il comando sel partition X
, seguito dalla pressione del tasto Invio, avendo cura di sostituire a X il numero identificato in precedenza.
A questo punto, assegna una lettera di unità alla partizione (ad es. Z:), digitando il comando assign letter=Z
e premendo il tasto Invio della tastiera, ed esci da Diskpart, digitando il comando exit
.
Adesso, devi accedere alla partizione montata in precedenza, così da identificare il nome della cartella associata al boot loader di Linux (che di solito corrisponde a quello della distribuzione in uso): per farlo, digita il comando Z:
, dai Invio per cambiare l’unità in uso e impartisci, in sequenza, i comandi cd EFI
e dir
, entrambi seguiti dalla pressione del tasto Invio della tastiera, per visualizzare l’elenco delle cartelle presenti nella partizione EFI; nel mio caso, la cartella è denominata ubuntu.
Dopo aver ottenuto tutte le informazioni del caso, digita il comando bcdedit /set {bootmgr} path \EFI\nomeCartella\grubx64.efi
, avendo cura di sostituire a nomeCartella la directory individuata in precedenza (ad es. ubuntu), e premi il tasto Invio della tastiera, per applicare la modifica: così facendo, andrai a costringere il boot loader di Windows a leggere le informazioni dalla cartella di GRUB, il che ti consentirà di scegliere l’OS da usare, al boot successivo.
In caso di ulteriori problemi
Nonostante tu abbia seguito pedissequamente le istruzioni fornite finora, non sei riuscito comunque a ripristinare GRUB per il dual-boot tra Windows e Ubuntu? In questo caso, il problema potrebbe essere riconducibile a un’errata impostazione del file d’avvio, tipica dei sistemi UEFI, che si può correggere accedendo per l’appunto al firmware della scheda madre.
Per riuscirci, se sei in grado di avviare Windows, apri il menu Start, clicca sul pulsante di spegnimento e, premendo e tenendo premuto il tasto Shift della tastiera, seleziona la voce Riavvia il sistema, dal menu contestuale che va ad aprirsi; se hai eseguito correttamente l’operazione, entro qualche minuto, dovresti vedere le opzioni per l’avvio avanzato di Windows: quando ciò avviene, clicca in sequenza sulle voci Risoluzione dei problemi > Opzioni avanzate > Impostazioni firmware UEFI > Riavvia e pazienta ancora qualche secondo, affinché vengano visualizzate le impostazioni del firmware UEFI.
Una volta lì, individua le opzioni relative a UEFI Boot Option Priority, Boot Option Menu o Boot priority order e seleziona GRUB (oppure ubuntu) come boot loader da utilizzare all’accensione del computer. Per finire, premi sul pulsante per salvare i cambiamenti e riavviare il PC: con un pizzico di fortuna, la situazione dovrebbe ritornare alla normalità.
Se, invece, riesci a visualizzare GRUB ma quest’ultimo ti notifica un messaggio d’errore, mostrandoti poi la shell testuale, puoi provare a usare quest’ultima per riportare la situazione alla normalità: quando vedi comparire il prompt grub>_
, impartisci il comando ls
e dai Invio, per accedere alla lista delle partizioni presenti sul computer.
Ora, prova a ricordare il numero associato a quella di Linux (ad es. /dev/sda4), impartisci il comando set prefix=(hd0, X)/boot/grub
(ad es. set prefix=(hd0,4)/boot/grub
), dai Invio e, allo stesso modo, impartisci il comando set root(hd0, X)
e dai Invio. Ora, per visualizzare il menu di GRUB associato alla partizione scelta, digita i comandi insmod normal
e normal
, serviti dell’interfaccia che compare per avviare Linux (oppure prova a usare una partizione differente, in caso di errore) e, una volta entrato nel sistema operativo, apri il Terminale e impartisci il comando sudo grub-install /dev/sdX && sudo update-grub2
, seguito dalla pressione del tasto Invio, e digita quando richiesto la password di amministrazione, per autorizzare l’installazione del boot loader.
In questa fase, abbi cura di sostituire a /dev/sdX la lettera di unità associata al disco principale del computer, che potrebbe essere per esempio /dev/sda, oppure /dev/nvme0n1, se si tratta di unità SSD NVM; in caso di dubbi, consulta uno dei passi precedenti di questa mia guida, per identificare la partizione e/o il disco esatto usando il comando lsblk
.
Tieni comunque ben presente che quelle che ti ho appena suggerito sono solo alcune delle possibili strade per ripristinare GRUB, quelle utili a risolvere il problema nella maggior parte dei casi. Tuttavia esistono situazioni specifiche in cui può essere necessario seguire qualche altra procedura o integrare altri passaggi a quelli che abbiamo appena visto insieme.
Per risolvere qualsiasi dubbio sulla questione, ti invito vivamente a chiedere aiuto sul forum ufficiale della distro Linux che utilizzi (es. il forum italiano di Ubuntu): lì troverai sicuramente qualcuno in grado di darti una mano. Inoltre prova a dare un’occhiata al wiki ufficiale di Ubuntu (qui in lingua inglese) dove sono illustrate altre procedure per risolvere i problemi di avvio nei sistemi dual-boot.

Autore
Salvatore Aranzulla
Salvatore Aranzulla è il blogger e divulgatore informatico più letto in Italia. Noto per aver scoperto delle vulnerabilità nei siti di Google e Microsoft. Collabora con riviste di informatica e cura la rubrica tecnologica del quotidiano Il Messaggero. È il fondatore di Aranzulla.it, uno dei trenta siti più visitati d'Italia, nel quale risponde con semplicità a migliaia di dubbi di tipo informatico. Ha pubblicato per Mondadori e Mondadori Informatica.