Wie kann ich GRUB auf der EFI-Partition neu installieren?

32

Ich möchte GRUB 2 neu installieren und habe die folgenden Anweisungen gefunden: So können Sie Grub 2 mit einer Ubuntu Live-CD oder einem USB-Stick reparieren, wiederherstellen oder neu installieren . In meinem Fall ist der Bootloader in der EFI-Partition installiert. Wenn ich die in diesem Handbuch angegebenen Befehle verwende, wird GRUB automatisch auf der EFI-Partition neu installiert, oder wird es auf der Root-Partition installiert, auf der Ubuntu installiert ist? Offensichtlich möchte ich nicht, dass dies geschieht.

Generoso
quelle
3
Die Anweisungen im angegebenen Link gelten nur für die Neuinstallation von GRUB im Legacy-BIOS-Modus. In Ihrem Fall funktioniert dies nicht. Um GRUB auf einer Ubuntu-Installation im EFI-BIOS-Modus neu zu installieren, lesen Sie bitte meine Antwort. :)
Cl-Netbox
Vielen Dank! :) Ich habe einige Fragen: Als ich Ubuntu auf meinem UEFI-System installiert habe, habe ich zwei Einträge im BIOS gefunden. Gibt es eine Möglichkeit, einen Unic Ubuntu-Eintrag zu erhalten? Kann ich im Fall einer MBR-Partitionstabelle (also ohne EFI oder eine andere Startpartition) dieselben Befehle verwenden, mit Ausnahme von: sudo mount / dev / sd ** / mnt / boot / efi?
Generoso
Sie können versuchen, den zweiten Ubuntu-Eintrag mit sudo efibootmgr (listet alle Einträge auf) | zu entfernen sudo efi bootmgr -b <Eintragsnummer> -B .... und um GRUB im alten BIOS-Modus neu zu installieren, führen Sie die folgenden Befehle aus: sudo mount / dev / sd ** / mnt | sudo grub-install --boot-directory = / mnt / boot / dev / sd * (* = Festplatte | ** = Systempartition)! :)
Cl-Netbox
Perfekt :) Wie auch immer, wenn ich ein UEFI-System und damit eine EFI-Partition habe, gibt es eine Möglichkeit, das Überschreiben von Grub zu vermeiden, wenn ich eine neue Windows-Installation durchführe?
Generoso
Nun, Microsoft kümmert sich nur um ihre eigenen Produkte, sodass Sie Linux-Systeme installieren können, ohne Windows Schaden zuzufügen - leider ist dies nicht andersherum der Fall -, wenn Sie also Windows nach der Installation installieren Ubuntu, Sie müssen den GRUB-Bootloader anschließend wiederherstellen. :)
Cl-Netbox

Antworten:

54

Installieren Sie den GRUB-Bootloader auf diese Weise im EFI-Modus erneut auf Ihrer Ubuntu-Installation ...

Booten Sie vom Ubuntu-Installationsmedium und wählen Sie "Ubuntu ohne Installation testen".
(Booten Sie Ihr Installationsmedium im EFI-Modus, und wählen Sie den Ubuntu-Eintrag mit UEFI im Vordergrund aus.)

Öffnen Sie auf dem Live-Desktop ein Terminal und führen Sie die folgenden Befehle aus:

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  

Hinweis: sdX= Festplatte | sdXX= EFI-Partition | sdXXX= Systempartition

Um die Partitionen mit GParted zu identifizieren, ist das Tool auf dem Installationsmedium enthalten.
Nach dem Ausführen der Befehle wird GRUB in der separaten EFI-Partition installiert.

