Mit dem Bootloader von Windows 7 hat Microsoft eine neue Technik eingeführt welche es dem Benutzer erlaubt mit wenigen Handgriffen ein Betriebssystem direkt aus einer VHD heraus zu booten. Man erweitert dazu mit vier einfachen Befehlen das Bootmenü von Windows 7 um beliebig viele lokal gespeicherte VHDs. Die Maschinen laufen nach dem Booten nativ auf der Maschine und haben somit vollständigen Zugriff auf die gesamte Hardware (es hängt also kein Hypervisor dazwischen).
Um von einer VHD booten zu können muß diese eine wichtige Voraussetzung erfüllen. Sie muß im neuen VHD Format erstellt worden sein welches erst mit HyperV unterstützt wird. Man kann also keine VHDs booten die von einer Virtual PC 2007 Installation erstellt wurden! (hat mich mehrere Tage und schluß endlich eine Mail an Daniel gekostet um das raus zu finden). Hat man keinen HyperV zur Verfügung kann man auch den Weg über das WAIK (Windows Automated Installation Kit) ein VHD File mit Installationsdaten befüllen. Beide Möglichkeiten werde ich nachfolgend vorstellen. Ich gehe in meinen Beispielen davon aus, dass auf dem Gerät bereits Windows 7 installiert ist (es reicht auch aus den win7 boot loader zu installieren).
Booten von einer über HyperV erstellten VHD
Hat man einen HyperV zur Verfügung ist die Sache recht einfach. Man installiert sein gewünschtes Betriebssystem über die bekannten Wege. Bei Microsoft Betriebssystemen ist es jedoch wichtig vor dem kopieren der VHD auf das Zielsystem ein Sysprep auszuführen um sicher zu stellen, dass die Hardwareerkennung nach dem nächsten Neustart erneut ausgeführt wird:
c:\windows\system32\sysprep>sysprep /generalize /shutdown
Hat man diese Vorbereitungen getroffen muß man die VHD nur noch dem Bootmenü hinzufügen. Unter Windows 7 sind dafür schon alle Tools vorhanden. Für Vista muß man diese noch nach installieren.
Zuerst kopieren wir einen bestehenden Booteintrag um eine neue GUID zu erhalten:
bcdedit /copy {default} /d "Vista VHD"
Danach wird der Booteintrag erstellt wobei der Wert für {GUID} durch den oben abgefagten Wert ersetzt wird. [locate] wird durch den Laufwerksbuchstaben z. B. [c:\] ersetzt. Der Pfad dahinter sollte auf die VHD zeigen.
bcdedit /set {guid} device vhd=[locate]\windows7.vhd
bcdedit /set {guid} osdevice vhd=[locate]\windows7.vhd
Für einige x86 Betriebssysteme benötigen noch folgende Option (schadet nicht, daher setzte ich sie immer):
bcdedit /set {guid} detecthal on
Will man per default von einer VHD booten, erreicht man dies mit folgendem Befehl:
cdedit /default {guid}
Booten von einer neu zu installierenden Installation
Mit Hilfe des WAIK (Windows Automated Installation Kit) kann man auch ohne einen HyperV VHDs erstellen und mit einer Windows Installation befüllen.
Zuerst erstellen wir also eine VHD (es geht auch mit der Maus – aber das ist etwas umständlicher).
DISKPART
CREATE VDISK FILE="c:\vmfs\win7\disk01.vhd" MAXIMUM=20000
SELECT VDISK FILE="c:\vmfs\win7\disk01.vhd"
ATTACH VDISK
CREATE PARTITION PRIMARY
ASSIGN LETTER=X
FORMAT QUICK LABEL=Win7
Mit diesem Befehl haben wir nun eine 20 GB große VHD erstellt und diese direkt als Laufwerk X gemountet.
Nun brauchen wir eine Windows Vista, Windows 7, Windows 2008 oder Windows 2008 R2 CD. Mit dem Befehl:
c:\Program Files\Windows AIK\Tools\amd64\imagex.exe /info "g:\sources\install.wim"
können wir heraus finden welche Editionen von diesem Betriebssystem zur Verfügung stehen. Für den nächsten Befehl brauchen wir die entsprechende ID der Edition:
Hat man die ID des Editionen kann man diese mit folgendem Befehl in seine VHD kopieren:
c:\Program Files\Windows AIK\Tools\amd64\imagex.exe /apply g:\sources\install.wim 3 H:\
Nun muß man die VHD nur noch wie oben unter dem HyperV Teil beschrieben in sein System einbinden und den entsprechenden Eintrag beim nächsten Booten seines Systems auswählen.
20090420: Update – Windows Vista und Windows 2008 *.wim files werden aktuell nicht vom WAIK unter Windows 7 unterstützt. Man kann in einer solchen Umgebung somit keine bootfähigen VHD’s erstellen 🙁