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_VARSkompiliert 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 /bootsollte 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/grub2oder haben /boot/efi/your_distros_name. Mit können --bootloader-id=isert_name_hereSie auch den Namen für den Ordner selbst festlegen.
Grub ruft efibootmgrautomatisch 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-mkconfigwerden 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 ntfsoder part_mbrnicht fatund part_gptwerden benötigt.
Das Festlegen von root ist nicht erforderlich. Diese Informationen werden vom Windows-eigenen Boot-Manager gespeichert. Geben Sie stattdessen den searchBefehl 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 chainloaderdie 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.efivon Windows zu EFI-Bootstrap.