Ich habe versucht, eine einfachere Methode zum Installieren von Windows- und Linux-Dual-Booten auf meinem Laptop zu finden, nicht unbedingt in dieser Reihenfolge. Im Allgemeinen müssen wir zuerst Windows und dann Linux installieren und GRUB erlauben, mit Windows umzugehen.
Ich versuche also, einen Weg zu finden, um diesen lästigen Installationsprozess (Windows) zu umgehen und einfach ein Image zu verwenden, um es direkt auf mein Laufwerk zu kopieren. Dies würde es mir auch ermöglichen, meinen Bootmanager (GRUB) beizubehalten. (Nicht, dass ich es später nicht wiederherstellen kann, aber es ist eine Microsoft-Richtlinie, die monopolisiert werden muss. In diesem Fall wird die Existenz anderer Boot-Manager im System geleugnet.)
Ich habe zuerst eine legale Kopie von Windows 8.1 erhalten und diese dann mit VirtualBox auf einer virtuellen Maschine installiert. Anschließend habe ich eine NTFS-Partition auf meiner GPT-partitionierten Festplatte erstellt und den Inhalt der Windows-Partition vom .vdi-Image auf die neu erstellte Partition kopiert.
Natürlich funktioniert es noch nicht. Ich weiß nicht, wie ich bootmgr ersetzen soll. Es gibt
File: \Boot\BCD
Status: 0xc000000e
Info: The Boot Configuration Data for your PC is missing or contains errors.
weil es diese Datei von der anderen Partition, die zum Booten, zur Systemwiederherstellung usw. verwendet wird, nicht finden kann.
Jetzt habe ich gelesen, dass bootmgr schließlich winload.exe ausführt, um Windows hochzufahren. Ich habe keine Ahnung, was ich als nächstes tun soll.
Ich denke, es sollte theoretisch funktionieren, da ich alle Dateien habe, die zum Ausführen von Windows erforderlich sind. Ich denke auch, dass ich nicht der einzige sein sollte, der daran gedacht hat, und daher kann mir hier etwas sehr Grundlegendes fehlen. Vielleicht ist es schon fertig?
Ich habe keine Ahnung, wie das Booten funktioniert. Was ich verstanden habe, ist, dass Sie beim Dual-Boot von Windows und Linux den Windows-Bootloader mit Linux verketten. Ich versuche also, den Windows-Bootloader irgendwie loszuwerden.
BEARBEITEN
Ich habe mir die Binärdateien angesehen bootmgr
und \Boot\BCD
. bootmgr
Liest die BCD-Datei und listet Ihre Optionen auf, unter denen Sie zum Booten auswählen können.
Informationen wie das Ausführen befinden winload.exe
sich also in der BCD-Datei. Jetzt denke ich, dass bootmgr
selbst von syslinux mit dem chain.c32
Modul ausgeführt wird. Ich versuche, den Windows-Bootloader irgendwie auszuführen, dh winload.exe
direkt von Syslinux (falls möglich), oder ihn bootmgr
so zu ändern , dass er sich winload.exe
selbst ausführt (dessen Pfad direkt in der bootmgr
ausführbaren Datei liegt), ohne nach BCD oder etwas anderem zu suchen.
Der Ruhezustand (für den ein anderes Verfahren erforderlich ist) ist mir in diesem Schritt nicht wichtig.
Bearbeiten Sie Ihre Frage, um uns den Firmware-Typ und (falls EFI) mitzuteilen, ob Sie das Kompatibilitäts-Support-Modul im Firmware-Setup aktiviert haben
Meine Firmware ist EFI (mit aktiviertem CSM) und ich starte normalerweise mit GRUB in Arch Linux. Ich habe entdeckt , dass , bootmgr
führt eine System32\winload.exe
auf Legacy - Systemen und System32\winload.efi
auf EFI.
Ich habe eine 0.0
Idee, was ich von hier aus tun soll. In den letzten 10 Tagen habe ich versucht, Änderungen an BCD vorzunehmen, und ich denke, ich bin dabei, Erfolg zu haben. Das ist aber irrelevant, denn ich möchte wirklich den Windows Boot Manager komplett umgehen.
Wenn Sie eine Idee haben, ob es eine Möglichkeit gibt, dies winload.efi
über die EFI-Shell auszuführen (nur eine Vermutung) oder eine andere Änderung an GRUB, damit Windows im EFI-Modus ohne den Kettenlader gestartet wird.
Ratschläge sind willkommen.
Nachtrag
Die folgenden Forenbeiträge bieten möglicherweise nützliche Einblicke:
http://reboot.pro/topic/19371-chainload-directly-to-winloadexe/
1.
Die grub4dos können derzeit einen Bootloader (wie NTLDR oder BOOTMGR) kettenladen, da er als Ersatz für den in einem "normalen" Bootsektor enthaltenen Code dienen kann (dh etwa 300 Byte Maschinencode).
Dieser Code legt einfach einige Parameter fest und ruft dann den Loader auf.
Auch das ist (war) gar nicht so einfach zu verstehen und mit unterschiedlichem Code zu replizieren.
Ein NT-Systemlader wie BOOTMGR hat mehr oder weniger in einer einzigen EXE-Datei ein "Real Mode" -Betriebssystem (nicht ganz anders als DOS) und Funktionen / Tools zum Parsen von Nur-Text- und Registry-Hives. Es kann nicht erneut verwendet werden leicht von Grund auf neu geschrieben.
Die Guten @ReactOS arbeiten seit JAHREN daran, das FREELDR (das ein Ersatz für das viel einfachere NTLDR sein soll) zu schreiben (und glauben Sie mir, es gibt unter den ReactOS-Programmierern einige wirklich gute und gute Leute).
Es scheint (aber es ist nicht klar dokumentiert), dass es ihnen gelungen ist, einen Server 2003 mit NTLDR experimentell zu starten.
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 zum Beispiel 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 Boot-Parametern, sodass der BCD von BootMgr unabhängig vom BIOS / (U) EFI denselben Zweck abdeckt.
Abgesehen von BIOS- und (U) EFI-Unterschieden können Sie mit BootMgr eine "Startauswahl" treffen, während WinLoad ein bestimmtes Betriebssystem startet, das es zu booten weiß.
Abhängig davon, wie viel von einer Umgebung WinLoad erwartet, kann WinLoad möglicherweise direkt aufgerufen werden. Michael Browns Wimboot ruft das BootMgr PE [1] direkt auf, sodass es WinLoad direkt aufrufen kann, außer dass WinLoad wahrscheinlich mehr von einer Umgebung möchte. 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 das eingebettete BootMgr-PE aufgerufen wird.
setup
Dienstprogramm aktiviert haben .