Inhaltsverzeichnis
GRUB2 unter Windows installieren
Möchte man andere Betriebssysteme neben Windows installieren, bietet sich GRUB2 an, das mit UEFI kompatibel ist. Es gibt also einen GRUB2-Installer, der im UEFI einen weiteren Starteintrag erstellt, mit dem direkt der EFI GRUB2-Loader gestartet wird.
- Hier gibt es GRUB2 for Windows. In beliebiges Verzeichnis entpacken.
- Zunächst muss die EFI-Systempartition verfügbar gemacht werden (s. EFI Partition verfügbar machen). Angenommen, sie ist als Laufwerk A: gemounted.
- Aus einer Administrator-DOS-Box im GRUB2-Verzeichnis führt man nun aus:
grub2-install --target=x86_64-efi --efi-directory=A: --boot-directory=A:\EFI\BOOT --bootloader-id=NAME
wobei --boot-directory und --bootloader-id frei gewählt werden können und angenommen wird, es handelt sich um ein x86 64bit System. - Wenn alles fehlerfrei gelaufen ist, gibt es jetzt im UEFI einen weiteren Starteintrag für den GRUB2 EFI-Loader, und der Windows-Starteintrag wurde davon nicht berührt.
- Im Verzeichnis A:\EFI\BOOT\grub muss jetzt eine grub.cfg erzeugt und mit Inhalt gefüllt werden, damit GRUB2 beim Booten auch ein Menü anzeigen kann. --> https://www.gnu.org/software/grub/manual/grub/grub.html
- Das gleiche wird für die Installation auf einem Wechselmedium (USB-Stick) ausgeführt, allerdings mit dem zusätzlichen Parameter --removable
GRUB2 Config
USB-Stick suchen
Außerhalb der menuentry Blöcke, steht das hier:
insmod search_fs_uuid search --no-floppy --set=usb --fs-uuid 0123-9876
0123-9876 ist die Datenträger-Seriennummer, die per chkdsk herausgefunden werden kann.
In den menuentry Blöcken ist ($usb) dann verwendbar und stellt den USB-Stick dar.
Win10 PE ISO image booten
Man benötigt wimboot
Der menuentry Block soll ungefähr so aussehen:
menuentry 'Windows 10 PE ISO' { insmod part_gpt insmod fat set isofile="Win10PE.iso" loopback loop ($usb)$isofile linux16 /EFI/BOOT/grub/wimboot rawbcd initrd16 \ newc:bootmgr:(loop)/BOOTMGR \ newc:bootmgr.exe:(loop)/bootmgr.exe \ newc:bcd:(loop)/Boot/bcd \ newc:segmono_boot.ttf:(loop)/Boot/fonts/segmono_boot.ttf \ newc:segoe_slboot.ttf:(loop)/Boot/fonts/segoe_slboot.ttf \ newc:segoen_slboot.ttf:(loop)/Boot/fonts/segoen_slboot.ttf \ newc:wgl4_boot.ttf:(loop)/Boot/fonts/wgl4_boot.ttf \ newc:boot.sdi:(loop)/Boot/boot.sdi \ newc:boot.wim:(loop)/sources/boot.wim }
GRUB environment variables
Einige Dinge, wie z.B. timeout und default Startblock können außerhalb der grub.cfg gepflegt werden. In der grub.cfg sollte nur am Anfang stehen:
load_env
Diese Variablen werden in einem Blockfile neben der grub.cfg gespeichert, welches so erzeugt wird:
grub-editenv A:\EFI\BOOT\grub\grubenv create
vorausgesetzt, A:\EFI\BOOT\grub\ ist das korrekte Verzeichnis der grub.cfg.
Werte setzen geht so:
grub-editenv A:\EFI\BOOT\grub\grubenv set timeout=5 grub-editenv A:\EFI\BOOT\grub\grubenv set saved_entry=0
saved_entry definiert hierbei persistent den Standardeintrag, der nach Ablauf des Countdowns automatisch geladen wird.