Nativer VHD-Boot unter Windows 7

Virtuelle Maschinen zu nutzen, ist sicherlich inzwischen keinem ernsthaften Entwickler mehr fremd. VMWare und Virtual PC sind inzwischen sehr mächtig und vor allem einfach zu nutzen. Trotzdem bringt die Nutzung dieser Zwischenschicht immer noch Nachteile mit sich, die man mit Windows 7 nicht hinnehmen muss.

Vorbemerkungen

In einem Webcast von Scott Hanselmann wurde ich ehrlich gesagt zum ersten Mal aufmerksam auf die Möglichkeiten von VHD-Boot unter Windows 7. Ich musste erst ein wenig hin und her schnüffeln, um zu begreifen, wie man das, was Scott da zeigte, macht. Als ich es dann aber begriffen hatte, war ich begeistert. Also, worum geht es eigentlich? Es gibt ganz einfach eine super Möglichkeit, unter Windows 7 beliebig viele virtuelle Festplatten zu erstellen (Dateien mit der Endung *.vhd) und diese dann mit Windows zu betanken. Baut man sie anschließend in sein Boot-Menu ein, kann man nativ von diesen Dateien booten und bekommt direkten Zugriff auf die Hardware. Einzig die Festplatte wird dann (logischerweise) virtualisiert.

Mit anderen Worten: Man hat beliebig viele VHD-Dateien, installiert, was immer man für ein Betriebssystem will darauf und bootet seinen Rechner ohne virtuelle Sandbox davon. Die Performance ist natürlich um Grade höher, als in virtuellen Maschinen und vor allem erspart man sich tatsächlich das installieren von VMWare oder Virtual PC auf dem Rechner.

Alle hier gezeigten HowTos wurden mit einem Windows 7 Ultimate x64 durchgeführt. Als Gast-Betriebssystem kam ebenfalls ein Windows 7 Ultimate x64 zum Einsatz.

Was man braucht

Um das hier gezeigte voll durchführen zu können, sind ein paar Dinge notwendig:

  1. Das Windows Automated Installation Kit (WAIK) SDK (kostenloser Download bei Microsoft).
  2. Ein Windows-Installations-Medium (ISO oder DVD).
  3. Admin-Rechte auf der eigenen Maschine (:-))

Als Gastsystem können übrigens nicht beliebige Versionen von Windows genommen werden. So erlauben es die „Home“-Versionen von Windows 7 z.B. nicht, von einer VHD-gestartet zu werden.

Vorbereitungen

Bevor es so richtig losgeht, sollte man das WAIK SDK herunterladen. Es kommt in Form eines ISO-Images daher. Man kann es mit einem Tool, wie Virtual Clone Drive von Slysoft direkt als Laufwerk mounten und von dort aus dann installieren. Die entsprechenden Dateien finden sich im Ordner „%PROGRAM FILES%\Windows AIK“. Das Tool, das wir daraus eigentlich nur benötigen, ist „ImageX“. Es befindet sich im Unterordner „Tools“ und dort in „AMD64“ für 64-bit-Windows-Gastsysteme oder eben „x86“ für die anderen.

Diesen Schritt können all diejenigen überspringen, die bereits VHD-Dateien haben (z.B. durch Virtual PC). Das WAIK ist nur dafür da, später eine Grundbetankung des leeren Images mit Windows vorzunehmen. Wer vielleicht gar kein Windows, sondern ein Linux aufsetzen möchte, kann sich das WAIK komplett sparen!

VHD-Datei erstellen

Als erstes benötigen wir die Festplatte. Dieser Schritt ähnelt denen in den virtuellen Maschinen, wird hier aber komplett mit Windows-Bordmitteln erledigt. Man öffnet das Startmenu und gibt im Eingabefeld „diskmgmt.msc“ ein und drückt Enter:

Abb. 1: Aufruf Laufwerksverwaltung

Als Ergebnis öffnet sich die Datenträgerverwaltung von Windows:

Abb. 2: Laufwerksverwaltung

