Die DesktopdateienDuales Starten mit Windows XP und Windows PE 2.0

Wes Miller

Laden Sie den Code für diesen Artikel herunter: Desktop2008_02.exe (151KB)

In früheren Artikeln der Rubrik „Die Desktopdateien“ habe ich erwähnt, dass Windows PE zu einem Tool für die Wiederherstellung geworden ist, und ich habe erklärt, wie Sie es von einer zweiten Partition aus verwenden können. Eine Anfrage, die ich vor kurzem erhalten habe, hat mich auf den Gedanken gebracht, dass es sinnvoll sein könnte, dies unter einem neuen Gesichtspunkt zu betrachten – der gemeinsamen Verwendung von Windows PE 2.0 und Windows XP.

Schließlich verwenden möglicherweise viele von Ihnen Windows® XP bereits seit einiger Zeit, und Windows PE 2.0 ist die Version, die von Microsoft zukünftig unterstützt wird. (Beachten Sie, dass es keine weiteren Updates für Windows PE 1.x geben wird.)

Ein wichtiger Unterschied zwischen Windows PE 1.x und 2.x besteht darin, dass Windows PE 2.x über eine Standardstartschnittstelle gestartet werden kann (im Unterschied zu der speziellen Methode, die bei Windows PE 1.x verwendet wird). Obwohl Sie Windows PE 1.x oder 2.x von einer zweiten Partition starten können, eröffnen sich durch den bequemen Start von derselben Startpartition, auf der Ihr Betriebssystem installiert ist, zahlreiche Möglichkeiten, auf die ich in Kürze eingehen werde.

Zwei Startvorgänge für Windows

Windows NT® war schon immer gegenüber dualem Starten relativ tolerant. Da jedoch EFI-basierte Computer (Extensible Firmware Interface) begonnen haben, das alte AT-BIOS von IBM-PCs zu ersetzen, hat Microsoft den Windows-Startmechanismus geändert, damit er besser in Verbindung mit EFI funktioniert und ein einziger Startmechanismus für alle Architekturen vorhanden ist. Der neue Startmechanismus für Windows, der mit Windows Vista® eingeführt wurde, wird als Startkonfigurationsdatenbank (Boot Configuration Database, BCD) bezeichnet (siehe microsoft.com/whdc/system/platform/firmware/bcd.mspx). Unabhängig davon, ob die alte Datei „boot.ini“ oder der neue BCD-Mechanismus verwendet wird, kann Windows jedoch in der Regel andere Betriebssysteme starten, selbst wenn dies bedeutet, dass der Startvorgang einem anderen Startladeprogramm überlassen wird.

Bevor Sie beginnen, sollten Sie sich in Erinnerung rufen, dass Windows PE 2.0 nur auf Systemen funktioniert, die vollständig mit ACPI (Advanced Configuration and Power Interface) kompatibel sind und über 384 MB (im Idealfall 512 MB) RAM verfügen. Wie ich in meinem Artikel vom Mai (technetmagazine.com/issues/2007/05/DesktopFiles) angemerkt habe, kann Windows PE 2.0 auf nicht mit ACPI kompatiblen Systemen nicht gestartet werden, und da Windows PE 2.0 zu einer RAMDisk starten muss, muss ausreichend RAM für die RAMDisk, für einen Speicherbereich für temporäre Dateien sowie für alle RAM-Arbeitsseiten vorhanden sein. Wenn Ihr System über weniger als 384 MB RAM verfügt, sollten Sie den Gedanken an diese Möglichkeit gleich verwerfen. Verwenden Sie stattdessen Windows PE 1.6. Selbst wenn Sie darin geübt sind, die Größe von Windows PE zu verringern, können Sie nicht erreichen, dass das Betriebssystem mit 256 MB ordnungsgemäß ausgeführt wird.

Behebbare Probleme

Im Folgenden werden die Probleme betrachtet, die Sie lösen können, indem Sie Windows PE 2.0 von der gleichen Partition wie Windows XP starten.

Vollständige Systemwiederherstellung Dies ist nur eine der Aufgaben, die durch direktes Starten von Windows PE von der Windows XP-Partition ermöglicht werden. Da Windows PE 2.0 (wie zuvor Windows PE 1.6) vollständig in einer RAMDisk gestartet werden kann, können Sie ein neues Abbild des gesamten Datenträgers erstellen – oder mit ImageX die Windows XP-Dateien selbst wiederherstellen, da kein Abbild der gesamten Partition erstellt werden muss.

