ntldr.mod fehlt in GRUB2

7

Ich verwende Debian Wheezy auf dem EFI-Motherboard und benötige das ntldr-Modul in GRUB2, um bootmgr des Windows 7-Installationsprogramms zu laden, da es nur von selbst installiert wird (anscheinend unter Verwendung des Bootsektors des USB-Flash-Laufwerks, auf dem sich das Installationsprogramm befindet) auf MBR-formatierter Festplatte. Wenn ich GRUB mit grub-install installiere, wird ntldr.mod nicht zum Ordner der GRUB-Module hinzugefügt und kann nicht insmod.

  1. Warum? Wenn ich nur das GRUB-Paket ohne Installation herunterlade (apt-get download ...), befindet sich das Modul dort. Wenn ich die .mod-Datei aus dem heruntergeladenen Paket zum Modulordner des installierten GRUB und dann "insmod ntldr" über die GRUB-Befehlszeile hinzufüge, sagt dies etwas über die falsche "ELF-Magie" (?) Aus.
  2. Wie macht man das gewaltsam?
  3. Gibt es eine andere Möglichkeit, das Windows-Installationsprogramm im "GPT-Modus" zu starten, da ich nicht die gesamte Festplatte in MBR formatieren möchte.
alexey
quelle

Antworten:

3

Sie haben das Paket grub-pc heruntergeladen, das für BIOS-Boot-Maschinen vorgesehen ist, damit das Modul in der efi-Version von grub nicht geladen wird. Dieses Modul ist in der EFI-Version von grub nicht vorhanden, da es auf dem BIOS basiert.

Wenn Sie das Windows-Installationsprogramm von einem USB-Stick starten möchten, sollten Sie nichts mit grub tun. Sagen Sie einfach Ihrer Firmware, dass sie dieses Laufwerk anstelle Ihrer Festplatte mit Grub starten soll.

psusi
quelle
1

Der Modus ( Legacy BIOSoder UEFI) wird vom Bootloader bestimmt, der auf den USB-Stick- und BIOS-Einstellungen installiert ist.

Das Windows 7-Installationsmedium sollte beide ( Legacy BIOSund 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 BIOSModus startet , sollte er auf "beides" eingestellt sein, was bedeutet, dass Ihr BIOS unterstützt UEFIund als Fallback in den Legacy BIOSModus 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 HDDoder USB-Driveund 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

Arch Linux Tux
quelle
1

Sie müssen im Legacy-Modus booten, das ist alles. Geben Sie Ihre UEFI-Einstellungen ein und wählen Sie das richtige Startgerät. Wählen Sie nicht den Ubuntu-Eintrag, der für den EFI-Modus bestimmt ist. Booten Sie stattdessen von Ihrer Festplatte. Dann wird grub geöffnet. Wählen Sie dann ubuntu und führen Sie sudo update-grub erneut aus. Sie haben einen veralteten Bootloader für Ubuntu auf Ihrem Laufwerk, der im EFI-Modus bootet, aber Grub ist auch im MBR.

Maum Saja
quelle
0

Alexey, dieses Problem tritt häufig in grub2 auf. Ich bin auf dieses gestoßen, als ich durch die Ubuntu-Foren gestöbert habe, wo es als gelöst markiert ist. Schauen Sie dort nach: http://ubuntuforums.org/showthread.php?t=1343362 . Hoffentlich hilft dir das.

Der dunkle Ritter
quelle
2
Wie ich verstanden habe, sprechen sie über Windows ntldr, das selbst der Betriebssystemverlierer ist. Ich spreche über ntldr.mod von GRUB, das verwendet wird, um das ntldr von Windows von GRUB zu laden
alexey
Das ntldr.modist spezifisch für die i386-pcArchitektur 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 der x86_64-efiArchitektur, die nur andere UEFI-Bootloader verketten kann ... was ausschließt NTLDR. 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.
TelcoM
0

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.

alexey
quelle
Wo? Wo ist diese Datei?
HumbleWebDev
1
@HumbleWebDev versuchen Fenster Archive im Installationsimage für ntldr oder efi oder Boot - Dateien / Ordner (beispielsweise mit „find“ Dienstprogramm) suchen, denke ich , dass die Zeit ich auf diese Weise ging
alexey
Ich habe es gefunden. Ein YouTube-Tutorial, in dem erklärt wird, wie ein bootfähiges win7-USB-Medium erstellt wird, gab mir die Antwort.
HumbleWebDev
Ist es das, worauf Sie sich bezogen / gesucht haben? Für das Booten von einer Win7-ISO gilt Folgendes: chainloader (loop)/EFI/MICROSOFT/BOOT/bootmgfw.efiOder für Windows 7 auf einer Partition: chainloader ($root)/EFI/MICROSOFT/BOOT/bootmgfw.efiMöglicherweise müssen Sie dies und das kombinieren .
Arch Linux Tux