Come posso reinstallare GRUB sulla partizione EFI?


32

Voglio reinstallare GRUB 2 e ho trovato queste istruzioni: Come riparare, ripristinare o reinstallare Grub 2 con un Ubuntu Live CD o USB . Nel mio caso, il boot loader è installato nella partizione EFI. Se utilizzo i comandi forniti in questa guida, GRUB verrà reinstallato automaticamente nella partizione EFI o verrà installato nella partizione root in cui è installato Ubuntu? Ovviamente, non voglio che ciò accada.


3
Le istruzioni nel link fornito sono valide per reinstallare GRUB solo in modalità BIOS legacy, questo non funzionerà nel tuo caso. Per reinstallare GRUB su un'installazione Ubuntu in modalità BIOS EFI, leggi la mia risposta. :)
cl-netbox

Grazie mille! :) Ho alcune domande: quando ho installato Ubuntu nel mio sistema UEFI, ho trovato due voci nel BIOS. C'è un modo per avere una voce ubic unic? In caso di tabella delle partizioni MBR (quindi niente EFI o qualsiasi altra partizione di avvio), posso usare gli stessi comandi tranne: sudo mount / dev / sd ** / mnt / boot / efi?
Generoso

Puoi provare a rimuovere la seconda voce di Ubuntu con: sudo efibootmgr (elenca tutte le voci) | sudo efi bootmgr -b <numero-numero> -B .... e per reinstallare GRUB in modalità BIOS legacy eseguire questi comandi: sudo mount / dev / sd ** / mnt | sudo grub-install --boot-directory = / mnt / boot / dev / sd * (* = disk | ** = partizione di sistema)! :)
cl-netbox

Perfetto :) Comunque, avendo un sistema UEFI e quindi una partizione EFI, c'è un modo per evitare di ottenere grub overriden quando eseguo una nuova installazione di Windows?
Generoso,

Bene, Microsoft non si prende cura di nient'altro che dei propri prodotti, quindi puoi installare i sistemi Linux senza danneggiare Windows - sfortunatamente non è così il contrario - quindi quando installi Windows dopo aver installato Ubuntu, successivamente devi ripristinare il boot loader GRUB. :)
cl-netbox

Risposte:


54

Reinstallare il boot loader GRUB sull'installazione di Ubuntu in modalità EFI in questo modo ...

Avviare dal supporto di installazione di Ubuntu e selezionare "Prova Ubuntu senza installare".
(Avviare il supporto di installazione in modalità EFI, selezionare la voce Ubuntu con UEFI davanti.)

Una volta che sei sul desktop Live, apri un terminale ed esegui questi comandi:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

Nota: sdX= disco | sdXX= partizione efi | sdXXX= partizione di sistema

Per identificare le partizioni utilizzare GParted, lo strumento è incluso nel supporto di installazione.
Dopo aver eseguito i comandi, GRUB verrà installato nella partizione EFI separata.


+1 ma perché non si installa da Ubuntu stesso?

1
@MarkYisri: Mille Grazie! :) Perché è il modo più sicuro per reinstallare il boot loader GRUB senza corrompere le cose e nel caso in cui il sistema non si avvii correttamente ... l'unico modo per farlo! :)
cl-netbox

1
In questa soluzione, come fa "grub-install" a sapere che dovrebbe essere installato in modalità EFI?
user334639

3
Il punto importante è avviare il supporto di installazione nella corretta modalità di avvio, se vogliamo reinstallare grub-efidobbiamo avviarlo in modalità UEFI, se vogliamo reinstallarlo grub-pcdobbiamo avviarlo in modalità legacy.
Mook765

1
Questo ha funzionato per me, tranne con una modifica: l'ho fatto grub-install /dev/sdXX, cioè non il disco ma la partizione EFI è stata utilizzata per l'installazione di grub e ha funzionato.
Duck Dodgers il

3

questo è l'unico modo che ha funzionato per me: (Sistema: sdb8, avvio: sdb6, efi: sdb2)

sudo mount /dev/sdb8 /mnt 
sudo mount /dev/sdb6 /mnt/boot 
sudo mount /dev/sdb2 /mnt/boot/efi

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

sudo chroot /mnt

grub-install --target=x86_64-efi /dev/sdb

grub-install --recheck /dev/sdb

exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Cosa fa --recheck? Il manuale dice delete device map if it already exists?
MrCalvin

Se chiamo la voce di avvio in modo diverso dal valore predefinito, ad esempio --bootloader-id=Ubuntu_02l'avvio non riesce. Si avvia nella console di GRUB ... qualsiasi soluzione?
MrCalvin,

sì. sembra grub-install --rechecknecessario. Risolto il problema con il mio EFI USB HDD non funzionante.
solsTiCe

2

Grazie a @ cl-netbox per le istruzioni!

Dopo l'aggiornamento (da Linux Mint 18.2 Sonya a 18.3 Sylvia) il mio sistema non si avviava, quindi ho seguito le istruzioni sopra ma ancora non ci sono riuscito. Ho notato tuttavia che la mia macchina ha / si avvia in una partizione separata (probabilmente perché sto usando LVM) quindi il mio processo leggermente modificato è stato:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXY /mnt/boot
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub 

Nota: sdX = disk | sdXX = partizione efi | sdXY = partizione di avvio | sdXXX = partizione di sistema


Avevo un sistema Ubuntu Bionic in esecuzione sul quale ho accidentalmente fatto rm -Rf / boot / efi! Il mio sistema era ancora in esecuzione, quindi ho provato ad usare gli ultimi due comandi (grub-install / dev / mapper / ubuntu - vg-root AND update-grub). Riavviato e tutto funziona perfettamente. Phewy and thanks :)
Roel Van de Paar,

2

Inoltre, se si avvia il ripristino da cd live per il ripristino, potrebbe accadere che manchi il pacchetto grub-efi-amd64-bin e quindi la riga

"grub-install --target=x86_64-efi /dev/sdb" 

fallisce con il messaggio di errore: "grub-install: errore: /usr/lib/grub/x86_64-efi/modinfo.sh non esiste. Specificare --target o --directory."

In questo caso eseguilo al di fuori di chroot

sudo apt get grub-efi-amd64-bin

e quindi aggiungi / usr / lib / grub / x86_64-efi ai supporti chroot.

BTW "/ dev / sdb" param è obsoleto e viene ignorato.


0

oltre alla risposta ci-netbox.
Se la versione del tuo sistema operativo pendrive non corrisponde a quella installata sul disco, grub-install potrebbe avere difficoltà a identificare la corretta installazione di grub:

$ sudo chroot /mnt
# grub-install /dev/sdX
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. 
Please specify --target or --directory.

Prova a identificare manualmente l'installazione da utilizzare

# ls /usr/lib/grub/
grub-mkconfig_lib  x86_64-efi  x86_64-efi-signed

Quindi riavviare grub-install:

# grub-install --target=x86_64-efi /dev/sdX 
Installing for x86_64-efi platform.
Installation finished. No error reported.

0

Se ti capita di perdere la partizione EFI, è facile recuperarla. Puoi usare fdisko partedper creare una nuova partizione GPT con il tipo "EFI partition (1)" e formattarla con:

sudo mkfs.msdos /dev/sdX

quindi montalo e puoi seguire run:

sudo grub-install /dev/sdX

come in altre soluzioni.


0

quindi la mia ipotesi è che il motivo del problema è che l'installazione di Ubuntu non sta montando la partizione efi se fstab. e aggiorna grub. in aggiornamento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.