Der Modus ( Legacy BIOS
oder UEFI
) wird vom Bootloader bestimmt, der auf den USB-Stick- und BIOS-Einstellungen installiert ist.
Das Windows 7-Installationsmedium sollte beide ( Legacy BIOS
und UEFI
) unterstützen. Für letztere hängt es von Ihren Einstellungen ab. Da Sie jedoch von Ihrer UEFI-Festplatte booten können und Ihr Win7-USB-Stick im Legacy BIOS
Modus startet , sollte er auf "beides" eingestellt sein, was bedeutet, dass Ihr BIOS unterstützt UEFI
und als Fallback in den Legacy BIOS
Modus booten kann.
Um das Problem zu lösen, würde ich Ihnen raten, ein Win7-Image mit UEFI-Unterstützung zu installieren (ich weiß nicht einmal, ob es eines ohne gibt), und Sie sollten Ihr BIOS explizit auf den UEFI-Modus einstellen (kein kombinierter Modus ).
Aber wenn dies nicht funktioniert und um Ihre Frage zu beantworten: Dies sollte funktionieren:
Platzieren Sie das Win7-Image auf Ihrem HDD
oder USB-Drive
und wählen Sie die richtigen Module aus (folgen Sie den Kommentaren):
menuentry "Windows 7" --class windows --class os {
# Insert modules needed in order to access the iso-file
# choose the right module for the partition-table-scheme the image lies on
insmod part_gpt
insmod part_msdos
# choose the right module for the filesystem the image lies on
insmod ntfs
insmod fat
insmod ext2
# Insert module needed in order to find partition
insmod search_fs_uuid
# Set UUID of partition with the iso-image
# and let grub2 find the partition
# (save it's identifier to the variable $root)
set uuid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
search --no-floppy --set=root --fs-uuid $uuid
# Mount the iso image by addressing it with (partition)/path
set iso=/images/Win7_English_x64.iso
loopback loop ($root)$iso
# boot (chain-load) the windows7-image using the bootmgfw.efi file located
# on the Win7-ISO-Image
chainloader (loop)/efi/microsoft/boot/bootmgfw.efi
}
Wenn Sie das Image direkt auf den USB-Stick kopieren möchten, sollten Sie die set iso=
- und loopback loop ($root)$iso
-Teile weglassen, die zum Mounten der ISO erforderlich sind. Ihr Kettenlader ist dannchainloader ($root)/efi/microsoft/boot/bootmgfw.efi
ntldr.mod
ist spezifisch für diei386-pc
Architektur von GRUB, da NTLDR für seine Arbeit auf das ältere BIOS angewiesen ist. Auf einem UEFI-System haben Sie eine Version von GRUB mit derx86_64-efi
Architektur, die nur andere UEFI-Bootloader verketten kann ... was ausschließtNTLDR
. Außerdem bootet Windows XP überhaupt nicht von GPT-Partitionen, nicht einmal von der 64-Bit-Version von XP. Das üblichere 32-Bit-XP unterstützt GPT überhaupt nicht.Ich habe herausgefunden, dass der richtige Bootloader von Windows irgendwo in den großen gepackten Dateien versteckt ist, die auf dem Installationsimage enthalten sind. Es kann entpackt, in das richtige Boot-Verzeichnis gestellt und dann wie gewohnt mit GRUB2 Chainloader geladen werden. Ich verstehe nicht warum, obwohl Microsoft den richtigen Loader hat, versteckt er ihn irgendwo tief und legt den seltsamen in das Standard-Boot-Verzeichnis. Es hat bei mir funktioniert (obwohl ich die Datei auf der Seite mit den Anweisungen heruntergeladen habe, die ich gefunden habe, weil das Auspacken ziemlich mühsam war). Leider erinnere ich mich nicht an Details, ich habe irgendwo im Web ein Handbuch gefunden, aber die allgemeine Idee wird beschrieben.
quelle
chainloader (loop)/EFI/MICROSOFT/BOOT/bootmgfw.efi
Oder für Windows 7 auf einer Partition:chainloader ($root)/EFI/MICROSOFT/BOOT/bootmgfw.efi
Möglicherweise müssen Sie dies und das kombinieren .