VirtualBox: VT-x Fehler nach Win 10 update
Nach einem Update auf Windows 10 Build 1903 ist jeder Versuch in VirtualBox eine VM zu starten mit dem Fehler VT-x is not available (VERR_VMX_NO_VMX).
abgebrochen. Wie sich nach einiger Recherche rausstellt, wird dieser Fehler durch neu eingeführte Sicherheitsfunktionen in Windows 10 ausgelöst.
Hinweis: Das Umsetzten der hier beschriebenen Maßnahmen führt dazu, dass das Sicherheitsfunktionen von Windows 10 außer Kraft gesetzt werden. Das Deaktivieren der Funktionen erfolgt daher auf eigene Gefahr.
In den neueren Version von Windows 10 verwenden einige Sicherheitsfunktionen, wie z.B. das Sandboxing oder der Device Guard) die Hyper-V Virtualisierung von Windows. Dabei wird Hyper-V bereits beim Systemstart geladen und "greift" sich dabei die Hardware-Virtualisierungsfunktionen des Prozessors. Das führt dazu das Programme wie Oracle VirtualBox nicht mehr auf die VT-x funktionen des Prozessors zugreifen können. Bei VirtualBox hat das zur Folge, dass Gastsysteme mit 64Bit nicht mehr gestartet werden können. Die Lösung besteht also aktuell darin, den automatischen Start von Hyper-V zu unterbinden.
Deinstallieren von Windows Features
In den Systemeinstellungen muss unter dem Punkt "Windows Features aktivieren oder deaktivieren" sichergestellt werden dass folgende Komponenten dektiviert sind (siehe auch Screenshot):- * Application Guard
- Containers
- Hyper-V-Plattform
- Windows-Sandbox
Je nach Windows Version können die zu deaktivieren ein wenig anders heißen oder auch weitere Features rund um Hyper-V auftauchen, die auch aktiviert werden müssen.
Nachdem die Komponenten alle deaktiviert wurden muss der Rechner neu gestartet werden.
Hypervisor-Start deaktivieren
Laut einiger Forenbeiträge gibt es Probleme, wenn die Sandbox-Funktionalität in der Vergangheit mal aktiviert war. In diesem Fall wird der Hypervisor weiterhin gestartet, auch wenn die Sandbox wieder wie oben beschrieben deaktiviert wurde. Damit der Hypervisor deaktiviert wird muss das folgende Kommande mit Administratorrechten ausgeführt werden:
bcdedit /set hypervisorlaunchtype off
Device Guard und Credential Guard deaktivieren
Anschließend muss noch sichergestellt werden, dass der Device/Credential Guard deaktiviert ist. Das geht am einfachsten mit dem "Device Guard and Credential Guard hardware readiness tool" von Microsoft. Damit das Script von Admin ausgeführt werden kann, muss ggf. noch die PowerShell Execution Policy angepass werden:
Dazu musste bei mir zunächst in Gruppenrichtlinie per gpedit.msc
unter Benutzerkonfiguration > Administrative Vorlagen > Windows Komponenten > Windows PowerShell
der Eintrag Skriptausführung aktivieren
wie im Screenshot gezeigt anpasst werdenen.
Danach kann in einer neuer PowerShell mit Admin-Berechtigungen mit
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
die Ausführung von PowerShell-Scripten aktiviert werden. Die Einstellungen sollten dann ungefähr folgendermaßen aussehen:
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Unrestricted
Process Undefined
CurrentUser Restricted
LocalMachine Unrestricted
Nachdem das das "Device Guard and Credential Guard hardware readiness tool" heruntergeladen und entpsckt wurde, werden die Funktionen folgendermaßen deaktiviert :
DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot
Nach dem Reboot muss beim Neustart mit F3 bestätigt werden, dass die Funktionen tatsächlich ausgeschaltet werden sollen.
Hinweis: Wenn alles geklappt hat, sollte im Anschluss die Execution Policy in der Powershell wieder zurückgesetzt werden.
Fazit
Obwohl diese Methode bei mir funktioniert und ich anschließend wieder wie gewohnt meine VirtualBox 64-Bit VMs starten konnte, ist dies aus meiner Sicht nicht die Ideale Lösung. Aber solange VirtualBox nicht mir den neuen Hyper-V-basierten Funktionen von Windows 10 klar kommt bleibt wohl nur die hier beschriebene Holzhammer-Methode die Funktionen zu deaktivieren und damit auf Sicherheitsmechnismen zu verzichten. Vielleicht ist das ein guter Zeitpunkt um über eine Ablösung von VirtualBox zugunsten des Hyer-V nachzudenken.
Quellen
- https://superuser.com/questions/1153470/vt-x-is-not-available-but-is-enabled-in-bios
- https://forums.virtualbox.org/viewtopic.php?f=6&t=93260&sid=1b6c43c87ee57fb287f84092d4289142&start=15#p451030
- http://www.winfuture-forum.de/index.php?showtopic=218799
- https://forums.virtualbox.org/viewtopic.php?f=6&t=93260&sid=1b6c43c87ee57fb287f84092d4289142&start=15
- https://docs.microsoft.com/de-de/virtualization/hyper-v-on-windows/user-guide/nested-virtualization
- https://bent-blog.de/powershell-set-executionpolicy-erzeugt-fehler-permissiondenied/
- https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-6
- https://exoticbaryon.anset.org/2017/09/18/when-virtualbox-wont-let-you-start-64bit-vms-windows-defender-device-guard/
- https://github.com/ygoe/HyperVSwitch
Kommentare