Wenn den Benutzern beim Systemstart ermöglicht wird, Windows PE zu starten, können sie ihre eigenen Systeme selbst von einem Remotestandort aus wiederherstellen. Das Abbild könnte von einer sekundären Partition, einer Netzwerkfreigabe (wenn die Benutzer nicht mobil arbeiten) oder von einer Wiederherstellungs-DVD oder USB-Festplatte stammen. Wenn Sie ImageX verwenden, könnten Sie das Abbild sogar auf der Partition speichern, die wiederhergestellt wird. Diese Art der Wiederherstellung von einem Datenträger stellt eine hervorragende Lösung für zahlreiche Probleme dar (mit Ausnahme der physischen Datenträgerbeschädigung). Natürlich eignet sie sich nur bedingt für die Wiederherstellung von Benutzerdaten, sofern diese Daten nicht zuerst geschützt und dann im Rahmen der Wiederherstellung wiederhergestellt werden. Denken Sie daran, dass Sie Roamingprofile verwenden und Daten vom PC sichern sollten, um diese Art von Verlusten zu verhindern. Sie sollten auch sicherstellen, dass jede von Ihnen verwendete Wiederherstellungsmethode potenzielle Datenverluste für den Benutzer verringern kann (einschließlich Verlusten aufgrund des Zurücksetzens von EFS-Verschlüsselungsschlüsseln).

Dateiwiederherstellung Windows PE bietet auch eine Methode, mit der ein System auch dann hochgefahren werden kann, wenn sich die primäre Installation von Windows nicht starten lässt. In diesem Fall können Sie das Starten und Wiederherstellen der Benutzerdaten entweder auf einem anderen System (sofern betriebsbereite Sicherungssysteme für Benutzer zur Verfügung stehen) oder an einem anderen Speicherort vornehmen, damit der Benutzer seine Arbeit bald fortsetzen kann.

Systemreparatur Durch Starten von Windows PE unter Windows XP können Sie auch ein System durch Ausführen eines Satzes von Problembehandlungsskripts oder einer einfachen benutzergesteuerten Reparatur- oder Wiederherstellungsanwendung reparieren. Der Prozess ähnelt der vollständigen Systemwiederherstellung, ist jedoch weniger umfangreich (und es werden keine Benutzerdaten gefährdet).

Da Sie jetzt eine gewisse Vorstellung davon haben, welche Möglichkeiten Ihnen das Starten von Windows PE auf der Windows XP-Partition bietet, betrachten wir nun die Vorgänge im Hintergrund, damit Sie den Prozess auf jede gewünschte Lösung anwenden können.

Vor Windows Vista

Vor der Einführung von Windows Vista wurden auf BIOS/Master Boot Record (MBR) basierende Systeme folgendermaßen gestartet. Das BIOS zeigte auf das Startgerät (im Fall der Festplatte zeigt es auf den MBR auf der Festplatte). Der MBR führte Code aus, der angab, welche Partition gestartet werden sollte. Beachten Sie, dass es sich hierbei um die erste Partition handelt, für die das „Aktiv“-Kennzeichen gesetzt ist. In den ganz frühen Versionen von diskpart konnten Sie keine Partition inaktiv machen (d. h. Sie konnten das „Aktiv“-Kennzeichen nicht entfernen). Der Schalter wurde diskpart zur Behebung dieses Problems hinzugefügt – andernfalls würde das „Aktiv“-Kennzeichen für die in der Reihenfolge der Partitionstabellen an erster Stelle stehende Partition eingestellt. Die Partition enthält den Startsektor, der ihr mitteilt, welcher Code als Nächstes ausgeführt werden soll. Von Windows NT bis Windows Server® 2003 befindet sich der auszuführende Code in einer Datei namens „ntldr“, die keine Dateierweiterung aufweist. Wenn Sie jemals einen Datenträger formatiert, Windows nicht installiert und dann versucht haben, das System zu starten, kennen Sie die Fehlermeldung „NTLDR nicht gefunden“.

Es wird Sie interessieren, dass ntldr vollständig abwärtskompatibel ist – aber natürlich ist die Datei nicht aufwärtskompatibel. Dies bedeutet, dass ntldr von Windows XP Windows 2000 starten kann, aber nicht umgekehrt. Daher ist es stets wichtig, das ältere Betriebssystem zuerst zu installieren, wenn Sie ein Dual-Boot planen. Da ntldr keine Versionsnummer aufweist, ist es sogar noch wichtiger, dieses Verfahren zu befolgen.

