Efibootmgr

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Efibootmgr and the translation is 99% complete.
Outdated translations are marked like this.

efibootmgr ist ein Werkzeug zur Verwaltung von UEFI-Booteinträgen.

Es handelt sich nicht um einen Bootloader. Es ist ein Werkzeug, das mit der EFI-Firmware des Systems interagiert, die selbst als Bootmanager fungiert. Mit efibootmgr können Booteinträge erstellt, umgeschichtet und entfernt werden.

Installation

Kernel

CONFIG_EFIVAR_FS muss in der Kernel-Konfiguration aktiviert sein.

Hinweis
Es ist nicht möglich, efivarfs ohne EFI runtime services zu nutzen, das (falls es z.B. mit der Kernel-Konfiguration CONFIG_EFI_DISABLE_RUNTIME=y als Voreinstellung deaktiviert wurde) mit der Kernel-Kommandozeile efi=runtime (wieder) aktiviert werden kann.

Emerge

Das Paket sys-boot/efibootmgr hat keine USE-Flags. Sie müssen es lediglich installieren:

root #emerge --ask sys-boot/efibootmgr

Konfiguration

EFI Variablen

Um efibootmgr erfolgreich nutzen zu können, muss auf das Dateisystem der EFI-Variablen zugegriffen werden können. Dies setzt voraus, dass das System im EFI-Modus gebootet wurde (und nicht über den MBR-Modus der Firmware), da sonst nicht auf die EFI-Variablen selbst zugegriffen werden kann. Wenn sich das System im MBR-Modus befindet, starten Sie es neu und führen Sie die notwendigen Schritte durch, um die Systemfirmware zum Booten im EFI-Modus zu veranlassen. Normalerweise muss dazu entweder eine Option in den Einstellungen der Firmware geändert oder ein EFI-Boot-Eintrag im Boot-Menü des Systems ausgewählt werden.

Wenn sich das System im EFI-Modus befindet, führen Sie den folgenden Befehl aus, um die Existenz eines eingehängten efivarfs zu überprüfen:

root #mount | grep efivars
efivarfs on /sys/firmware/efi/efivars type efivarfs (ro,relatime)

Es ist durch das sysfs-Init-Skript read-only (ro) gemountet), so dass es manuell mit dem folgenden Befehl im Boot-Menü des Systems wieder read-write (rw) gemountet werden muss:

root #mount -o remount,rw -t efivarfs efivarfs /sys/firmware/efi/efivars

Voraussetzungen

Wenn eine EFI-Systempartition (ESP) nicht vorhanden ist, muss eine erstellt werden, siehe EFI-Systempartition.

Bedienung

Boot-Einträge auflisten

Wenn Sie eine ältere Version von efibootmgr verwenden, geben Sie zusätzlich die Option --verbose oder -v an:

root #efibootmgr
BootCurrent: 0002
Timeout: 3 seconds
BootOrder: 0003,0003,0002,0000,0004
Boot0000* CD/DVD Drive  BIOS(3,0,00)
Boot0001* Hard Drive    BIOS(2,0,00)
Boot0002* Gentoo        HD(1,800,61800,6d98f360-cb3e-4727-8fed-5ce0c040365d)File(\EFI\boot\bootx64.efi)
Boot0003* Hard Drive    BIOS(2,0,00)P0: ST1500DM003-9YN16G

Boot-Eintrag erstellen

Um einen EFI Boot-Eintrag zu erstellen werden ein paar Argumente an efibootmgr übergeben:

  • --create oder -c um einen neuen Eintrag zu erstellen;
  • --part oder -p gefolgt von der Partitions-Nummer auf der die EFI-Systempartition untergebracht ist;
  • --disk oder -d gefolgt von der Festplatte auf der die EFI Systempartition untergebracht ist;
  • --label oder -L gefolgt von dem Namen der als Boot-Eintrag verwendet werden soll;
  • --loader oder -l gefolgt von dem Pfad des zu bootenden EFI Image
Wichtig
Der Pfad des zu bootenden EFI Images muss \ (Backslash) anstelle von / (Schrägstrich) als Pfadtrenner verwenden.
Wichtig
Wenn die ESP bereits von einem anderen Betriebssystem erstellt wurde, kann es außerdem einen anderen Namen haben als /efi/EFI. Wenn die ESP von einem anderen Betriebssystem erstellt wurde, beginnen Sie den EFI-Boot-Eintrag mit diesem Verzeichnisnamen, der unmittelbar auf /efi folgt.

