Efibootmgr

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Efibootmgr and the translation is 85% 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 Bootloader fungiert. Mit efibootmgr können Booteinträge erstellt, umgeschichtet und entfernt werden.

Installation

Kernel

CONFIG_EFIVAR_FS Unterstützung muss aktiviert werden:

KERNEL Enable EFI Variable filesystem support
File systems  --->
   Pseudo filesystems  --->
       <*> EFI Variable filesystem

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 jedoch die Applikation efibootmgr erfolgreich zu nutzen, muss auf das EFI Variablen Dateisystem zugegriffen werden können. Dies erfordert dass das System bereits mit EFI (und nicht durch das BIOS) gebootet ist, andernfalls sind die EFI Variablen selbst nicht zugänglich.

When the system is in EFI mode, run the following command to check for the existence of efivarfs:

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

Wenn es noch nicht gemountet ist (es sollte durch das sysfs Init-Skript gemountet werden), können Sie es auf diese Weise manuell mounten:

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

Um die aktuellen Boot-Einträge aufzulisten, verwenden Sie die Option --verbose oder -v:

root #efibootmgr -v
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
Additionally, if the ESP was already created by another OS, it might be named differently than /boot/efi. If an ESP was created by another OS, begin the EFI Boot entry using this directory name, which immediately follows /boot.


Wenn dies die Ordnerstruktur ist:

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

then the loader paths will be:

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

Beispiel:

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

It is also possible to add parameters - maybe not supported by all UEFI implementations[1] - to the kernel's command line:

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'

Optionally, additional kernels can be installed and made known to the UEFI firmware. This is especially useful when wanting to test more kernels or to dual-boot with another operating system. These will be shown in the boot selection prompt, normally after a keyboard hotkey is pressed at the right time during system initialization. The latest added entry always gets highest boot priority, so it will be default. If the hotkey combination is unknown, search for official documentation from the computer manufacturer. This information is usually not difficult to find.

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

Entfernung

Unmerge

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

Siehe auch

Referenzen

  1. At least for Dell EFI firmwares, a workaround was implemented in kernel 5.10: https://lkml.org/lkml/2020/9/18/228