Aplikacje wirtualizacyjne nie działają: co zrobić?
Podczas instalacji aplikacji do wirtualizacji na komputerze z systemem Windows, na którym zainstalowano Hyper-V lub powiązane usługi, często mogą wystąpić błędy. Błędy pojawiające się podczas uruchamiania maszyn wirtualnych w aplikacjach do wirtualizacji innych niż Hyper-V powodują poważne problemy. W tym wpisie na blogu wyjaśniono, co jest przyczyną tych błędów, jak je naprawić oraz jak uruchamiać inne aplikacje do wirtualizacji na komputerze z Hyper-V.
Kontekst i zasada działania
Po zainstalowaniu programu VMware Workstation, VMware Player lub Oracle VirtualBox na komputerze z systemem Windows mogą pojawić się błędy podczas uruchamiania maszyn wirtualnych w tych aplikacjach do wirtualizacji. Błędy te występują nawet wtedy, gdy maszyny wirtualne Hyper-V nie są w tym momencie uruchomione. Na tym samym komputerze można zainstalować programy VMware Workstation i VirtualBox oraz uruchamiać maszyny wirtualne VMware i VirtualBox, ale nie jednocześnie. Co powoduje ten problem z Hyper-V? Przyjrzyjmy się temu bliżej.
VMware Workstation, VMware Player i VirtualBox to hiperwizory typu 2, natomiast Hyper-V jest hiperwizorem typu 1. Hiperwizor typu 2 jest instalowany w systemie operacyjnym działającym na sprzęcie. Hiperwizor typu 1 jest instalowany bezpośrednio na sprzęcie. Wszystkie hiperwizory wymagają rozszerzeń wirtualizacyjnych procesora, czyli zestawów instrukcji służących do wirtualizacji sprzętowej — Intel VT-x lub AMD-V. Hyper-V przejmuje kontrolę nad rozszerzeniami wirtualizacji podczas uruchamiania systemu Windows. Rozszerzenia te nie są dostępne dla programów VMware Workstation i VirtualBox po załadowaniu systemu Windows. W danym momencie tylko jeden komponent oprogramowania może korzystać z Intel VT-x lub AMD-V.
Ta niezgodność wynika z działania Hyper-V, ponieważ rozszerzenia wirtualizacji nie są udostępniane hiperwizorom typu 2 zainstalowanym na komputerze z systemem Windows, na którym włączono rolę Hyper-V.
Błędy programu VMware Workstation:
VMware Workstation and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware Workstation.
VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential guard.
Błędy programu VirtualBox:
BSOD, such as BSOD with SYSTEM_SERVICE_EXCEPTION
VT-x is not available (VER_VMX_NO_VMX). E_FAIL (0x80004005).
A VirtualBox VM works too slowly and uses the paravirtualisation (emulation) mode.
Najciekawsza sytuacja ma miejsce, gdy użytkownik nie zainstalował Hyper-V, a mimo to napotyka jeden z wyżej wymienionych błędów podczas korzystania z VMware Workstation lub VirtualBox. Błąd ten występuje, gdy włączone są automatyczne aktualizacje systemu Windows. Wraz z aktualizacjami (Windows 10 v1607 oraz odpowiednie wersje systemu Windows Server, począwszy od Windows Server 2016) niektóre nowe funkcje związane z Hyper-V są instalowane i włączane automatycznie bez zgody użytkownika systemu Windows. Funkcje te to Device Guard oraz Credential Guard. Aktualizacje systemu Windows eliminują znane luki w zabezpieczeniach, ale mogą również powodować problemy i zniszczyć działającą konfigurację. Dlatego wielu użytkowników nie lubi automatycznych aktualizacji.
Device Guard to zestaw funkcji zabezpieczeń w systemie Windows. Celem wdrożenia tej funkcji jest utrudnienie wykonywania złośliwego kodu. Device Guard jest dostępna w systemach Windows 10, Windows Server 2019 i Windows Server 2019. Główne wymagania to: UEFI działające w trybie natywnym oraz włączona funkcja Secure Boot. Credential Guard jest funkcją, która minimalizuje wpływ ataków, jeśli złośliwy kod jest już uruchomiony, poprzez izolowanie systemu i tajemnic użytkownika, co utrudnia kompromis.
Virtual Secure Mode (VSM) to funkcja, która wykorzystuje rozszerzenia wirtualizacji procesora do zabezpieczenia danych w izolowanym obszarze pamięci. HVCI to Integralność kodu chronionego przez hyperwizor. LSA to Lokalny Urząd Bezpieczeństwa.
Wirtualizacja Oparta na Bezpieczeństwie (VBS) to klasa technologii, która wykorzystuje rozszerzenia wirtualizacji, w tym VSM, aby zapewnić bezpieczeństwo w Windows. Rola Hyper-V jest wymagana do działania tych funkcji (narzędzia do zarządzania Hyper-V nie są potrzebne).
Hyperwizor (Hyper-V) ładuje się pierwszy, a następnie uruchamiany jest system operacyjny (Windows). Hyper-V zapewnia warstwę abstrakcji pomiędzy sprzętem a systemem operacyjnym. VSM umożliwia oznaczanie konkretnych krytycznych procesów i pamięci używanej przez nie jako należącej do odrębnego niezależnego systemu operacyjnego kontrolowanego przez Hyper-V. Zasada jest podobna do izolacji dwóch maszyn wirtualnych działających na hoście Hyper-V, gdy każda maszyna wirtualna może korzystać wyłącznie z zasobów sprzętowych przydzielonych jej.
Uwaga: Jeśli potrzebujesz hyperwizora typu 1 od VMware, użyj VMware ESXi i środowiska VMware vSphere. Dowiedz się więcej na blogach: Hyper-V a VMware, VMware Workstation a VMware Player, i Jak zainstalować ESXi na Hyper-V.
Przyjrzyjmy się, jak szczegółowo rozwiązać problem niekompatybilności Hyper-V i innych aplikacji wirtualizacyjnych.
Metoda 1: Odinstaluj Hyper-V w GUI
Sprawdź informacje o systemie dotyczącym konfiguracji Windows, uruchamiając następującą komendę w CMD:
msinfo32.exe
Otwiera się okno Informacji o Systemie. Na poniższym zrzucie ekranu widzisz, że Hyper-V jest włączony (został wykryty hyperwizor), oraz uruchomione jest bezpieczeństwo oparte na Device Guard Virtualization. Teraz możesz usunąć te funkcje.
Musisz być świadomy, że następujące funkcje związane z Hyper-V nie będą dostępne po usunięciu Hyper-V:
- Hyper-V
- Credential Guard and Device Guard
- Virtual Machine Platform
- Windows Sandbox
- WSL2.
Usuń funkcję Hyper-V w graficznym interfejsie użytkownika (GUI) używając Control Panel, Add Roles, i Features kreatora.
W systemie Windows 10 otwórz Control Panel, kliknij Programs and Features, następnie kliknij Turn Windows features on or off.
Otwiera się okno Windows Features.
Odznacz pole wyboru Hyper-V, a następnie naciśnij OK.
Aby zakończyć usuwanie Hyper-V, uruchom ponownie komputer.
Kroki usuwania Hyper-V w systemie Windows 10 i Windows Server 2016 są podobne.
W systemie Windows Server 2016 otwórz Server Manager i kliknij Manage > Remove Roles and Features. W Remove Roles and Features kreatorze, przejdź do kroku Server Roles i odznacz Hyper-V. Naciśnij Next na każdym etapie, aby kontynuować. Aby zakończyć usuwanie roli Hyper-V, wymagane jest ponowne uruchomienie.
Metoda 2: Użyj PowerShell do Wyłączenia Funkcji Hyper-V
Możesz wykonać podobne działanie za pomocą interfejsu wiersza poleceń zamiast GUI.
Zaloguj się do PowerShell jako Administrator i uruchom polecenie, aby wyłączyć funkcję Hyper-V:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
Uruchom ponownie komputer:
shutdown -r -t 0
Metoda 3: Wyłącz Hyper-V za Pomocą BCDedit
Idea za tą metodą to edytowanie danych konfiguracji rozruchu i wyłączenie bootowania Hyper-V bez odinstalowywania roli Hyper-V.
Zaloguj się do PowerShell jako Administrator lub uruchom polecenie z podwyższonymi uprawnieniami w wierszu poleceń, aby wyłączyć Hyper-V:
bcdedit /set hypervisorlaunchtype off
Jeśli potrzebujesz ponownie włączyć Hyper-V i ustawić wartość domyślną, uruchom to polecenie:
bcdedit /set hypervisorlaunchtype auto
Dla większej kontroli i wygody, wyłącz szybki rozruch w Windows 10. Otwórz Edytor Rejestru Windows i przejdź do:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerPower
Ustaw parametr HiberbootEnabled na 0
Jeśli czasami potrzebujesz używać maszyn wirtualnych Hyper-V, utwórz dwa wpisy dla boot loadera Windows: jeden dla uruchamiania Windows z Hyper-V, a drugi dla uruchamiania Windows bez Hyper-V. Następnie wybierz potrzebną opcję przed uruchomieniem Windows. To podejście pozwala uniknąć ręcznego uruchamiania poleceń w PowerShell za każdym razem, gdy potrzebujesz włączyć lub wyłączyć Hyper-V.
bcdedit /copy "{current}" /d "No Hyper-V"
"The entry was successfully copied to {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}."
Skopiuj i wklej swoją wartość zamiast xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
bcdedit /set "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" hypervisorlaunchtype off
Ponownie uruchom komputer.
Po ponownym uruchomieniu komputera, powinieneś zobaczyć dwie opcje w Menedżerze Rozruchu Windows.
Jeśli chcesz usunąć wpis No Hyper-V , użyj opcji /delete dla bcdedit.
Wyświetl listę bieżących wpisów rozruchowych:
bcdedit /v
Na wyjściu wyświetlona jest lista wszystkich wpisów z ich identyfikatorami. Skopiuj ID wpisu, który chcesz usunąć, i uruchom następujące polecenie:
bcdedit /delete "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
Metoda 4: Odinstaluj Rolę Hyper-V w PowerShell za pomocą dism.exe
Idea za tą metodą to używanie narzędzia Deployment Image Servicing and Management w interfejsie wiersza poleceń do odinstalowywania Hyper-V.
Zaloguj się do CMD lub PowerShell jako Administrator. Uruchom następujące polecenie, aby odinstalować Hyper-V:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
Jeśli chcesz ponownie zainstaluj Hyper-V, użyj tego polecenia:
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
Metoda 5: Wyłącz w Windows wirtualizację opartą na bezpieczeństwie
Ta metoda służy do wyłączania Device Guard oraz Credential Guard, które są funkcjami związanymi z Hyper-V. Otwórz Edytor Zasad Grupy dla lokalnej maszyny. Edytor Zasad Grupy jest dostępny w Windows 10 Pro, Enterprise, oraz Education. W wierszu polecenia uruchom gpedit.msc
Przejdź do Local Computer Policy > Computer Configuration > Administrative Templates > System > Device Guard
Kliknij dwukrotnie Turn On Virtualization Based Security.. Domyślnie, status tego ustawienia to Not configured.
W otwartym oknie wybierz Disabled i kliknij OK, aby zapisać ustawienia i zamknąć okno.
Edytuj Rejestr jako alternatywa
W Windows 10 Home, gdzie Edytor Zasad Grupy nie jest dostępny, można wyłączyć Bezpieczeństwo Oparte na Wirtualizacji w Rejestrze Windows.
Utwórz kopię zapasową rejestru Windows przed wprowadzeniem zmian, aby uniknąć błędów i problemów.
Otwórz Edytor Rejestru. Uruchom regedit w wierszu polecenia otwartym jako Administrator.
Przejdź do HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuard
Utwórz wpis EnableVirtualizationBasedSecurity, jeśli brakuje tego wpisu. Aby utworzyć nowy wpis, kliknij prawym przyciskiem myszy w puste miejsce w katalogu DeviceGuard, i w menu kontekstowym kliknij New > DWORD (32-bit) Value. Wprowadź nazwę EnableVirtualizationBasedSecurity dla tego wpisu rejestru. Domyślnie dane dla tego wpisu powinny wynosić 0 (patrz poniższy zrzut ekranu). Możesz dwukrotnie kliknąć EnableVirtualizationBasedSecurity i ustawić 0 ręcznie.
Przejdź do HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa
Utwórz nowy wpis rejestru w katalogu Lsa. Kliknij prawym przyciskiem myszy w pustą przestrzeń w prawej stronie okna Registry Editor. W menu kontekstowym kliknij New > DWORD (32-bit) Value.
Wprowadź nazwę LsaCfgFlags dla tej wartości. Ta wartość musi być ustawiona na 0.
Zamknij Edytor Rejestru i uruchom ponownie komputer.
Możesz uruchomić następujące polecenia w PowerShell (jako Administrator), aby wyłączyć Device Guard i Credential Guard przy następnym uruchomieniu Windows.
Zamontuj partycję systemu UEFI na napędzie X: (wybierz niewykorzystywaną przestrzeń):
mountvol X: /s
Skopiuj C:WindowsSystem32SecConfig.efi to X:EFIMicrosoftBootSecConfig.efi z opcją nadpisania pliku, jeśli plik istnieje. Ten plik to obraz rozruchowy dla narzędzia do konfiguracji bezpieczeństwa Windows.
copy %WINDIR%System32SecConfig.efi X:EFIMicrosoftBootSecConfig.efi /Y
Utwórz nową opcję w menu rozruchowym z identyfikatorem {0cb3b571-2f2e-4343-a879-d86a476d7215} i nazwą DebugTool:
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
Ustaw opcję rozruchową, którą utworzyłeś, aby uruchomić się w poprzednim kroku na EFIMicrosoftBootSecConfig.efi:
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "EFIMicrosoftBootSecConfig.efi"
Ustaw Menedżera Rozruchu Windows, aby nowy wpis był domyślnym przy następnym uruchomieniu. Po tym, uruchom ponownie komputer, aby powrócić do normalnego rozruchu.
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
Ustaw program ładujący, aby przekazywać opcje DISABLE-LSA-ISO,DISABLE-VBS do pliku SecConfig.efi, gdy program ładujący uruchamia plik.
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
Ustaw partycję dla uruchomionego napędu na napęd X: :
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
Odłącz napęd X: z systemu:
mountvol X: /d
Metoda 6: Aktualizacja stacji roboczej VMware Workstation
Jeśli na komputerze fizycznym zainstalowany jest system Windows 10 w wersji 2004 (20H1) o numerze kompilacji 19041 lub nowszej, można zaktualizować stację roboczą VMware Workstation do wersji 15.5.6 lub nowszej i uruchamiać maszyny wirtualne VMware na komputerze z systemem Windows bez konieczności wyłączania lub odinstalowywania funkcji Hyper-V oraz zabezpieczeń opartych na wirtualizacji (VBS), w tym Device Guard i Credential Guard.
W związku z licznymi skargami klientów firmy Microsoft i VMware postanowiły opracować wspólny projekt wykorzystujący interfejsy API platformy Microsoft Windows Hypervisor Platform (WHP), aby umożliwić działanie hiperwizorów typu 2, takich jak VMware Stacja robocza, na hoście z włączoną funkcją Hyper-V. Interfejsy API te pozwalają aplikacjom zarządzać zasobami Procesora, odczytywać i zapisywać wartości rejestru, przerywać działanie Procesora oraz generować przerwania.
Wersje programu VMware Workstation starsze niż 15.5.5 wykorzystują monitor maszyny wirtualnej (VMM), który ma bezpośredni dostęp do Procesora oraz zestawów instrukcji wirtualizacji (Intel VT-x lub AMD-V). Monitor maszyn wirtualnych (VMM) działa w trybie uprzywilejowanym. Jeśli na hoście z systemem Windows włączone są funkcje zabezpieczeń oparte na wirtualizacji, między sprzętem a systemem Windows dodawana jest dodatkowa warstwa hiperwizora (Hyper-V). Hyper-V ma bezpośredni dostęp do funkcji Procesora wykorzystywanych do wirtualizacji sprzętowej, natomiast VMM nie ma dostępu do funkcji wirtualizacji Procesora.
Firma VMware wprowadziła zmiany w architekturze programu VMware Workstation 15.5.6, aby umożliwić swojemu produktowi korzystanie z interfejsów API Microsoft WHP i rozwiązać problem kompatybilności. VMM może teraz działać na poziomie użytkownika (nie w trybie uprzywilejowanym) przy użyciu interfejsów API WHP i uruchamiać maszyny wirtualne bez bezpośredniego dostępu do rozszerzeń wirtualizacji Procesora. Tryb ten nazywa się User Level Monitor (ULM) lub trybem Host VBS. Jeśli odinstalujesz funkcje związane z Hyper-V z hosta z systemem Windows, program VMware Workstation wykryje to automatycznie, a VMM przełączy się na bezpośredni dostęp do rozszerzeń wirtualizacji Procesora (działając w trybie uprzywilejowanym).
Platforma Windows Hypervisor Platform (WHP) musi być zainstalowana na fizycznej maszynie z systemem Windows, na której włączono Hyper-V, aby umożliwić programowi VMware Workstation uruchamianie maszyn wirtualnych VMware na tej maszynie. Zainstaluj funkcję Windows Hypervisor Platform w Panelu sterowania, klikając opcję Turn Windows features on or off.
W ten sposób możesz zaktualizować system Windows 10 i program VMware Workstation na komputerze fizycznym do wersji, które obsługują uruchamianie funkcji związanych z Hyper-V oraz maszyn wirtualnych VMware Workstation na tym samym komputerze.
Ograniczenia trybu Host VBS:
- Platforma Windows Hypervisor Platform nie jest obsługiwana w systemie Windows Server 2016 ani w innych wersjach i edycjach systemu Windows Server. W rezultacie stacja robocza VMware nie może uruchamiać maszyn wirtualnych w trybie VBS na maszynach fizycznych z systemem Windows Server.
- Niejawniona wirtualizacja nie jest obsługiwana. Nie można uruchamiać zagnieżdżonych maszyn wirtualnych (maszyn wirtualnych w maszynach wirtualnych VMware Workstation).
- Maszyny wirtualne VMware mogą działać wolniej.
- Liczniki monitorowania wydajności x86 (PMC) nie są obsługiwane.
- Klucze ochrony w trybie użytkownika (PKU) są niedostępne.
- Ograniczona pamięć transakcyjna (RTM) i eliminacja blokady sprzętowej (HLE) są niedostępne.
VirtualBox i Hyper-V
VirtualBox może współistnieć z programami Hyper-V, Device Guard i Credential Guard od wersji VirtualBox 6.0. VirtualBox 6 może współpracować z interfejsami API Hyper-V podobnie jak stacja robocza VMware na Windows 10 v1803 x64.
Należy włączyć następujące funkcje na maszynie hosta z systemem Windows, aby umożliwić VirtualBox korzystanie z API Hyper-V:
- Hyper-V
- Platforma Windows Hypervisor
Jeśli funkcja Hyper-V jest włączona, ale funkcja Platforma Windows Hypervisor jest wyłączona, w System > Acceleration w podsumowaniu konfiguracji maszyny wirtualnej można zobaczyć, że Paravirtualisation mode jest włączony. Jeśli spróbujesz uruchomić maszynę wirtualną, VirtualBox przypomni Ci o włączeniu Platformy Windows Hypervisor i wyświetli komunikat o błędzie.
Komunikat o błędzie:
WHvCapabilityCodeHypervisorPresent is FALSE! Make sure you have enabled the 'Windows Hypervisor Platform' feature.
(VERR_NEM_NOT_AVAILABLE).
VT-x is not available (VERR_VMX_NO_VMX).
Jeśli wymagane funkcje związane z Hyper-V w systemie Windows są włączone, w System sekcji dla maszyny wirtualnej wyświetla się następująca informacja:
Acceleration: VT-x/AMD-v, Nested Paging, Paravirtualization Hyper-V

