Nach einem langen Recherchetag kann ich nun meine eigene Frage beantworten: Ja, das ist möglich, und Sie können diese Partition sogar als / boot verwenden und Ihre Kernel / initramfs / etc speichern. Dort.
Bedarf:
- Grub> = 2.00 (1.98 und 1.99 funktionieren nicht)
- Grub muss von einem Linux-Kernel installiert werden, der EFI-Variablen unterstützt (
CONFIG_EFI_VARS
kompiliert in oder als Modul efivars
).
- Zum Erstellen des EFI-Starteintrags benötigen Sie
efibootmgr
Installieren:
Mounten Sie zuerst Ihre EFI-Partition in / boot
mount /dev/sdX1 /boot
Wenn Sie sich den Mount-Eintrag ansehen, werden Sie sehen, dass es sich einfach um eine FAT (32) -Partition handelt. Unter /boot
sollte sich ein Verzeichnis befinden efi
.
Wie Grub aufruft efibootmgr
, sollten Sie folgendes laden evivars
, wenn es nicht im Kernel kompiliert ist:
modprobe efivars
Jetzt kannst du grub installieren:
# Replace x86_64 by i386 for 32 bit installations
grub2-install --target=x86_64-efi
Grub installiert seine Dateien wie gewohnt nach /boot/grub2
. Wenn alles richtig funktioniert hat, solltest du jetzt auch einen Ordner /boot/efi/grub2
oder haben /boot/efi/your_distros_name
. Mit können --bootloader-id=isert_name_here
Sie auch den Namen für den Ordner selbst festlegen.
Grub ruft efibootmgr
automatisch auf und erstellt einen Starteintrag mit diesem Namen im EFI-Startmenü (in meinem Fall bedeutet dies, dass er im EFI-Menü als bootfähiges Gerät angezeigt wird, nicht sicher, ob dies auf jeder EFI-Karte der Fall ist).
Das weitere Setup unterscheidet sich nicht vom üblichen Setup von grub2, es grub2-mkconfig
werden die entsprechenden Module für EFI zu Ihrem hinzugefügt grub.cfg
.
Kettenladen von Windows:
Da ich nach einem Dual-Boot mit Windows gefragt habe, werde ich die Grub-Konfiguration für das Chainloading einschließen:
Das Kettenladen einer Windows-Installation unter EFI unterscheidet sich geringfügig von der Installation auf einer MBR-Festplatte. Stattdessen benötigen Sie die Module ntfs
oder part_mbr
nicht fat
und part_gpt
werden benötigt.
Das Festlegen von root ist nicht erforderlich. Diese Informationen werden vom Windows-eigenen Boot-Manager gespeichert. Geben Sie stattdessen den search
Befehl an. Die dafür benötigten Parameter können mit festgelegt werden
grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Dadurch erhalten Sie die Parameter für die Suche, die den Speicherort der EFI-Partition angeben. Es sollte ungefähr so aussehen:
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
Anstatt chainloader
die Anzahl der zu lesenden Sektoren anzugeben, müssen Sie den Pfad zum EFI-Ladeprogramm von Windows in der EFI-Partition festlegen. Dies ist für alle Windows EFI-Installationen gleich. Der resultierende Eintrag sollte folgendermaßen aussehen:
menuentry "Microsoft Windows x86_64 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root <insert ouput from grub-probe here>
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
Quellen: Diese decken einige weitere Fälle ab. Wenn Sie von EFI booten möchten, sollten Sie sie lesen:
mount /dev/sdXX /boot/efi
, dann folgte dies und liefbcdedit /set {bootmgr} path \EFI\fedora\shim.efi
von Windows zu EFI-Bootstrap.