Ntldr ist eine Realmodusanwendung (16-Bit-Anwendung), die NTDetect.com startet, wodurch die grundlegende Geräteerkennung durchgeführt wird. Anschließend startet ntldr den Kernel, ntoskrnl.exe. (Dabei kann es sich um eine von mehreren Dateien handeln, die stets in ntoskrnl.exe umbenannt werden.) Der Kernel ist die zentrale Komponente beim Windows-Startvorgang.

Diese Zusammenfassung des Startvorgangs ist recht einfach gehalten, und ich habe die gesamte Initialisierung von Win32® ausgelassen, die für diesen Artikel jedoch nicht relevant ist. Wenn Sie weitere Informationen dazu benötigen, empfehle ich Ihnen, „Windows Internals“, vierte Ausgabe, von Mark Russinovich und David Solomon (Microsoft Press®, 2004) zu lesen.

Ein weiterer beachtenswerter Punkt besteht darin, dass Windows Setup und Windows PE setupldr.bin anstelle von ntldr ausführen, wenn Sie von CD starten. Diese Datei enthält leicht abweichenden Startcode, damit sie von CD starten kann (wozu ntldr nicht in der Lage ist). Daher haben Sie zum Starten von Windows PE 1.x setupldr.bin in ntldr umbenannt und auf einem Datenträger gespeichert. Aus demselben Grund konnte diese Datei dann keine boot.ini-Datei laden (da setupldr.bin nur für das Starten von CD vorgesehen war und daher nicht erwartet wurde, dass boot.ini erforderlich sein könnte).

Windows Vista und darüber hinaus

Bei Windows Vista wurden viele Teile des Startvorgangs geändert. In Windows Server 2008 erfolgt eine weitere Änderung, indem IA32 (32-Bit-Unterstützung) für das Starten von EFI ermöglicht wird, was bisher außerhalb von Itanium-basierten Systemen nicht möglich war. Für BIOS-basierte Systeme bleiben die ersten Schritte des Startvorgangs weitgehend unverändert. Der Hauptunterschied besteht darin, dass BOOTMGR das Startladeprogramm ist, das initialisiert wird und dann die folgenden Schritte durchführt.

Es sucht im Startverzeichnis nach der BCD-Datei, die gewissermaßen ihre eigene Registrierungsstruktur ist. Die BCD-Datei enthält die zu startenden Starteinträge (einschließlich des Standards). Abbildung 1 zeigt die Abbildtypen (ausführbare Dateitypen) und Abbildung 2 die spezifischen zu startenden Anwendungstypen. Einer (oder mehrere) dieser Einträge kann ein Verweis auf ntldr sein. Nur einer von ihnen kann tatsächlich auf die bekannte GUID verweisen, die zum Laden von ntldr verwendet wird (siehe fünfte Zeile von Abbildung 3). Dann entscheidet bootmgr, welcher Eintrag als Nächster zu laden ist. Dies ist davon abhängig, ob das System gestartet wird, sich im Ruhezustand befand oder zu ntldr oder einem anderen Start-Manager startet (in welchem Fall bootmgr auf einen anderen Startsektor zeigen und dieses Ladeprogramm starten würde). Dies wäre am häufigsten der Fall, wenn Sie ein Dual-Boot mit einem anderen Betriebssystem als Windows durchführen würden. Weitere Informationen finden Sie unter microsoft.com/whdc/system/platform/firmware/bcd.mspx.

Figure 3 Standardanwendungsobjekte

Beschreibung BCDEdit-ID GUID
Windows-Start-Manager {bootmgr} 9dea862c-5cdd-4e70-acc1-f32b344d4795
Start-Manager für Firmware {fwbootmgr} a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba
Windows-Speichertestprogramm {memdiag} b2721d73-1db4-4c62-bf78-c548a880142d
Windows-Fortsetzungsanwendung Kein Alias 147aa509-0358-4473-b83b-d950dda00615
Legacy-Windows-Ladeprogramm {ntldr} 466f5a88-0af2-4f76-9038-095b170dc21c
Aktueller Starteintrag {current} fa926493-6f1c-4193-a414-58f0b2456d1e
Standardstarteintrag {default} keine vordefinierte GUID
     

Figure 2 Anwendungstypen

