Grub2Win

Aus Reparatur.IT
Zur Navigation springen Zur Suche springen

Ihttp://sourceforge.net/projects/grub2win/

Es gibt den Windows-Standard-MBR und PBR bei Partitionen größer als 8 GB. Bootmgr ist der erste Bootloader.

Vermutung: BIOS aus Windows 7 Zeit endlich. Lesen Sie: Hersteller getestet Booten von einem Diskpart USB-Laufwerk.

BCD ist so konfiguriert, dass grub2win Loader geladen wird.

call :add_bootsector \grub2\winloader\grub2.boot "Start GRUB2"
Bootsector hinzufügen
for /f "tokens=1-3" %%a in ('%bcdedit% %BCD_store% /create /application BOOTSECTOR') do set guid=%%c
%bcdedit% %BCD_store% /set %guid% device boot
%bcdedit% %BCD_store% /set %guid% path %1
%bcdedit% %BCD_store% /set %guid% description "%~2"
%bcdedit% %BCD_store% /displayorder %guid% /addlast
goto :eof

Es gibt eine Konfigurationsdatei \grub2\grub.cfg. Loopback-fähige Anwendungen werden geladen. Außerdem wird grub4dos grub.exe aufgerufen, um BIOS-kompatible ISO-Images zu laden.

Bootmgr.efi kann grub2.boot nicht laden: Grub2Win funktioniert nicht im UEFI-Modus.

Im UEFI-Modus gehe ich von Windows Secure Boot aus (keine Hardware, nicht getestet).

Aktuelle Fedora's SecureBoot-Implentation: https://fedoraproject.org/wiki/Features/SecureBoot. Es gibt ein Bootloader-Shim der ersten Stufe, das von dem von Microsoft gehosteten Signierdienst signiert wurde. Shim lädt als nächstes Grub2.

http://www.nic.funet.fi/pub/mirrors/fedora...fc18.x86_64.rpm
copy boot\EFI\fedora\shim-fedora.efi EFI\boot\bootx64.efi
http://www.nic.funet.fi/pub/mirrors/fedora...fc18.x86_64.rpm
copy boot\EFI\fedora\gcdx64.efi boot\EFI\grubx64.efi
copy usr\lib\grub\x86_64-efi \EFI\boot\x86_64-efi

Es wird eine einzige grub.cfg-Datei verwaltet: \EFI\BOOT\grub.cfg lädt \grub2\grub.cfg

configfile /grub2/grub.cfg

Unterschiedliche Boot-Modi BIOS/UEFI sind in /grub2/grub.cfg definiert.

if [ "$grub_platform" = "pc" ]; then
 set root=$winpart
 set bootmode=BIOS
fi
if [ "$grub_platform" = "efi" ]; then
 insmod loopback
 set bootmode=UEFI
fi
menuentry "$bootmode: Windows" {
if [ "$grub_platform" = "pc" ]; then
 ntldr /bootmgr
else
 chainloader /efi/microsoft/bootx64.efi
fi
}
if [ "$grub_platform" = "pc" ]; then
menuentry "Windows XP x86 - loaded with grub4dos" {
 linux16 /grub2/grub.exe --config-file=configfile /images/XP_x86.lst
}
fi