cl-netbox
quelle
+1 aber warum installierst du nicht von Ubuntu selbst?
1
@MarkYisri: Vielen Dank! :) Weil es der sicherste Weg ist, den GRUB-Bootloader neu zu installieren, ohne die Dinge zu beschädigen, und falls das System nicht richtig bootet ... der einzige Weg, dies zu tun! :)
Cl-Netbox
1
Woher weiß 'grub-install' in dieser Lösung, dass es im EFI-Modus installiert werden soll?
user334639
3
Der wichtige Punkt ist, das Installationsmedium im richtigen Boot-Modus grub-efizu booten. Wenn wir neu installieren möchten, müssen wir im UEFI-Modus booten. Wenn wir neu installieren möchten, müssen grub-pcwir im Legacy-Modus booten.
mook765
1
Dies funktionierte für mich mit einer Ausnahme: Ich tat es grub-install /dev/sdXX, dh nicht die Festplatte, sondern die EFI-Partition wurde für die Installation von Grub verwendet und es funktionierte.
Duck Dodgers
3

Dies ist der einzige Weg, der bei mir funktioniert hat: (System: SDB8, Boot: 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
Chilu Pereira
quelle
Was macht --recheckdas? Das Handbuch sagt delete device map if it already exists?
MrCalvin
Wenn ich den Boot-Eintrag etwas anderes nenne als den Standard, --bootloader-id=Ubuntu_02schlägt zB der Boot fehl. Es bootet einfach in der Grub-Konsole ... irgendeine Lösung?
MrCalvin
Ja. es scheint grub-install --rechecknötig zu sein. Es hat mein nicht funktionierendes USB HDD EFI behoben.
Solstice
2

Danke an @ cl-netbox für die Anleitung!

Nach dem Upgrade (Linux Mint 18.2 Sonya auf 18.3 Sylvia) konnte mein System nicht mehr gestartet werden. Daher habe ich die obigen Anweisungen befolgt, aber immer noch keinen Erfolg. Ich bemerkte jedoch, dass mein Computer / boot in einer separaten Partition hat (möglicherweise, weil ich LVM verwende), so dass mein leicht modifizierter Prozess war:

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 

Hinweis: sdX = disk | sdXX = EFI-Partition | sdXY = Startpartition | sdXXX = Systempartition

Rob Pearman
quelle
Ich hatte ein laufendes Ubuntu Bionic-System, auf dem ich versehentlich rm -Rf / boot / efi gemacht habe! Mein System lief noch, also habe ich versucht, die letzten beiden Befehle zu verwenden (grub-install / dev / mapper / ubuntu - vg-root UND update-grub). Neustart und alles funktioniert einwandfrei. Puh und danke :)
Roel Van de Paar
2

Außerdem kann es beim Booten von einer Live-CD zur Wiederherstellung vorkommen, dass Sie das Paket grub-efi-amd64-bin und dann line vermissen

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

schlägt mit folgender Fehlermeldung fehl: "grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh existiert nicht. Bitte geben Sie --target oder --directory an."

In diesem Fall laufen diese außerhalb von Chroot

sudo apt get grub-efi-amd64-bin

Fügen Sie dann / usr / lib / grub / x86_64-efi zu den Chroot-Mounts hinzu.

BTW "/ dev / sdb" Parameter ist veraltet und wird ignoriert.

mprot
quelle
0

zusätzlich zu ci-netbox antworten.
Wenn Ihre pendrive-Betriebssystemversion nicht mit der auf der Festplatte installierten Version übereinstimmt, kann es bei grub-install schwierig sein, die richtige grub-Installation zu ermitteln:

$ 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.

Versuchen Sie, die zu verwendende Installation manuell zu identifizieren

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

Dann starte grub-install neu:

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

Wenn Sie die EFI-Partition verlieren, ist es einfach, sie zurückzugewinnen. Sie können mit fdiskoder partedeine neue GPT-Partition mit dem Typ "EFI-Partition (1)" erstellen und diese formatieren mit:

sudo mkfs.msdos /dev/sdX

dann montiere es und du kannst run folgen:

sudo grub-install /dev/sdX

wie bei anderen lösungen.

Cengique
quelle
0

Meine Vermutung ist der Grund für das Problem, dass die Ubuntu-Installation die efi-Partition nicht mounten kann, wenn fstab. und Updates grub. beim Update.

Shimon Doodkin
quelle