Booten in eine VHD

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:

vhd_boot_editions1-8934077

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:\

vhd_boot_waik1-4604132

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 🙁

10 Gedanken zu „Booten in eine VHD

  1. Christian Hemker

    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 🙂

  2. johannes Beitragsautor

    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…

  3. Karl-Heinz Weidlinger

    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!!

  4. Tony

    c:\Program Files\Windows AIK\Tools\amd64\imagex.exe /apply g:\sources\install.wim 3 H:\

    was ist H: für ein laufwerk? Oo

  5. Tony

    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….

  6. Tony

    ah sorry das ich nochma poste 😀
    das problem ist, da kommt auch ein popup und egal was ich da einstelle, es funtzt ned

Kommentare sind geschlossen.