Da ich in Bezug auf Virtualisierungsplattformen immer recht flexibel gewesen bin und sowohl VMware, VirtualBox und HyperV schon für verschiedene Szenarien benutzt habe, kam ich nun an den Punkt, dass ich auf meinem Rechner unter Windows 10 neben VirtualBox auch HyperV für ein Projekt benötige. Dass man nicht gleichzeitig eine VM in VirtualBox und eine andere in HyperV starten kann, war mir schon im Vorfeld bewusst, da beide Hypervisor die entsprechende Hardware für sich reservieren würden. Leider ist es aber so, dass durch die Installation von HyperV die entsprechenden Ressourcen dauerhaft(!) HyperV zugesprochen werden, dadurch zieht der andere Hypervisor immer den Kürzeren. Was man dagegen machen kann, zeige ich in diesem Artikel.
In VirtualBox erhält man nach der Installation des HyperV-Features nur noch folgende Meldung beim Versuch eine VM zu starten:
RAW-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT).
Ich dachte, vielleicht funktioniert der Parallelbetrieb zumindest mit einer x86-VM in VirtualBox, da diese auch damals gestartet werden konnten, wenn der Rechner kaum geeignet war um überhaupt eine VM auszuführen.
Nach ein bisschen Recherche gibt es aber leider nur eine Lösung:
Man muss HyperV vor dem Start einer VirtualBox-VM deaktivieren! Dafür muss man einen Befehl absetzen und leider Windows neu starten!
Die entsprechenden Befehle, die man in einer „als Administrator“ gestarteten Kommandozeile eingeben muss, lauten wie folgt:
HyperV ausschalten:
1 |
bcdedit /set hypervisorlaunchtype off |
HyperV wieder einschalten:
1 |
bcdedit /set hypervisorlaunchtype auto |
Entgegen meiner Erwartung ist der Wert „on“ nicht möglich!. Zum Aktivieren gibt es, wie sollte es sinnvoller gehen, nur den Wert „auto“ 😀
Aktuelle HyperV-Einstellung anzeigen:
1 |
bcdedit |
Durch die Befehle werden die Einträge im sogenannten „BCD“-Speicher (Boot Configuration Data) geändert. Hier legt Windows Startparameter für verschiedene Dinge fest.
W E R B U N G
Einfacherer Weg zum Wechseln der Einstellung:
Um das ganze mit wenigen Klicks immer wieder wechseln zu können, wollte ich ein Powershell-Skript schreiben, welches den aktuellen Wert für die Variable „hypervisorlaunchtype“ aus dem BCD ermittelt und dann in Abhängigkeit davon den Wert entwieder wieder auf „off“ oder „on“ setzt und neustartet.
Allerdings brauchte ich mich diesbezüglich gar nicht weiter bemühen, denn es hat schon jemand ein schönes kleines Tool mit einer GUI für genau dieses Problem geschrieben:
Das Tool und auch den Quellcode erhält man auf folgender Seite: https://unclassified.software/de/apps/hypervswitch
Unkomfortabler Weg über die GUI:
Der Vollständigkeit halber möchte ich noch die unkomfortabelste Variante zum Wechseln aufzeigen. Denn man könnte den Hypervisor von HyperV auch auf dem Wege, wie man ihn wahrscheinlich aktiviert hat, immer wieder los werden. Hierzu müsste man die entsprechende Windows-Komponente unter „Systemsteuerung“ > „Programme und Features“ > „Windows-Features aktivieren oder deaktivieren“ wieder abwählen:
W E R B U N G
Warum ist das überhaupt so?
Dazu habe ich foglende einleuchtende Erklärung gefunden:
Fazit
Leider ist ein richtiger Parallelbetrieb von HyperV und VirtualBox, zumindest unter Windows 10, nicht möglich. Man kann also nicht eine VM in VirtualBox starten und eine weitere währenddessen in HyperV. Denn zum Wechseln zwischen beiden Technologien muss leider immer der Rechner neu gestartet werden. Ob man VMware noch auf irgendeinem Weg parallel betreiben kann, entzieht sich meiner Kenntnis. Ich gehe aber nicht davon aus.
Eine einzige Alternative, ohne einen weiteren Rechner zu nutzen, könnte noch eine „Nested“-VM-Umgebung sein. Hier wird auf einem virtuellen Computer eine weitere Virtualisierung installiert. Wie rum sich dies eventuell bewerkstelligen lässt („HyperV in VirtualBox“ oder „VirtualBox in HyperV“) und wie sehr die Performance dann in die Knie geht, habe ich aber bisher nicht getestet. Aufgrund der zuvor beschriebenen Hypervisor-Typen gehe ich aber davon aus, dass wenn überhaupt nur möglich wäre, eine HyperV-Rolle innerhalb einer VirtualBox-VM zu installieren. Für das Szenario einer HyperV-Umgebung innerhalb einer HyperV-VM habe ich allerdings Erfolg vermeldende Artikel und Beiträge gefunden.