Beschreibung Wert Beschreibung
Start-Manager für Firmware 0x1 Gilt nur für EFI-Systeme.
Windows-Start-Manager 0x2 Steuert den Startfluss. Zeigt in einem Dual-Boot-System für Benutzer ein Startauswahlmenü an.
Windows-Startladeprogramm 0x3 Lädt eine bestimmte Version oder Konfiguration von Windows.
Windows-Fortsetzungsanwendung 0x4 Stellt den Ausführungsstatus von Windows wieder her, wenn ein Computer nach dem Ruhezustand die Arbeit wieder aufnimmt.
Windows-Speichertestprogramm 0x5 Eine Speicherdiagnoseanwendung.
Ntldr 0x6 Gilt nur für PC/AT-BIOS-Systeme. Lädt Windows-Versionen vor Windows Vista.
Startsektor 0x8 Eine 16-Bit-Realmodusanwendung. Gilt nur für PC/AT-BIOS-Systeme. Kann verwendet werden, um den Startvorgang neu zu starten und ein anderes Betriebssystem als Windows zu laden.
     

Figure 1 Abbildtypen

Beschreibung Wert
Firmwareanwendung 0x1
Startanwendung 0x2
Ntldr-basiertes Ladeprogrammobjekt 0x3
Realmodusanwendung 0x4
   

Sie werden feststellen, dass die überarbeitete Startinfrastruktur von Windows Vista viel übersichtlicher ist als frühere Versionen – außerhalb von bootmgr befindet sich der gesamte Startcode im Verzeichnis „\boot“ auf der Stammebene und wird an Windows-spezifische Binärdateien übergeben, wenn dies von BCD angegeben wird.

Starten von Windows XP und Windows PE 2.0

Wahrscheinlich beginnen Sie jetzt zu verstehen, wie Windows PE unter Verwendung des Windows Vista-Start-Managers als Vermittler dienen kann, der es Ihnen ermöglicht, Windows XP oder frühere Versionen von Windows zu starten, während Windows PE 2.0 als integriertes Wiederherstellungstool hinzugefügt wird.

Natürlich werden Sie dem Startvorgang einen weiteren Schritt hinzufügen, der jedoch von Microsoft entwickelt wurde. Da die neue bootmgr-Infrastruktur mit der vorhandenen ntldr-Datei und anderen Start-Managern von Drittanbietern abwärtskompatibel sein musste, wurde bootmgr bewusst zur Unterstützung solcher Lösungen entwickelt.

Nachdem Sie nun wissen, wie Windows gestartet wird und wie die neue BCD-Datei funktioniert, stellt sich die Frage, wie Sie die beiden Komponenten verbinden und Windows PE 2.0 auf Ihrer vorhandenen Windows XP-Installation starten können. Es gibt zwei Möglichkeiten für das Anlegen des Windows Vista-Startsektors – jenes Teils des Startcodes, der das System anweist, bootmgr zu starten. Eine von ihnen besteht darin, diskpart zu verwenden und eine neue Partition mit Windows PE 2.0 zu erstellen und zu formatieren. Dies scheidet in diesem Fall jedoch aus, da Sie bereits über eine vorhandene Windows XP-Installation verfügen, die Sie nicht beschädigen oder verschieben möchten. Führen Sie stattdessen den folgenden Prozess durch:

  1. Stellen Sie sicher, dass Sie auf Ihrer Start-CD für Windows PE 2.0 über eine Kopie von bootsect.exe und bcdedit.exe verfügen (diese sind auf Ihrer Installations-DVD für Windows Vista zu finden).
  2. Starten Sie Ihr Windows XP-System mit der Windows PE 2.0-CD.
  3. Führen Sie nach dem Systemstart den folgenden Befehl aus:
    bootsect.exe /NT60 ALL

Dadurch wird als Startsektor der mit Windows Vista kompatible Startsektor festgelegt, der bootmgr starten kann.

4. Kopieren Sie den Start-Manager auf die Festplatte:

    xcopy BOOTMGR C:\BOOTMGR /I

5. Kopieren Sie die Datei „boot.SDI“ in das Verzeichnis „\BOOT“ auf der Festplatte. Sie müssen eine Kopie dieser Datei erstellen, bevor Sie das System starten, da sie während der Ausführung von Windows PE gesperrt ist und nicht kopiert werden kann:

    xcopy BOOT.SDI C:\BOOT\ 

Korrigieren Sie den Quellpfad entsprechend.

6. Kopieren Sie boot.WIM auf die Festplatte. Wie bei der SDI-Datei sollten Sie über eine sekundäre Kopie verfügen, da Sie die Datei nicht kopieren können, von der aus die Ausführung erfolgt:

    xcopy BOOT.WIM C:\BOOT\BOOT.WIM 

Korrigieren Sie den Quellpfad entsprechend.

7. Erstellen Sie jetzt einen neuen BCD-Speicher:

    bcdedit /createstore

