HowTo: Existierende VHD im Bootmanager von Windows 7 registrieren
Da ich in letzter Zeit schon öfters gefragt wurde, wie man ein vorhandes VHD File im Bootmanager von Windows7 regiestrieren kann, hier eine kurze Beschreibung dazu.
Warum eigentlich?
Gerade in der Softwareentwicklung verwenden viele Entwickler virtualisierte Systeme, um isolierte Umgegebungen zu gewährleisten und den unterschiedlichen ansprüchen diverser Projekte gerecht zu werden. Beispielsweise sind bei zwei Projekten unterschiedliche Datenbanken im Einsatz, die dann man nich beide auf ein und dem selben System installieren möchte. Oder es sind grundsätzlich zwei verschiedene Technologie wie bspw. .NET und Java im Einsatz.
Daher versucht man, diese unterschiedlichen Anforderungen auf mehreren virtualisierten Systemen abzubilden –> in unserem Fall eben VHD Images.
Um diese Systeme nun zu verwenden, kann man sie entweder im Dualboot booten — also zusätzlich zum Host/Master-System. Dh, man hat zur gleichen Zeit zwei (oder vielleicht sogar mehrere) Systeme am laufen, die natürlich ein und den selber Speicher verwenden. Somit bekommt man vermutlich relativ bald mal Performanceprobleme, weil beide Systeme nicht mehr so tun, wie man das will. Daher gibts die Möglichkeit, diese Systeme im Bootmanager von Windows 7 zu registrieren. Somit hat man die Möglichkeit vor dem Booten das gewünschte System zu wählen, dass schlussendlich hochgefahren werden soll (das ist übrigens nichts neues — gabs auch schon bei Windows Vista).
Wie funktioniert das Ganze?
Es gibt dafür ein Kommando names “bcdedit”, das einfach über die Kommandozeile ausgeführt werden kann (WICHTIG: Die Kommandozeile muss “als Administrator” gestartet werden). Führt man das Kommando ohne Parameter aus, dann bekommt man eine Liste der bereits registrieten Systemen im Bootmanager (das gleiche passiert auch, wenn man es mit dem Parameter /v ausführt):
c:\bcdedit
So um nun ein neues VHD File in den Bootmanager reinzuhängen, brauchen wir ein paar mehr Befehle. Als erstes, um das Ganze zu vereinfachen, erstellen wir uns eine Kopie des aktuelle verwendeten Systems (dh wir kopieren uns aus dem Bootmanager alle Einstellungen des Systems, das wir gerade hochgefahren und laufen haben)
c:\bcdedit /copy {current} /d "Name des Eintrags"
Der Parameter /d beschreibt den Namen des Eintrags, der später beim Bootmanger angezeigt wird. Hier sollten wir sprechende Namen vergeben, um später im Bootmanager nicht den Überblick zu verlieren. Klappt der Befehl liefert uns das Kommande eine neue ID zurück, die wir uns in die Zwischenablage kopieren sollten. Führen wir jetzt erneut bcdedit ohne Parameter aus, sehen wir, das es zusätzlich einen neuen Eintrag mit dem von uns vergebenen Namen gibt.
Als nächstes müssen dem neu erstellten Eintrag einige Parameter setzen:
c:\bcdedit /set {guid} device vhd=[driveletter:]\{directory}\{vhdfilename}.vhd
c:\bcdedit /set {guid} osdevice vhd=[driveletter:]\{directory}\{vhdfilename}.vhd
c:\bcdedit /set {guid} detecthal on
Was passiert hier: Zuerst setzen wir den Parameter device und geben den Dateipfad zu dem VHD File an, das wir booten möchten. Das gleiche passiert für den Parameter osdevice. detecthal gibt an, dass sich der Bootmanager selbst darum kümmern soll, welchen Kernel und HAL (Hardware Abstraction Layer) er laden soll. guid ist die ID des Eintrags, die wir vorher nach dem kopieren bekommen haben und die eigentlich in der Zwischenablage liegen sollte. Der Verzeichnispfad muss einer gewissen Syntax entsprechen (siehe oben) und könnte bspw. so aussehen:
c:\bcdedit /set {5f9fb961-9357-11de-8ce0-86b14e4a0753} device vhd=[D:]\Images\W7_Evaluation.vhd
c:\bcdedit /set {5f9fb961-9357-11de-8ce0-86b14e4a0753} osdevice vhd=[D:]\Images\W7_Evaluation.vhd
c:\bcdedit /set {5f9fb961-9357-11de-8ce0-86b14e4a0753} detecthal on
Jetzt sind wir eigentlich fertig. Wir können nun das System runterfahren und wollten vor dem Booten den neuen Eintrag im Bootmanager sehen. Falls es das erste Image ist, das wir in den Bootmanager gehängt haben, brauchen wir sonst nichts tun. Der Bootmanager erkennt selbständig, dass es nun mehrere Optionen gibt und listet die möglichen Systeme von selbst auf.
Möchte man bestehende Systeme aus dem Bootmanager rauslöschen, geht das ebenfalls über bcdedit
c:\bcdedit /delete {guid} /cleanup
{guid} ist die ID des Eintrags, den wir löschen wollen. Die ID finden wir, wenn wir über bcdedit /v alle bestehenden Einträge auflisten.
Weitere Infos zu bcddedit findet man unter http://technet.microsoft.com/en-us/library/cc709667%28WS.10%29.aspx.
In diesem Sinne.
