Mit Bordmitteln von Windows ist es möglich, auf Wunsch sogar ohne ADK, eine bootfähige VHD(X) aus einem WIM zu erstellen. So lassen sie z.B. Installationsmedien vorbereiten, WinRE- oder WinPE-Medien für Rettungs- oder Installationszwecke erstellen.
Anbei ein Beispiel wie man das Windows Recovery Enviroment (WinRE, aka Wiederherstellungslaufwerk) auf diese Weise statt auf einen USB-Stick auf eine VHD(X) schreibt, die man unter Hyper-V oder VirtualBox nutzen kann. Als Ausgangsbasis dient ein virtualisierter Windows Server 2019 Standard mit GUI. Die beschriebenen Schritte funktionieren ebenfalls mit anderen Windows-Editionen als auch -Versionen.
Winre.wim verfügbar machen
Das Abbild von WinRE liegt in der “System-reserviert”-Partition des Startlaufwerks. Per Standard hat diese weder einen Laufwerksbuchstaben und zudem ist der Inhalt versteckt.
Folgende Befehle in einer Eingabeaufforderung mit erhöhten Rechten ausführen.
Laufwerksbuchstaben zuweisen:
diskpart select disk 1 list volumes select volume 1 <- Im Regelfall ist das erste Volume die "System-reserviert"-Partition assign letter=Bexit
Attribute entfernen:
attrib -s -h B:\Recovery\WindowsRE\Winre.wim
Winre.wim kopieren:
copy B:\Recovery\WindowsRE\Winre.wim C:\Temp
Bemerkung: Man kann sich das Kopieren mitunter sparen, wenn man allerdings nicht direkt mit der Original-Datei arbeiten möchte, ist dieser Schritt zu empfehlen.
Tipp: Anpassungen kann man später direkt in der VHD(X) vornehmen, da dort kein WIM vorhanden ist. Damit entfallen so manche Schritte oder werden leichter im Gegensatz zum Bearbeiten von WIM-Dateien.
VHD(X) vorbereiten
Es wird eine zuvor erstellte und eingehängte VHD(X) benötigt, diese kann man per diskpart oder in der Datenträgerverwaltung erstellen und anfügen. Die notwendigen Schritte werden in diesem Beitrag nicht beschrieben. Wie es mittels diskpart funktioniert kann man in der Quelle nachlesen. Für WinRE sollte die VHD(X) min. 2.5 GB (2500 MB) groß, mit NTFS formatiert und die Partition als aktiv markiert sein. Mit weniger Kapazität kam es während des Tests immer wieder zu Abbrüchen, da nicht genügend Speicher vorhanden wäre. Etwas Puffer falls man eigene Anpassungen, Treiber oder Programme hinzufügen möchte kann zudem nicht Schaden.
WIM auf VHD(X) schreiben
Bei WinRE ist es einfach, da nur ein Abbild in der WIM-Datei enthalten ist:
dism /apply-image /imagefile:c:\temp\winre.wim /index:1 /applydir:w:\
Gibt es mehrere Abbilder kann man mit
dism /Get-WimInfo /wimfile:d:\sources\install.wim
die richtige Index-Nummer ermitteln.
VHD(X) bootfähig machen
Damit die VHD(X) bootfähig wird, muss der entsprechende Startsektor und die notwendigen Dateien geschrieben werden:
bcdboot W:\Windows /s W:
Nun kann man die VHD(X) aushängen und in einer virtuellen Maschine verwenden.
Optional: Anpassungen vornehmen
Wie weiter oben erwähnt, ist es bei dieser Heransgehensweise nicht zwingend notwendig, in der WIM-Datei etwaige Anpassungen vorzunehmen.
Vielmehr und imho viel einfacher geht das direkt in der VHD(X), wenn man diese einhängt oder sogar während der Laufzeit der WinRE- bzw. WinPE-Umgebung. Soll heißen: Schreibt man z.B. Ordner oder Dateien während der Ausführung innerhalb der VHD auf eben selbige, bleiben diese auch über einen Neustart hinaus erhalten. Es verhält sich also nicht so wie mit der RAMDISK wenn man via ISO arbeitet. Das eröffnet viel Raum für Änderungen. Anbei Beispiele für das Anpassen und der Anwendung der WinRE- bzw. WinPE-Umgebung:
Shell
Damit nicht immer das Recovery Enviroment startet, kann man simple die beim Boot aufgerufene Shell ersetzen. Als einfachstes Beispiel wird durch die nachfolgende Änderung stattdessen die Eingabeaufforderung gestartet:
- Die Datei “W:\Windows\System32\winpeshl.ini” editieren.
- Bei “AppPath=”X:\Windows\System32\cmd.exe” eintragen.
Möchte man die Änderung direkt während WinRE/WinPE läuft ausführen, dann statt den Laufwerksbuchstaben “W:” “X:” verwenden.
Achtung: Beendet man die so gestartete Eingabeaufforderung, startet WinRE/WinPE neu!
Randnotiz: In der Ursprungs-WinRE steht bei AppPath “X:\sources\recovery\recenv.exe”
Tipp: (Aus-)Kommentieren geht natürlich auch:
;AppPath "X:\sources\recovery\recenv.exe" AppPath="X:\Windows\System32\cmd.exe"
Netzwerk
Der Netzwerk-Stack wird mit
wpeutil initializenetwork
gestartet. Sofern DHCP zum Einsatz kommt, erhält man automatisch eine IP-Adresse und kann anschließend mit ping, net use usw. arbeiten.
Herunterfahren und Neu starten
Heruntergefahren wird mit
wpeutil shutdown
Ein Neustart wird mit
wpeutil reboot
ausgeführt.
Drive Snapshot
Sozusagen der Klassiker bei meinen WinRE/WinPE-Projekten darf natürlich nicht fehlen. Selbstverständlich lässt sich Drive Snapshot in der 64-bit Variante (snapshot64.exe) ohne Probleme ausführen. Man kann zudem die bereits bekannten Skripte und Anpassungen aus früheren Beiträgen verwenden.
Quelle:
Assistanz – Blog – Steps to Create Bootable VHD on Hyper-V
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Schreibe einen Kommentar