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.

     

    win8.vhd

    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)

    1. Laden Sie sich das Windows 8.1 AIK herunter und installieren dies.
    2. Starten Sie anschließend die "Umgebung für Bereitstellungs- und Imageerstellungstools" als Administartor
    3. 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.win8vhd_os_selection

    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.

    discard_merge_compact

    Links

    Leave A Reply