Nachfolgend finden sich Beispiele, wie UEFI-Starteinträge erstellt werden können. Wenn dies die Ordnerstruktur ist:

root #tree /efi/ -L 3
/efi/
└── EFI
    ├── Grub
    │   └── grubx64.efi
    └── Gentoo
        └── bzImage.efi

Dann wird der Loader-Pfad wie folgt lauten:

root #efibootmgr -c -L "Grub" -l '\EFI\Grub\grubx64.efi'
root #efibootmgr -c -L "Gentoo" -l '\EFI\Gentoo\bzImage.efi'

Beispiel:

root #efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l " '\efi\boot\bootx64.efi'

Es ist möglich, Parameter an die Kernel-Kommandozeile anzufügen – was aber nicht von allen UEFIs unterstützt wird:[1]

root #efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l '\efi\boot\bootx64.efi' -u 'root=/dev/sda3 initrd=\efi\boot\initramfs.img quiet'

Optional können zusätzliche Kernel installiert und in der UEFI-Firmware eingetragen werden. Das ist besonders dann nützlich, wenn mehrere Kernel-Versionen oder -Konfigurationen getestet werden sollen, oder zum Dual-Boot mit einem anderen Betriebssystem. Korrekt konfigurierte UEFI-Bootloader-Einträge werden im UEFI-Startauswahlmenü (Boot Selection) angezeigt, das nur bei Drücken einer dafür vorgesehenen Taste beim Initialisieren des Systems (nach dem Einschalten) erscheint. Der zuletzt hinzugefügte Eintrag erhält automatisch die höchste Priorität und ist daher die Voreinstellung. Wenn Ihnen die für das UEFI-Bootmenü zu drückende Taste nicht bekannt ist, finden Sie diese Information in der Dokumentation des Herstellers Ihres Systems (des Computers oder der Hauptplatine); üblicherweise ist es nicht schwierig, das herauszufinden.

Boot-Eintrag löschen

Bevor Sie einen Eintrag löschen, finden Sie zuerst heraus welche ID er hat.

Um den oben gezeigten Gentoo-Eintrag zu löschen (der Boot0002 als Kennung besitzt), bitten Sie efibootmgr darum den Eintrag mit der ID 2 zu löschen. Übergeben Sie die Argumente --bootnum oder -b mit der Kennung und --delete-bootnum oder -B um den Eintrag zu löschen:

root #efibootmgr -b 2 -B 2

Wechseldatenträger

EFI-Bootloader auf Wechseldatenträgern werden nicht als UEFI-Booteinträge konfiguriert, daher werden Konfigurationsprogramme wie efibootmgr dafür nicht benötigt. Stattdessen identifiziert die Computer-Firmware Bootmöglichkeiten auf wechselbaren oder externen Datenträgern durch vordefinierte und für die jeweilige Systemarchitektur einzigartige Dateinamen, in vordefinierten Pfaden.[2]

Manche (U)EFI-Implementierungen unterstützen diese Wechseldatenträger-Pfade (engl. removable media boot path) auch als Ausweichlösung (engl. Fallback) auf internen Laufwerken.[3] Dies ist entgegen der EFI-Spefifikation und sollte vermieden werden, kann aber auf Systemen mit fehlerhaftem (U)EFI helfen. Dabei ist jedoch zu beachten, dass jeweils nur ein einziger Fallback-Bootloader auf einem konkreten System möglich ist, was den pro Architektur vorgegebenen standardisierten Bootloader-Pfaden und -Dateinamen geschuldet ist.

