Jeder, der seinen Rechner nicht nur zum Arbeiten verwendet, probiert über kurz oder lang auch mal Dinge an seinem Rechner aus, die sich später evtl. als nicht sehr hilfreich herausstellen. Für Windows 7 gibt es eine Anleitung, wie man einen Rechner in eine virtuelle Festplatte installiert, um anschließend mit einer differencing disk zu arbeiten. Dies ermöglicht es, jederzeit zum Ursprungszustand zurück zu kehren und das binnen Sekunden. Gefallen hat mir an der für Windows 7 beschriebenen Lösungen, dass man die Änderungen auf der differencing disk mittels WinPE auch jederzeit in das Basis-System überführen kann. Leider lässt sich dieses Vorgehen jedoch nicht 1:1 auf Windows 8 übertragen. Daher habe ich mir mal die Mühe gemacht, die ursprüngliche Anleitung für Windows 8.(1) anzupassen.
Das Ziel ist, wie gesagt, Windows in eine virtuelle Festplatte zu installieren (c:win8.vhd), um anschließend Änderungen nur noch in die differencing disk (c:temp.vhd) fließen zu lassen. Mittels WinPE können die Änderungen (c:temp.vhd) jedoch relativ einfach in das Basis-Abbild (c:win8.vhd) übernommen werden.
Im Verlauf meiner Anleitung tauchen mehrere GUIs für die einzelen Boot-Einträge auf. Einfachheitshalber empfehle ich, die entsprechenden IDs parallel zu notieren, da diese mind. noch immer ein zweites Mal gebraucht werden. An der jeweiligen Stelle werden die erfoderlichen GUIDs dann durch {GUID-Name} benannt.
- Win8Temp-GUID:
- Win8-GUID:
- RAMDISK-GUID:
- WinPE-GUID:
Da in meiner Anleitung einige Tätigkeiten auf der zu installierenden Maschine (Test-PC) und einige auf einem anderen Windows 8 System (Arbeits-PC) durchgeführt werden, steht im Titel jedes Schrittes, auf welcher Maschine ich diese durchgeführt habe.
VHDs erstellen und Windows installieren (Test-PC)
Im ersten Schritt werden die Eingangs genannten VHD-Dateien erstellt.
- c:win8.vhd: Master-VHD-Datei, welche den "statischen" Zustand darstellt
- c:temp.vhd: differencing disk, deren Änderungen bei Bedarf verworfen werden können
Starten Sie den Rechner mit der Windows 8 Setup-DVD. Wählen Sie im Willkommensbildschirm:
Weiter – Computerreparaturoptionen – Problembehandlung – Erweiterte Optionen – Eingabeaufforderung
Führen Sie in der Kommandozeile folgende Befehle aus um die VHD-Dateien zu erstellen
diskpart select disk 0 clean create partition primary select partition 1 active format fs=ntfs quick assign letter=C create vdisk file=”c:win8.vhd” maximum=20480 type=expandable create vdisk file=”c:temp.vhd” parent=”c:win8.vhd” select vdisk file=”c:win8.vhd” attach vdisk exit copy c:temp.vhd c:temp.vhd.orig X:setup
Achten Sie darauf, dass auf dem physikalischen Datenträger genug Speicherplatz ist, um dort die Master-VHD sowie die Diff-Disk (mind. 6 GB) ablegen zu können. Installieren Sie Windows anschließend in den zweiten aufgeführte Datenträger.
temp.vhd einrichten (Test-PC)
Wundern Sie sich nicht, dass nach der Installation Windows 8 auf Laufwerk c: installiert ist. Im laufenden System liegen die VHD-Dateien auf Laufwerk d:. Um später neben dem statischen Zustand (c:win8.vhd) auch den temporären (c:temp.vhd) starten zu können, ist es notwendig, die Boot-Dateien auf Laufwerk d: auszulagern, da nur dieses Laufwerk beim Starten direkt verfügbar ist.
bcdboot C:windows /s d:
Nun wird die GUI vom aktuell laufenden System benötigt. Durch den nachfolgenden Befehl kann diese angezeigt werden. Im weiteren Verlauf diese GUID als {Win8-GUID} bezeichnet. Bitte die GUI notieren 😉
bcdedit -store d:BootBCD /enum all /v [...] Windows-Startladeprogramm ------------------------- Bezeichner {906e0d13-0f91-11e4-971a-080027b1c34f} device vhd=[D:]win8.vhd,locate=custom:12000002 path windowssystem32winload.exe description Windows 8.1 [...]
Den vorhandenen Boot-Eintrag für Windows 8 (c:win8.vhd) benennen Sie der Übersichtlichkeit halber noch um:
bcdedit -store d:bootBCD /set {Win8-GUID} description "Windows 8 Base"
Nun wird für die differencing disk ein neuer Boot-Eintrag erzeugt. Einfachheitshalber wird aber der gerade notierte ersteinmal kopiert:
bcdedit -store d:BootBCD -copy {Win8-GUID} /d "Windows 8 Differencing"
Notieren Sie sich die zurückgegebene GUI als {Win8Temp-GUID}.
Nun wird für diesen Eintrag die Bootquelle von d:win8.vhd auf d:temp.vhd geändert. Bitte hier die GUID entsprechend ersetzen.
bcdedit -store d:BootBCD -set {Win8Temp-GUID} device vhd=[d:]temp.vhd bcdedit -store d:BootBCD -set {Win8Temp-GUID} osdevice vhd=[d:]temp.vhd
WinPE erstellen und anpassen (Arbeits-PC)
- Laden Sie sich das Windows 8.1 AIK herunter und installieren dies.
- Starten Sie anschließend die "Umgebung für Bereitstellungs- und Imageerstellungstools" als Administartor
-
Nun wird das x86 Setup-Image für die Erstellung von WinPE umkopiert, da das Original aus dem AIK nicht verändert werden sollte.
Anschließend werden einige Änderungen an dem Image (boot.wmi) vorgenommen, wie z.B. das Hinzufügen der deutschen Sprache und das Hinterlegen von einigen Skripten.
Anhand der Skripte kann später die differencing disk entweder verworfen oder in das Basis-Abbild übernommen werden. Zusätzlich gibt es noch die Option, das Basis-Image zu packen, damit die VHD-Datei nicht unaufhörlich wächst. Im nachfolgenen Abschnitt werden die Skripte mittels notepad geöffnet. Die darauf folgenden Zeilen müssen anschließend hineinkopiert werden.
# Image kopieren copype x86 c:winpe_x86 md c:mount # Image mounten dism /Mount-Wim /MountDir:C:mount /wimfile:C:WinPE_x86mediasourcesboot.wim /index:1 # Deutsche Sprache einbinden dism /image:C:mount /Add-Package /PackagePath:"%programfiles(x86)%Windows Kits8.1Assessment and Deployment KitWindows Preinstallation Environmentx86WinPE_OCsde-delp.cab" dism /image:C:mount /Set-AllIntl:de-DE # Skripte hinterlegen notepad C:mountWindowsSystem32winpeshl.ini [LaunchApps] %SYSTEMROOT%system32winpe.bat notepad C:mountWindowsSystem32winpe.bat @echo off cls set /p UserInputPath=(D)iscard or (M)erge (C)ompact? cmd /k %UserInputPath%.bat notepad C:mountWindowsSystem32d.bat @echo off cls copy /y c:temp.vhd.orig c:temp.vhd bcdedit -default {Win8Temp-GUID} exit notepad C:mountWindowsSystem32m.bat @echo off cls echo select vdisk file=c:temp.vhd > vhdmerge.s echo merge vdisk depth=1 >> vhdmerge.s diskpart -s vhdmerge.s copy /y c:temp.vhd.orig c:temp.vhd bcdedit -default {Win8Temp-GUID} exit notepad C:mountWindowsSystem32c.bat @echo off cls bcdedit /default {Win8Temp-GUID} echo "Compacting disk..." cls diskpart /s compact.txt winpe.bat notepad C:mountWindowsSystem32compact.txt select vdisk file=C:win8.vhd compact vdisk exit # Image unmounten dism /Unmount-Image /MountDir:c:mount /commit dism /cleanup-wim rmdir /S /Q c:mount
Aus diesem Schritt werden folgende Dateien im nächsten Schritt weiterverwendet:
- C:WinPE_x86mediaBootboot.sdi
- C:WinPE_x86mediasourcesboot.wim
WinPE aktivieren (Test-PC)
Kopieren Sie die boot.sdi und boot.wim nun auf den Test-PC nach d:boot. Damit später WinPE in eine Ramdisk geladen werden kann, sind noch einige Anpassungen notwendig.
bcdedit -store d:bootBCD /create {ramdiskoptions}
Notieren Sie sich nun die GUID der Ramdisk als {RAMDISK-GUID}. In der Nachfolgenden Ausgabe taucht diese i.d.R. als letztes auf.
bcdedit -store d:bootBCD /enum all /v [...] Optionen zum RAM-Datenträgersetup --------------------------------- Bezeichner {ae5534e0-a924-466c-b836-758539a3ee3a}
Diese wird nun noch angepasst:
bcdedit -store d:bootBCD /set {RAMDISK-GUID} description "Windows PE" bcdedit -store d:bootBCD /set {RAMDISK-GUID} ramdisksdidevice partition=d: bcdedit -store d:bootBCD /set {RAMDISK-GUID} ramdisksdipath "bootboot.sdi"
Jetzt kopieren wir erneut den Win8-GUID Eintrag. Dieses mal aber für WinPE.
bcdedit -store d:bootBCD /copy {Win8-GUID} /d "Windows 8 PE"
Notieren Sie sich auch hier die zurückgegebene GUID. Diesesmal als {WinPE-GUID}.
Nun folgen die letzten Änderungen:
bcdedit -store d:bootBCD /set {WinPE-GUID} device ramdisk=[d:]bootboot.wim,{RAMDISK-GUID} bcdedit -store d:bootBCD /set {WinPE-GUID} osdevice ramdisk=[d:]bootboot.wim,{RAMDISK-GUID} bcdedit -store d:bootBCD /set {WinPE-GUID} winpe yes bcdedit -store d:bootBCD /set {WinPE-GUID} detecthal on bcdedit /timeout 2 bcdedit /default {Win8Temp-GUID}
… das sollte es gewesen sein. Wenn Sie den Rechner jetzt neu starten, erhalten Sie für 2 Sekunden ein Auswahlfenster der drei verschiedenen Systeme angezeigt. I.d.R. wird dieses Fenster nicht benötigt, da es im Fehlerfalle sowieso angezeigt wird. Um es auszublenden muss der Timeout aus dem letzten Befehlsabschnitt lediglich auf 0 gesetzt werden.
Wird WinPE gestartet, kann das Differencing-Image entweder verworfen werden, in das vorhandene Basis-Image übernommen werden oder es kann das Basis-Image komprimiert werden, falls dort viele Änderungen vorgenommen wurden und die VHD-Datei aufgrund dessen stark gewachsen ist.