Ist es möglich, Windows 8.1 ohne eigenen Bootmanager zu booten?

Ist es möglich, Windows 8.1 ohne eigenen Bootmanager zu booten?

Ich habe versucht, einen einfacheren Weg zu finden, Windows und Linux im Dual-Boot-Modus auf meinem Laptop zu installieren, nicht unbedingt in dieser Reihenfolge. Normalerweise müssen wir zuerst Windows installieren und dann Linux und GRUB die Handhabung von Windows überlassen.

Ich versuche also, diesen lästigen Installationsprozess (Windows) zu umgehen und einfach ein Image zu verwenden, das ich direkt auf mein Laufwerk kopiere. Dadurch könnte ich auch meinen Bootmanager (GRUB) behalten. (Nicht, dass ich ihn nicht später wiederherstellen könnte, aber es ist Microsofts Monopolpolitik, in diesem Fall die Existenz anderer Bootmanager im System zu leugnen.)

Ich habe mir zunächst eine legale Kopie von Windows 8.1 besorgt und es dann mit VirtualBox auf einer virtuellen Maschine installiert. Anschließend habe ich auf meiner GPT-partitionierten Festplatte eine NTFS-Partition erstellt und den Inhalt der Windows-Partition aus dem VDI-Image auf die neu erstellte Partition kopiert.

Natürlich funktioniert es noch nicht. Ich weiß nicht, wie man bootmgr ersetzt. Es gibt

File: \Boot\BCD
Status: 0xc000000e
Info: The Boot Configuration Data for your PC is missing or contains errors.

weil es die Datei auf der anderen Partition, die zum Booten, zur Systemwiederherstellung usw. verwendet wird, nicht finden kann.

Nun habe ich gelesen, dass Bootmgr schließlich winload.exe ausführt, um Windows zu starten. Ich habe keine Ahnung, was ich als Nächstes tun soll.

Ich gehe davon aus, dass es theoretisch funktionieren sollte, da ich alle zum Ausführen von Windows erforderlichen Dateien habe. Ich denke auch, dass ich nicht der Einzige bin, der daran gedacht hat, und dass ich daher hier möglicherweise etwas sehr Grundlegendes übersehe. Vielleicht ist es bereits erledigt?

Ich habe keine Ahnung, wie das Booten funktioniert. Was ich verstanden habe, ist, dass beim Dual-Boot von Windows und Linux der Windows-Bootloader an den von Linux gekoppelt wird. Ich versuche also, den Windows-Bootloader irgendwie loszuwerden.

BEARBEITEN

Ich habe mir die Binärdateien angesehen bootmgrund \Boot\BCD. bootmgrliest die BCD-Datei und listet Ihre Optionen auf, aus denen Sie zum Booten auswählen können.

Informationen wie die Ausführung winload.exebefinden sich also in der BCD-Datei. Ich denke, bootmgrdass es selbst von Syslinux mithilfe des chain.c32Moduls ausgeführt wird. Ich versuche, den Windows-Bootloader irgendwie auszuführen, also winload.exedirekt von Syslinux (falls möglich), oder ihn so zu ändern, bootmgrdass er winload.exesich selbst ausführt (dessen Pfad direkt in der ausführbaren Datei enthalten ist bootmgr), ohne nach BCD oder etwas anderem zu suchen.

Der Ruhezustand (für den ein anderes Verfahren erforderlich ist) ist für mich bei diesem Schritt nicht von Belang.

Bearbeiten Sie Ihre Frage, um uns den Firmware-Typ mitzuteilen und (falls EFI) ob Sie das Kompatibilitäts-Supportmodul im Setup der Firmware aktiviert haben

Meine Firmware ist EFI (mit aktiviertem CSM) und ich boote normalerweise mit GRUB in Arch Linux. Ich habe festgestellt, dass es auf Legacy-Systemen und auf EFI bootmgrausgeführt werden kann .System32\winload.exeSystem32\winload.efi

Ich habe 0.0eine Idee, was ich von hier aus tun soll. In den letzten 10 Tagen habe ich versucht, Änderungen an BCD vorzunehmen, und ich glaube, ich werde bald Erfolg haben. Aber das ist irrelevant, denn eigentlich möchte ich den Windows-Boot-Manager vollständig umgehen.

Wenn Sie eine Idee haben, ob es eine Möglichkeit gibt, dies von der EFI-Shell aus auszuführen winload.efi(nur eine Vermutung) oder ob es eine andere Modifikation an GRUB gibt, sodass Windows im EFI-Modus ohne den Chainloader gestartet wird.