Architektur Abkürzung Dateiname Maschinen-Typ der Programmdatei im PE-Binärformat
x86 32-bit IA-32 \efi\boot\bootia32.efi 0x14c
x86-64 x64 \efi\boot\bootx64.efi 0x8664
Itanium IA-64 \efi\boot\bootia64.efi 0x200
ARM 32-bit AArch32 \efi\boot\bootarm.efi 0x01c2
ARM 64-bit AArch64 \efi\boot\bootaa64.efi 0xAA64
RISC-V 32-bit \efi\boot\bootriscv32.efi 0x5032
RISC-V 64-bit \efi\boot\bootriscv64.efi 0x5064
RISC-V 128-bit \efi\boot\bootriscv128.efi 0x5128
Loongson 32-bit LoongArch32 \efi\boot\bootloongarch32.efi 0x6232
Loongson 64-bit LoongArch64 \efi\boot\bootloongarch64.efi 0x6264
Hinweis
Um von einem wechselbaren/externen Datenträger zu starten muss die Firmware darauf nach kompatiblen Bootloadern suchen. Ob dies geschieht kann im BIOS-Setup eingestellt werden. Auch welche externen Datenträger unterstützt werden hängt von der jeweiligen Firmware ab. Wie die meisten System-Firmwares nutzt (U)EFI eine Schnelltaste (engl. hotkey), die während der Initialisierung gedrückt werden muss, um eine Startauswahl anzuzeigen (zu BIOS-Zeiten bekannt als "BIOS Boot Selection", kurz BBS), ansonsten startet das System von der jeweils per Starteintrag festgelegten Option. Es gibt allerdings auch fehlerhafte (U)EFI-Firmware, die u.U. immer dem Wechseldatenträger-Pfad den Vorzug gibt, auch auf internen Laufwerken.

Um den Wechseldatenträger-Pfad zu verwenden reicht es aus, den jeweiligen EFI-Bootloader in den vordefinierten Pfad in den von der Architektur abhängigen Dateinamen zu kopieren. Sollte die Firmware diese Ausweichlösung nutzen, kann dies allerdings mit dem Verlust der Auswahlmöglichkeit einhergehen, wie sie normalerweise mit den EFI-Starteinträgen (wie mit efibootmgr gelistet) ermöglicht würde. Obwohl auch die primären EFI-Bootloader spezifischer Betriebssysteme als EFI-Fallback verwendet werde können, ist es daher empfehlenswert, einen Boot-Manager wie beispielsweise GRUB, der selbst auch eine Startauswahl bietet, als Ausweichoption festzulegen. Vom oberen Beispiel für x64 (amd64):

root #cp /efi/EFI/Grub/grubx64.efi /efi/EFI/boot/bootx64.efi
Hinweis
Das FAT-Dateisystem auf der EFI-Systempartition (ESP) ist nicht case-sensitive, aber case-preserving (VFAT), während Unix und Linux stets strickt case-sensitive ist. Daher könnte es sein, dass der Pfad /efi/EFI/boot/bootx64.efi nicht auf allen Systemen funktioniert, da dieser Großbuchstaben enthalten könnte, z.B. /efi/EFI/BOOT oder /efi/EFI/Boot; dasselbe gilt für bootx64.efi. Mit dem Kommando tree -L 3 /efi (wenn die ESP unter /efi eingehängt ist), zeigt die tatsächlich vorhandenen (Pfad- und Datei-) Namen auf einem konkreten System, die Sie daher auf Ihrem System auf der oben gezeigten Kommandozeile verwenden müssen.
Wichtig
Der Fallback-Bootloader im Wechseldatenträger-Pfad wird nicht automatisch aktualisiert! Jedes Mal, wenn Sie z.B. GRUB auf der ESP neu installieren (wie beispielsweise nach der Aktualisierung auf eine neuere Version, die möglicherweise auch Sicherheitsaktualisierungen beinhaltet), müssen Sie den aktualisierten Bootloader abermals als Ausweichlösung in den vorgegeben Pfad kopieren und die vorherige Version überschreiben!

Der Boot-Manager von systemd, systemd-boot (vormals Gummiboot), installiert sich automatisch jeweils in den Wechseldatenträger-Pfad der jeweiligen Architektur. Wenn sys-apps/systemd mit dem boot USE-Flag aktualisiert wird, reicht es aus, bootctl auszuführen, um beide Bootloader (den per EFI-Booteintrag konfigurierten und den identischen Fallback-Bootloader) auf der ESP zu aktualisieren.

root #bootctl update

Entfernung

Unmerge

root #emerge --ask --depclean --verbose sys-boot/efibootmgr

Siehe auch

Referenzen