Efibootmgr
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.
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
Der Pfad des zu bootenden EFI Images muss \ (Backslash) anstelle von / (Schrägstrich) als Pfadtrenner verwenden.
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]
Entfernung
Unmerge
root #
emerge --ask --depclean --verbose sys-boot/efibootmgr
Siehe auch
- REFInd — a boot manager for UEFI platforms.
- EFI stub — describes EFI stub kernels, i.e. kernels directly executable from UEFI.
- Efivarfs — a filesystem in the Linux kernel that enables users to create, delete, and modify (U)EFI variables
- Template:LinkHandbook:AMD64/Installation/Bootloader im Gentoo Handbuch
Referenzen
- ↑ Zumindest für Dell-EFI-Firmware wurde dafür ein Workaround in Kernel 5.10 implementiert: https://lkml.org/lkml/2020/9/18/228
- ↑ UEFI 2.10 Specification, 3.5.1.1 Removable Media Boot Behavior