UEFI Eintrag wiederherstellen (Grub)
Windows 7/8/10 Updates und der Biosbatteriewechsel löschen machmal ungefragt den UEFI-Eintrag von meinem Linux (Dualboot) aus dem BIOS. Bisher hab ich dass immer über ein Rettungslinux auf dem USB-Stick repariert, aber es gibt eine elegantere Methode, die ich nicht mehr vergessen will, also wird gebloggt.
Man muss wissen, dass es nicht langt, .EFI-Dateien auf der EFI-Partition zu haben, um diese booten zu können. Die UEFI-Firmware hat eine eigene Liste, in der die bootbaren Betriebssysteme stehen müssen. (Ich meine die Liste, die beim Drücken der <Boot Menu>-Taste (bei mir F11) während dem Booten erscheint.
Schritt 1: Linux (bei mir Fedora) über die UEFI-Shell starten
- F11
- UEFI-Shell wählen
- EFI-Partition auswählen: Anzeige aller Partitionen mit
mmodermap. Die Partitionen heißen bei mirfs0bisfs4bzwblk0bisblk4. Wechseln auf die Partition mit:Shell> fs0: - (der Doppelpunkt liegt im englischen Tastaturlayout auf SHIFT-Ö)
- Testen ob es die richtige Partition war, denn auf der EFI-Partition gibt es ein Verzeichnis namens
EFIShell> cd EFI - Wenn das fehlschlägt, eine andere Partition verwenden, z.B. mit
Shell> fs1:, dann wiederShell> cd EFIausprobieren. - Die richtige
.EFI-Datei suchen fs0> cd <tabtaste mehrfach drücken, bis FEDORA oder UBUNTU oder der Name deines Linux erscheint>fs0> <tabtaste mehrfach drücken und sich alle *.EFI Dateien merken>- (tab completion funktioniert hier, auch wenn man noch keine Buchstaben eingegeben hat)
- Die Efi-Dateien durchprobieren, bei mir klappen sowohl
GRUBX64.EFIals auchSHIM.EFI fs0> GRUBX64.EFI- Das genutzte Verzeichnis und die genutzte Datei merken!
Jetzt einen Booteintrag in UEFI hinterlegen (auf der Konsole des gestarteten Linux)
- Evtl efibootmgr installieren:
sudo apt-get install efibootmgr… sudo dnf install efibootmgr-… - Booteinträge und Bootreihenfolge anschauen:
$ sudo efibootmgr BootCurrent: 0003 Timeout: 1 seconds BootOrder: 0001,0002,0003 Boot0001* WINDOWS BOOT MANAGER Boot0002* Hard Drive Boot0003* UEFI: Built-in EFI Shell - Partition und Laufwerk der EFI-Partition herausfinden
$ mount | grep efi efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,......) /dev/sdb1 on /boot/efi type vfat (rw,......) - Laufwerk ist hier
/dev/sdb(ohne Zahl) und die Partition ist1(die Zahl) - Eintrag für Linux wiederherstellen
sudo efibootmgr -c -L "Mein Linux" -l /EFI/FEDORA/GRUBX64.EFI -d <Laufwerk> -p <Partitionsnummer>
Bootreihenfolge anpassen
sudo efibootmgr- Die Zeile „BootOrder: 0004, 0001, …“ gibt die aktuelle Bootreihenfolge an, die erste Nummer wird als erstes gestartet. Die Nummern beziehen sich auf die BootXXXX Zeilen.
- Jetzt eine neue Reihenfolge überlegen und aktivieren
sudo efibootmgr -o 1,0,2,3
So läuft es zumindest für mein ASRock Mainboard.