Maszyna wirtualna powinna uruchomić się pomyślnie. Zielona ikona żółwia pojawia się na dolnym panelu okna VirtualBox. Ta ikona wskazuje, że maszyna wirtualna działa w trybie parawirtualizacji Hyper-V zamiast trybu natywnego, który zwykle jest używany przez VirtualBox przy bezpośredniej interakcji z rozszerzeniami wirtualizacji CPU. Wydajność maszyn wirtualnych VirtualBox pogarsza się na maszynach, na których włączone są funkcje Hyper-V i powiązane. Możesz wyłączyć lub usunąć Hyper-V, jak wyjaśniono wcześniej, aby uruchomić maszyny wirtualne na VirtualBox w trybie natywnym, korzystając bezpośrednio z rozszerzeń wirtualizacji CPU.
Przeczytaj także VirtualBox a Hyper-V porównanie oraz VirtualBox kontra VMware porównanie.
Wnioski
Nowe funkcje Windows, takie jak Security Based Virtualization (Device Guard i Credential Guard), Windows Sandbox, WSL, które wykorzystują silnik Hyper-V, powodują wiele problemów dla użytkowników, administratorów i programistów oprogramowania używających innych hyperwizorów, takich jak stacja robocza VMware, VirtualBox, QEMU i Google Android Emulator na maszynach z systemem Windows. Istnieją dwa sposoby rozwiązania tych problemów z niekompatybilnością: wyłączenie/odinstalowanie Hyper-V lub korzystanie z nowych wersji aplikacji do wirtualizacji, które obsługują interfejsy API Hyper-V, takich jak Windows Hypervisor Platform API udostępniane przez firmę Microsoft.
Uruchamianie maszyn wirtualnych w programach VirtualBox, VMware Workstation i innych hiperwizorach na komputerach z Hyper-V przy użyciu interfejsów API może obniżyć wydajność maszyn wirtualnych innych niż Hyper-V. Wykonywanie kopii zapasowych danych ma kluczowe znaczenie na wypadek awarii aplikacji do wirtualizacji. Jeśli nadal nie wybrałeś najlepszego rozwiązania do tworzenia kopii zapasowej Hyper-V dla swojego środowiska, rozważ rozwiązanie NAKIVO Backup & Replication. Rozwiązanie to oferuje niezawodne tworzenie kopii zapasowych, ochronę przed oprogramowaniem wymuszającym okup, odzyskiwanie awaryjne i wiele więcej. Pobierz edycję bezpłatną, aby zobaczyć, jak działa to rozwiązanie.