Hier hat man nun die Möglichkeit, im Menu „Aktion“ unter „Virtuelle Festplatte erstellen“ eine neue VHD-Datei anzulegen. Im entsprechend aufkommenden Dialog muss man 2 Dinge auf jeden Fall einstellen:

Abb. 3: Einstellungen für VHD

Unter Ort wählt man einen Ordner auf einer physikalischen Festplatte und gibt dort einen Namen, wie „testsystem“ ein. Daraus wird in meinem Fall „D:\testsystem.vhd“. Dann noch einstellen, wie groß die Festplatte des späteren Gastsystems sein soll. Ich wähle 40 GB, weil ich neben Windows 7 noch Visual Studio und allerhand Entwickler-Kram darauf installieren möchte. 20 GB reichen für ein erstes Testsysem auch aus. Die Option „Feste Größe“ sollte man eingestellt lassen.

Hat man eine VHD-Datei bereits erstellt (z.B. mit Virtual PC) kann man sie über den Menubefehl „Aktion -> Virtuelle Festplatte anfügen“ auch nachträglich zu den Laufwerken hinzufügen. Leider ist mir kein Weg bekannt, dies mit VMWare-Datenträgern zu erledigen, was auch mir eine Menge Arbeit erspart hätte :-(.

Nach einem Klick auf „OK“ erscheint in der Status-Bar der Datenträgerverwaltung ein Prozentbalken für den Fortschritt der Erstellung der Platte:

Abb. 4: Fortschritts-Anzeige

Nach ca. 12 Minuten ist das Ganze bei mir erledigt und man findet eine ca. 40 GB große *.vhd-Datei im angegebenen Ordner. In der Datenträgerverwaltung erscheint es bei mir wie folgt:

Abb. 5: Neues Laufwerk ist fertig

Das Laufwerk ist aber im Arbeitsplatz noch nicht zu sehen, denn es fehlt noch die Initialisierung und Formatierung. Auch hier hilft die Datenträgerverwaltung weiter (Alle genannten Schritte können übrigens auch mit dem Shell-Programm „diskpart“ erledigt werden).

Um die weiteren Vorbereitungen für unser virtuelles System vornehmen zu können, müssen wir das neue Laufwerk sowieso erstmal einbinden. In der Datenträgerverwaltung klickt man mit der rechten Maustaste auf das Feld mit links neben der grafischen Darstellung des Laufwerks:

Abb. 6: Menupunkt für Initialisierung

Es erscheint der Dialog „Datenträgerinitialisierung“, dessen Einstellungen man wie in Abb. 7 gezeigt beibehält und mit „OK“ abnickt.

Abb. 7: Datenträgerinitialisierung

Nach ein paar Augenblicken wechselt der Status der Platte auf „Online“. Sie ist aber immer noch nicht im Arbeitsplatz zu sehen. Dazu ist ein weiterer Schritt notwendig. Durch einen Rechtslick in den schwarz umrahmten grafischen Bereich des Laufwerks und Auswahl von „Neues einfaches Volume…“ startet man den „Assistenten zum Erstellen einfacher Volumes“:

Abb. 8: Volume erstellen

Bei dem Assisten klickt man zunächst auf „Weiter“ und landet dann im ersten Schritt:

Abb. 9: Größe des Volumes festlegen

Hier belasse ich den vorgeschlagenen Wert bei. Das Volume soll also den gesamten verfügbaren Platz der VHD einnehmen. Im nöächsten Schritt erfolgt die Zuweisung zu einem Laufwerksbuchstaben. Die beiden anderen Optionen sind momentan nicht interessant, erklären sich aber auch von allein. Als Laufwerks-Buchstabe wähle ich „T“. Was auch immer man auswählt, man sollte es sich merken. Der letzte Schritt betrifft die Formatierung. Man sollte alle Optionen so lassen, wie in Abb. 10 gezeigt und nur die Volumebezeichnung den eigenen Vorlieben anpassen:

Abb. 10: Partition formatieren

Zum Schluss wird noch eine Zusammenfassung gezeigt und nach einem Klick auf „Fertig“ ist alles erledigt, wie ein Blick in den Arbeitsplatz verrät:

Abb. 11: Neues Laufwerk im Arbeitsplatz

Windows drauf

Das Ziel ist es nun, ein Windows-Grundsystem auf dieses Laufwerk zu bringen. Genau für solche Aktionen wurde das WAIK entworfen. Das dort enthaltene Tool imagex hilft, die Grundinstalltion eines Windows vorzubereiten. Bootet man dann diese Grundinstallation wird alles eingerichet (Treiber, System, Username usw.) und es geht los. Es ist die Art von Installation, die Hersteller oft auf neue Geräte bringen, damit der User nicht noch die eigentliche Formatierung und Installation von Windows vergurken kann.

Nun benötigen wir die Windows-Installations-DVD als Quelle für das WAIK. Entweder man legt eine ein oder mounted sie. Ich mounte sie im Laufwerk „G“.

Für die folgenden Schritte brauchen wir eine Konsole mit Administrations-Rechten. In dieser müssen wir uns erstmal in den Ordner des WAIK (s.o.) hangeln, sodass sie auf meinem 64-bit-System ungefähr so aussehen sollte:

Abb. 12: Konsole im richtigen Pfad

Ab jerzt geht es hier weiter. Auf meinem G-Laufwerk liegt jetzt also eine Windows-DVD. Diese enthält im Ordner „Sources“ eine Datei „install.wim“. Diese enthält die Informationen über die mit dieser DVD ausgelieferten Windows-Versionen. Der folgende Aufruf auf der Konsole gibt mir Auskunft über den Inhalt der Datei:


imagex /info g:\sources\install.wim

erzeugt die Ausgabe:

Abb. 13: Auszug aus der install.wim

Da, ich eine Ultimate installieren will, merke ich mir den Index des entsprechenden Images, in meinem Fall die „4“ (siehe oben in Abb. 13). Jetzt kann ich imagex dazu benutzen, mir das entsprechende Abbild auf mein neues VHD-Laufwerk zu bringen:


imagex /apply g:\sources\install.wim 4 t:\

Nach kurzer Initialisierung zählt imagex den Fortschritt hoch:

Abb. 14: Fortschritt von imagex

Wichtig ist die Angabe von „4“ hinter der install.wim. Mit der Zahl bestimmt man, welches Image von der Windows-DVD auf der virtuellen Platte landen sollte. Achten Sie darauf, die Pfade „G“ und „T“ entsprechend Ihrer Vorgaben aus den vorherigen Schritten anzupassen! Sobald imagex fertig ist, sollte der Inhalt der VHD-Platte (bei mir T) wie folgt aussehen:

Abb. 15: VHD-Laufwerk nach imagex

Bootmenu anpassen

Der letzt Schritt betrifft die Anpassungen des Windows-Bootmenus. Ziel ist es, dass man beim Starten des Rechners die Möglichkeit erhält, von der neu erstellten VHD-Datei direkt zu booten. Wir nutzen dazu das Tool bcdedit.exe, das sich im Lieferumfang von Windows im Ordner „%WINDIR%\System32“ befindet. bcdedit hat eine eigene Dokumentation im Netz und wir wollen uns im folgenden um die hier benötigten Schritte kümmern.

Zunächst werfe ich einen Blick in meine aktuelle Boot-Konfiguration:


bcdedit

liefert auf meinem System:

Abb. 16: bcdedit bei mir

Das {current} zeigt an, dass mein aktuelles Windows mit dieser Konfiguration geladen wurde. Interessant sind vor allem die Attribute „device“ und „osdevice“. Sie zeigen bei {current} an, dass direkt von meiner C-Partition gebootet wurde.

Wir brauchen einen neuen Eintrag in dieser Liste. Dazu geben wir den aktuellen Eintrag {current} als Vorlage an und kopieren uns einen Eintrag sozusagen neu. Wir geben einfach noch einen gut lesbaren Namen an, der später im Bootmenu erscheinen wird:


bcdedit /copy {current} /d "Mein Testsystem"

Rufen wir nach diesem Befehl „bcdedit“ erneut ohne Parameter auf, sollte ein Eintrag ähnlich diesem erscheinen:

Abb. 17: Neuer Eintrag

Leider zeigen jedoch nun die device- und osdevice-Einträge fälschlicherweise ebenfalls auf die C-Partition. Um dies zu ändern, müssen wir für die nächsten Schritte immer die GUID inkl. der geschweiften Klammern angeben. Also nutzen wir die Konsole und klicken auf das Icon der Konsole. Es erscheint ein Menu, aus dem wir „Bearbeiten“ und dann „Markieren“ wählen. Jetzt markiert man die lange GUID inkl. der Klammern und wählt dann nach Klick auf das Konsolen-Icon „Bearbeiten“ und „Kopieren“. Jetzt kann man die GUID immer durch einen Rechtsklick irgendwo in der Konsole und anschließende Auswahl von „Einfügen“ an die Cursorposition einfügen.

In meinem Fall muss ich nun folgendes Kommando ausführen:


bcdedit /set {8b2c2cd3-7e1a-11e0-8290-bbbfa470a3ba} device vhd=[d:]\testsytem.vhd

und dann noch mit


bcdedit /set {8b2c2cd3-7e1a-11e0-8290-bbbfa470a3ba} osdevice vhd=[d:]\testsytem.vhd

auch das die „osdevice“-Eigenschaft auf den Pfad zu meiner VHD-Datei umlenken. Achten Sie auf die eckigen Klammern um den Laufwerksbuchstaben d! Zum Schluss sogt


bcdedit /set {8b2c2cd3-7e1a-11e0-8290-bbbfa470a3ba} detecthal on

noch dafür, dass mein System beim späteren Start die Hardwareerkennung auch ausführt. Gibt man nun noch bcdedit ohne Parameter ein, sollte der Eintrag wie folgt erscheinen:

Abb. 18: Fertiger Bootmenu-Eintrag

Das wars im Prinzip schon. Wenn man den Rechner nun neu startet, sollte nach der Initialisierung der diversen BIOSe das Startmenu erscheinen und man könnte den entsprechenden Eintrag (in meinem Fall „Mein Testsystem“ auswählen. Das folgende iPhone-Video zeigt das ganze in Aktion (im Video ist noch ein Eintrag zu sehen, den ich mir vorher schon erzeugt hatte)

[flv:/wp-content/uploads/2011/07/vhd.flv 720 396]

Sorry für die verwackelte Aufnahme, aber es soll ja nur grundsätzlich zeigen, worum es geht :-).

Möchte man den Eintrag wieder entfernen, sorgt der folgende Befehl für ein restloses Verschwinden des Bootmenu-Eintrages:


bcdedit /delete {8b2c2cd3-7e1a-11e0-8290-bbbfa470a3ba} /cleanup

Resumé

Es funktioniert! Gerade bei den heutzutage häufig aufkommenden Updates und Neuerscheinungen im Coding-Umfeld ist Virtualisierung nunmal unumgänglich, um sich seine Produktiv-Systeme nicht zu zerschießen. Leider geht Virtualisierung aber sonst mit Performance-Einbußen konform. Nicht so bei Einsatz von VHD-Boot. Endlich kann man die (fast) volle Leistung seines Systems nutzen und hat trotzdem den Vorteil, die komplette VHD-Datei auf ein anderes System zu übertragen. Man muss halt nur wissen, dass es bcdedit gibt und es auf dem anderen System entsprechend einsetzen.

Edit (01.08.2011)

Ganz frisch aus der Presse erfahren: Sysinternals bietet das Tool disk2vhd an. Damit können reale Festplatten komplett in VHD-Dateien „verwandelt“ werden. Einzige Einschränkung bislang (Version 1.63): Die Festplatte darf maximal mit 127 GB befüllt sein.

 

 

Eine Antwort auf „Nativer VHD-Boot unter Windows 7“

  1. gute sache das …

    die einschränkung von disk2vhd betrifft aber nur die verwendung der erstellten images in virtual pc. ich benutze disk2vhd gerne mal um backups der maschine zu machen. übrigens lassen sich diese mittels acronis trueimage bootfähig wiederherstellen, sogar mit der demo …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.