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 🙁
Na, da hätten wir ja drauf kommen können 🙂
Danke für den Artikel, das muss ich echt mal testen. So kann ich die zweite Festplatte mit Vista drauf (Für den Notfall) mit anderen Daten füllen oder weglassen 🙂
Hi, anfangs hab ich das ganze für eine recht nutzlose Spielerei gehalten. Zwischenzeitlich liebe ich die Funktion aber wirklich. Ich kann nun meine ganzen Teststellungen immer bei mir tragen und wenn eine Machine mal richtig Power braucht kopiere ich die VHD einfach auf einen meiner Server und mache an der Stelle weiter an der ich zuvor mit dem Laptop und der gleichen VM aufgehört habe…
Da ich gerade mitten im Virtualisier Fieber stecke, nehme ich jeden Lösungsvorschlag den ich im Internet finden kann gerne an. Ich werde meine Erfahrungen damit dann auf meiner Website unter Forum veröffentlichen.
DANKE!!
c:\Program Files\Windows AIK\Tools\amd64\imagex.exe /apply g:\sources\install.wim 3 H:\
was ist H: für ein laufwerk? Oo
okay habs nun 🙂
aber sysprep funtzt ned :/
der sagt mir immer: „A fatal error occure while trying to sysprep the machine“.
ich führe es in einer cmd mit admin rechten aus @ Win7 pro SP1….
grm ich glaub daran liegts, das es nicht funtzt….
ah sorry das ich nochma poste 😀
das problem ist, da kommt auch ein popup und egal was ich da einstelle, es funtzt ned
Hi,
poste mal genau was du gemacht hast im MCSEboard.de – dort kann ich dir bestimmt besser helfen 😉