Seit Windows 7 bietet Microsoft Windows die Möglichkeit direkt in eine VHD (Virtuelle Hard Disk) zu booten. Dies ist besonders nützlich, wenn man wie ich auf seiner regulären Workstation auch entwickeln möchte. Um durch die ganzen Entwicklungswerkzeuge und Dienste (Webserver etc) bei der regulären Arbeit nicht ausgebremst zu werden, isoliere ich meine Entwicklungsumgebung gerne in eine VHD von der ich nur boote, wenn ich die entsprechenden Werkzeuge auch benötige. Diese Möglichkeit kann man selbstverständlich auch für weitere Dienste wie z. B. SpielePC, KinderPC, Server etc verwenden. Jedem dieser Systeme wird dabei die volle Performance des Rechners inkl. all seiner Schnittstellen zur Verfügung stehen. Einzig die Festplatte wird durch die Umleitung in die VHD ein ticken (< 5 %) langsamer sein.
Um eine VHD mit dem gewünschten Betriebssystem zu erstellen, gibt es im wesentlichen drei Möglichkeiten.
- Erstellen einer VHD und Installation des Betriebssystems mittels DISM (ersetzt imagex aus dem Windows Automated Installation Kit (AIK))
- Einbinden einer über einen HyperV erstellten VHD
- Erstellen einer VHD und Installation direkt im System (wie reguläre Installation eines Betriebssystems)
Im folgenden werde die die notwendigen Schritte für die Optionen 1 und 2 erklären. Option drei ist meiner Meinung zu umständlich und zu fehleranfällig. Ich habe diese ausser zum Testen bis jetzt auch nicht verwendet – daher erspare ich euch und mir diese Beschreibung.
Alle Optionen haben gemein, dass man zuerst eine virtuelle Festplatte (VHDx) benötigt. Im Falle von Hyper-V kann man diese mit einem Mausklick in der GUI erzeugen. Für die anderen beiden Wege stehen folgende Möglichkeiten zur Verfügung:
Anlegen einer VHD – der Weg über die GUI
- Windowstaste + X drücken und das Disk Management öffnen
- Im Menü Action und dann Create VHD auswählen.
- In dem sich öffnenden Fenster den gewünschten Speicherort, die Größe, das Format und den Typ auswählen und mit OK bestätigen. (Der Vorgang kann je nach Auswahl etwas dauern).
- Am Ende sollte jedoch im Disk Manager eine neue Festplatte auftauchen.
- Durch einen Rechtsklick auf den linken Teil der neuen Platte können wir diese Initialisieren und damit einen Master Boot Record (MBR) erstellen.
- Durch einen erneuten Rechtsklick, dieses Mal auf den rechten Teilbereich, können wir ein neues Simple Volume erstellen. Nachdem dieses formatiert wurde, wird dem Laufwerk ein Buchstabe zugeordnet (in meinem Fall K).
Anlegen einer VHD – der Weg über die Kommandozeile
Selbstverständlich kann man eine VHD auch über eine (administrative) Kommandozeile (CMD) erstellen und erspart sich damit die ganzen Mausklicks – beide Wege führe jedoch zum gleichen Ziel.
diskpart create vdisk file=g:\Win8_1_template.vhdx maximum=50000 type=expandable select vdisk file=g:\Win8_1_template.vhdx attach vdisk create partition primary assign letter=K format quick label=System exit
Über die Kommandozeile hat man grundsätzlich die Möglichkeit noch etwas mehr zu machen. Es besteht z. B. die Möglichkeit bestehende vdisks als parent zu verwenden. Wie das genau geht und welche Vorteile man davon hat erkläre ich in einem Folgeartikel.
Windows 8.1 VHD mit Hilfe von DISM betanken
Wie eingangs bereits erwähnt wurde die Funktionalität von imagex durch DISM ersetzt und DISM wird bei Windows 8 direkt mit dem Betriebssystem ausgeliefert und muss somit nicht mehr über ein extra Toolset nachinstalliert werden. Die notwendigen Schritte um Windows (egal ob Win7, Win2012 etc) auf die frisch erstellte VHDx zu bekommen sind folgende (Die Kommandozeilen Befehle müssen aus einem administrativen Kommando Promt (CMD) ausgeführt werden!):
- Zuerst muss die ISO-Datei des zu installierenden Betriebssystems gemountet werden. Unter Windows 8 erreicht man dies über einen Doppelklick auf die *.iso Datei. Im Explorer sollte daraufhin ein neues DVD-Laufwerk erscheinen (in meinem Fall Laufwerk E).
- Einige DVDs enthalten mehrere Editionen des selben Betriebssystems (Pro, Ultimate, Standard, Enterprise etc). Um die richtige Version zu installieren müssen wir daher den Index der Edition herausfinden, die wir installieren möchten. Hierzu führen wir die folgenden beiden Befehle aus (E:\ ist dabei die soeben eingebundene ISO-Datei):
cd e:\sources dism /get-wiminfo /wimfile:install.wim
- Um die Installation vorzunehmen ist die Eingabe des folgenden Befehls notwendig (K ist dabei die eingebundene VHDx Datei):
dism /apply-image /imagefile:install.wim /index:1 /ApplyDir:K:\
Virtuelle Festplatte in das Bootmenü eintragen
Zum Abschluss ist es nun noch notwendig die erstellte VHDx Datei in das Bootmenü einzutragen, damit wir beim Start des Rechners auswählen können welches System hochgefahren werden soll. Der Befehl hierfür (aus einer administrativen CMD) ist sehr einfach (Laufwerksbuchstabe der gemounteten VHDx Datei ist hier K):
bcdboot K:\Windows
Einbinden einer über einen Hyper-V erstellten VHD
Dieser Weg ist mitunter fast der einfachste. Man erstellt eine ganz normale virtuelle Maschine in Hyper-V (das geht zwischenzeitlich auch auf einem Win8 System!). Hat man dies erledigt, wird die virtuelle Maschine mit Hilfe von sysprep auf neue Hardware vorbereitet. Das Tool sysprep findet man auf einem Windows 8 System in dem Ordner “%WINDIR%\system32\sysprep”
Nach einem Doppelklick auf sysprep.exe erhält man folgende Auswahl:
Wichtig ist hier das Aktivieren von “Generalize” und “Shutdown”. Durch diese beiden Optionen wird beim nächsten Start aus dieser VHDx die Hardware neu gesucht und damit an den eigenen Rechner angepasst.
Hinweis: Bei mir funktioniert die VHD oft auch direkt – also ohne sysprep. Eine Garantie dafür hat man aber nicht.
Um die VHD nun in das Bootmenü einzutragen sind die gleichen Schritte wie im vorherigen Prozess notwendig. Man bindet also die VHD als Laufwerk in sein laufendes Windows ein und führt aus einer administrativen CMD den Befehl bcdboot K:\Windows aus.
VHD’s als Vorlagen
Hat man sich z. B. eine Basis-VHD installiert, so kann man die Datei auch einfach kopieren und erneut einbinden. So kann man sich die Installation der notwendigen Helferlein auf mehreren Systemen ersparen oder man kann sein Testsystem sichern bevor man Software installiert, die man nicht langfristig behalten möchte. Ich habe für diesen Zweck zwischenzeitlich eine schöne Auswahl an VHD’s für verschiedene Einsatzgebiete.