Alle Ratschläge sind willkommen.

Nachtrag

Die folgenden Forenbeiträge könnten hilfreiche Einblicke bieten:

http://reboot.pro/topic/19371-chainload-direkt-zu-winloadexe/

1.

Grub4dos kann derzeit einen Bootloader (wie NTLDR oder BOOTMGR) kettenladen, da es als Ersatz für den Code fungieren kann, der in einem „normalen“ Bootsektor enthalten ist (also etwa 300 Byte Maschinencode).

Dieser Code legt einfach einige Parameter fest und ruft dann den Loader auf.

Selbst das ist (war) überhaupt nicht einfach zu verstehen und mit anderem Code zu replizieren.

Ein NT-Systemlader wie BOOTMGR enthält mehr oder weniger in einer einzigen EXE-Datei ein „Real Mode“-Betriebssystem (nicht ganz unähnlich DOS) sowie Funktionen/Tools zum Parsen von reinem Text und von Registry-Strukturen. Es handelt sich also nicht um etwas, das man einfach von Grund auf neu schreiben kann.

Die guten Jungs von @ReactOS arbeiten seit JAHREN daran, FREELDR zu schreiben (das das viel einfachere NTLDR ersetzen soll) (und glauben Sie mir, es gibt unter den ReactOS-Programmierern einige wirklich gute, die ihr Handwerk verstehen).

Esscheint(es ist jedoch nicht klar dokumentiert), dass es ihnen gelungen ist, experimentell einen Server 2003 mit NTLDR zu booten.

2.

Mit der Einführung der Unterstützung für (U)EFI hilft BootMgr, den Unterschied zwischen BIOS und (U)EFI zu abstrahieren. Hier sind beispielsweise zwei Sequenzen:

BIOS (PCAT) -> BootMgr { BootMgr stub -> embedded BootMgr.exe } -> WinLoad.exe -> Windows
64-bit (U)EFI -> BootMgFw.efi -> BootMgr.efi -> WinLoad.efi -> Windows

WinLoad erwartet, dass eine bestimmte Umgebung (einschließlich API) vorhanden ist. BootMgr kümmert sich darum, sodass [fast] dasselbe WinLoad-Programm in beiden Umgebungen funktioniert.

Tatsächlich definiert (U)EFI eine Methode zum Speichern und Abrufen von Startparametern, sodass der BCD von BootMgr denselben Zweck erfüllt, unabhängig von BIOS/(U)EFI.

Aber über die Unterschiede zwischen BIOS und (U)EFI hinaus können Sie mit BootMgr eine „Boot-Auswahl“ treffen, wohingegen WinLoad ein bestimmtes Betriebssystem bootet, von dem es weiß, wie es gebootet wird.

Je nachdem, wie viel Umgebung WinLoad erwartet, kann es möglich sein, WinLoad direkt aufzurufen. Michael Browns Wimboot ruft den BootMgr PE[1] direkt auf, also könnte es WinLoad direkt aufrufen, allerdings verlangt WinLoad wahrscheinlich mehr Umgebung. Sie könnten es versuchen!

[1] Nicht zu verwechseln mit dem BootMgr, den GRUB4DOS und Syslinux' chain.c32 aufrufen können. Dieser BootMgr enthält einen Stub, der weiß, wie der eingebettete BootMgr PE aufgerufen wird.

Antwort1

Um Ihre ursprüngliche Frage zu beantworten: Nein. Windows kann nicht geladen werden, ohne seinen eigenen Bootloader zu durchlaufen (bei UEFI-Installationen bootmgfw.efi). Das liegt daran, dass Windows erwartet, dass der Bootmanager vorhanden ist UND winload.efi aufruft. Wenn das nicht passiert, stürzt Windows ab, bis Sie das Problem beheben. Dafür gibt es viele Gründe (praktische und unwissende). Meistens liegt es daran, dass Microsoft den Bootmanager so geschrieben hat, dass er alle Dinge handhabt (Laden des Betriebssystems, Laden der Wiederherstellungsumgebung, Pseudo-Pre-OS-Umgebung usw.). Die einzige Möglichkeit, derzeit einen Anschein von Vernunft zu erreichen, ist das Kettenladen mit Grub-efi.

Antwort2

Sie müssen den Windows EFI-Bootloader zur Liste der Startoptionen in der UEFI-Firmware hinzufügen. Auf diese Weise können Sie wählen, ob:

  1. GRUB2 sollte geladen werden oder
  2. der Windows Bootloader sollte geladen sein