8. Erstellen Sie als Nächstes die BCD-Einträge zum Laden von Windows PE:

    bcdedit /create {ramdiskoptions} /d "Boot Windows PE"
    bcdedit /set {ramdiskoptions} ramdisksdidevice partition=c:
    bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
    bcdedit /create /d "Windows PE" /application OSLOADER

9. Die letzte Zeile gibt eine GUID zurück. Ersetzen Sie {YOURGUID} durch die konkrete zurückgegebene GUID. Dies sind die Einträge für RAMDisk, durch die Windows PE von Ihrer Festplatte gestartet wird, wie in Abbildung 4 dargestellt.

Figure 4 Einträge für RAMDisk, durch die Windows PE von Ihrer Festplatte gestartet wird

bcdedit /set {YOURGUID} device ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
bcdedit /set{YOURGUID} path \windows\system32\winload.exe
bcdedit /{YOURGUID} osdeviceramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
bcdedit /set{YOURGUID} systemroot \windows
bcdedit /set{YOURGUID} winpe yes
bcdedit /set {YOURGUID} detecthal yes

10. Erstellen Sie jetzt bootmgr-Einträge, damit der Start-Manager gestartet wird:

    bcdedit /create {bootmgr} /d "Boot Manager"
    bcdedit /set {bootmgr} device boot

11. Richten Sie abschließend einen BCD-Eintrag für Ihre vorhandene Windows-Installation ein. (Ändern Sie den Anzeigetext von „Windows XP“ in den Text, der im Startmenü des Start-Managers angezeigt werden soll.) Durch den letzten Befehl wird auch festgelegt, dass er der erste Eintrag (der Standardeintrag) im Startmenü ist:

    bcdedit /create {ntldr} /d "Windows XP"
    bcdedit /set {ntldr} device partition=C:
    bcdedit /set {ntldr} path \ntldr
    bcdedit /displayorder {ntldr} /addfirst

12. Sie sollten jetzt in der Lage sein, Ihr System neu zu starten und es entweder die frühere Installation von Windows oder Windows PE 2.0 starten zu lassen, indem Sie den entsprechenden Eintrag im Startmenü auswählen. Abbildung 5 zeigt die Beispielausgabe von „bcdedit /enum all“. Dieser Befehl listet alle Einträge in der BCD-Datei auf, nachdem die Einträge hinzugefügt wurden (erfolgt von Windows PE 1.6 aus).

Beispieleingabe

Beispieleingabe  (Klicken Sie zum Vergrößern auf das Bild)

Ich arbeite seit einiger Zeit an einem Skript, das diese Aufgabe automatisch durchführen kann. Derzeit kann es nur die Startdateien auf die Festplatte kopieren und die BCD-Einträge einrichten. Es kann den Startsektor nicht auf den neuen Wert von Windows Server 2008 einstellen, während Windows ausgeführt wird – dieser Vorgang muss offline unter Windows PE durchgeführt werden. Sie finden das Skript im Bereich mit den Codedownloads auf der TechNet Magazin-Website unter technetmagazine.com. Um das Skript ausführen zu können, sollten sich die folgenden Elemente im gleichen Verzeichnis wie das VBScript befinden, das Sie ausführen:

  1. BCDEdit
  2. BOOTMGR
  3. Ein \BOOT\-Verzeichnis (von den Windows Vista- oder Windows PE 2.0-Medien)
  4. Ein \SOURCES\-Verzeichnis mit einer gültigen, startbaren BOOT.WIM-Datei von Windows PE 2.0

Dadurch wird die BCD-Datei erstellt, und die entsprechenden Startdateien werden kopiert. Nach dem Starten von Windows PE und dem Ausführen von bootsect sollten Sie ein Dual-Boot durchführen können.

Rückgängigmachen des Dual-Boot

Das Rückgängigmachen des Dual-Boot ist sogar noch einfacher als seine Einrichtung. Sie müssen lediglich den vor Windows Vista verwendeten Startsektor wiederherstellen, indem Sie den folgenden Befehl ausführen:

bootsect.exe /NT52 ALL

Nach der Wiederherstellung des Startsektors können Sie bootmgr und das Verzeichnis „\boot“ löschen. Beim nächsten Neustart erzwingt der Startsektor, dass stattdessen ntldr gestartet wird, und Windows PE 2.0 sowie alle Startbinärdateien von Windows Vista werden vollständig aus dem Startfluss entfernt.

Wes Miller ist technischer Produktmanager bei Initiate Systems (InitiateSystems.com) in Austin, Texas. Davor arbeitete er bei Winternals Software und als Programmmanager für Microsoft. Sie können Wes Miller unter technet@getwired.com erreichen.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.