Posts Tagged ‘VHD’
HowTo: Windows 7 direkt in VHD installieren

Mit Windows 7 hat Microsoft die Funktion eingeführt, dass man Systeme direkt in VHD’s booten kann. Ich habe die Funktion zwischenzeitlich echt lieben gelernt (hab eigene VHD’s zum arbeiten, programmieren, spielen etc). Da ich meine Workstation (nach meinem Umzug) nun von Vista auf Win7 umstellen wollte, wollte ich darauf keine “native” Installation mehr vornehmen. Nach etwas stöbern im Internet konnte ich mir die dafür notwendigen Schritte zusammen suchen.

Hier nun die Zusammenfassung:

  1. Windows 7 vom Installationsmedium (USB od. DVD) booten
  2. Die Frage nach der Sprache beantworten
  3. NICHT installieren – sondern die Reparaturoptionen wählen (im unteren Teil des Bildschrims)
  4. Command Promt öffnen
  5. diskpart
  6. list disk (um herauszufinden welches die richtige HD ist)
  7. select disk 0 (wenn das Listing oben eine andere Nummer ergeben hat, dann entsprechend ersetzen)
  8. clean (macht alles leer!)
  9. crate partition (erstellt eine Partition)
  10. active
  11. format fs=ntfs
  12. assign
  13. create vdisk file=c:\win7_01.vhd maximum=150000 (erstellt eine vhd auf c mit 150 GB)
  14. attach vdisk (hängt die vhd ins system ein)
  15. exit
  16. x: (wechselt zurĂĽck auf das Installationsmedium)
  17. setup.exe (startet das “normale” windows 7 Setup)

Bei der Auswahl der VHD als Installationmedium erhält man eine Fehlermeldung. Diese kann man aber einfach ignorieren – die Installation läuft ohne Probleme durch.

Booten in eine VHD – Klarstellung

Ich habe vor kurzem darüber berichtet, dass es mit Einführung von Windows 7 und Windows 2008 R2 möglich ist, direkt in eine VHD Datei (ohne Virtualisierung zu booten). In diversen Foren gab es dazu nun schon Artikel, die behaupteten, dass es möglich wäre auch ein Vista oder gar ein Linux aus einer solchen VHD heraus zu booten. Da ich es bis jetzt, trotz eingehendem Studium von bcdedit, nicht geschaft habe in eine solche VHD zu booten, habe ich letzte Woche auf dem MS TechDay in Frankfurt mit Michael Korb darüber gesprochen.

Seine Aussagen hierzu waren klar:

  • Dieses Feature ist exklusiv fĂĽr Windows Systeme ab Windows 7 und Windows 2008 R2 vorgesehen. Einen Patch oder Treiber fĂĽr frĂĽhere Versionen wird es nicht geben. Die Berichte in diversen Foren ĂĽber lauffähige Vista Installationen sind daher falsch.
  • Das Feature wird von MS primär gesehen um die Verteilung von Betriebssystemen auf Clients und auch Server zu vereinfachen.
  • Das booten von Linux in eine VHD ist in der theorie denkbar, da der Aufbau der VHD’s nicht geheim ist – eine entsprechende Implementierung ist ihm (und mir auch) nicht bekannt.
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

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

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