Zusätzliche Optionen wie das DVD-Laufwerk, externe Festplatten oder Netzwerk-Boot sollten an dieser Stelle ebenfalls sichtbar sein. Der UEFI-Bootloader befindet sich normalerweise auf der \EFI( /boot/efi/)-Partition. Da Sie gerade das Windows-Festplattenabbild kopiert haben, ohne Windows richtig zu installieren, enthält die EFI-Partition Ihres aktuellen Rechners möglicherweise nicht den richtigen Bootloader. Daher ist es notwendig,

  1. Kopieren Sie den Bootloader in die EFI-Partition
  2. Fügen Sie Windows als Startoption neben GRUB2 hinzu

Sie sollten dann in der Lage sein, auszuwählen, welches Betriebssystem gebootet wird, indem Sie einfach die Startreihenfolge im BIOS ändern. Auf meinem Laptop F12wird durch Drücken von ein Menü zur Auswahl des zu ladenden Bootloaders angezeigt.

Für diese Schritte verwende ichefibootmgrund folgen Sie den Schritten vondieses Tutorial:

Sie müssen die entsprechende Datei bootmgfw.efiin die EFI-Partition unter kopieren \EFI\Microsoft\Boot\bootmgfw.efioder, /boot/efi/Microsoft/Boot/bootmgfw.efiwenn Sie Linux verwenden:

# mkdir -p /boot/efi/EFI/Microsoft
# cp -r Microsoft /boot/efi/EFI/Microsoft

wo Microsoftsich ein Ordner mit den ursprünglichen EFI-Dateien für Ihre Windows-Version befindet.

Anschließend müssen Sie die .efiDatei mit folgendem Befehl zu den UEFI-Starteinträgen hinzufügen:

# efibootmgr -c -d /dev/sda -p 1 -l \\EFI\\Microsoft\\Boot\\bootmgfw.efi -L "Windows Boot Manager"

Dort müssen Sie natürlich die richtigen Werte für Ihr Festplattengerät und Ihre Partitionsnummer /dev/sdaändern .-p 1

Beachten Sie Folgendes, wenn Sie ein Lenovo-Laptop besitzen:

Beachten Sie auch, dass mindestens ein Hersteller (Lenovo) Produkte mit einem bekannten Fehler ausliefert, der dazu führt, dass das System nicht gestartet werden kann, wenn der Name des Bootloaders nicht „Windows Boot Manager“ oder „Red Hat Enterprise Linux“ lautet.

Beim Start Ihres PCs sollte dann etwa Folgendes angezeigt werden (wenn Sie während des Bootvorgangs die entsprechenden Tasten gedrückt halten):

Windows Boot Manager
ubuntu
USB CD
USB FDD
ATAPI CD
ATA HDD2

(etc.)

und bcdeditunter Windows wird Folgendes angezeigt:

C:\WINDOWS\system32>bcdedit /enum firmware

Firmware Boot Manager
---------------------
identifier              {fwbootmgr}
displayorder            {bootmgr}
                        {bb086763-b111-11e2-bf8e-806e6f6e6963}
                        {8e7fb978-8bc8-11e2-bf2f-806e6f6e6963}
timeout                 0

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume2
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
integrityservices       Enable
default                 {current}
resumeobject            {ec215a09-8bc4-11e2-bf2b-0024d7eb75a4}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 2

(...)

Firmware Application (101fffff)
-------------------------------
identifier              {bb086763-b111-11e2-bf8e-806e6f6e6963}
device                  partition=\Device\HarddiskVolume2
path                    \EFI\ubuntu\grubx64.efi
description             ubuntu

Antwort3

Sie können die Installationen in beliebiger Reihenfolge durchführen, d. h. erst GNU/Linux und dann Windows installieren oder umgekehrt.

Tun Sie einfach Folgendes, nachdem Sie alle Ihre Betriebssysteme installiert haben.

  1. Holen Sie sich hier die „Boot Repair Disk“.http://sourceforge.net/projects/boot-repair-cd/

  2. Erstellen Sie daraus einen bootfähigen Live-USB-Stick (Anleitung auf pendrivelinux.com)

  3. Oder brennen Sie die ISO-Datei auf eine CD.

  4. Booten Sie über diesen Vorgang und folgen Sie den Anweisungen auf dem Bildschirm. Sie erhalten einen neu installierten GRUB, der alle von Ihnen installierten Betriebssysteme enthält.

Alles Gute.

verwandte Informationen