Le applicazioni di virtualizzazione non funzionano: cosa fare?
Quando si installa un’applicazione di virtualizzazione su un computer Windows su cui sono già presenti Hyper-V o servizi correlati, spesso possono verificarsi degli errori. Gli errori che si verificano durante l’esecuzione di VM su applicazioni di virtualizzazione diverse da Hyper-V causano problemi significativi. Questo articolo del blog spiega quali sono le cause di tali errori, come risolverli e come eseguire altre applicazioni di virtualizzazione su un computer con Hyper-V.
Principio di Funzionamento e Sfondo
Dopo aver installato VMware Workstation, VMware Player o Oracle VirtualBox su una macchina Windows, potresti riscontrare errori all’avvio di una VM in queste applicazioni di virtualizzazione. Gli errori si verificano anche se le VM Hyper-V non sono attive in quel momento. Puoi installare VMware Workstation e VirtualBox, e eseguire VM VMware e VM VirtualBox sullo stesso computer, ma non contemporaneamente. Cosa causa questo problema con Hyper-V? Diamoci uno sguardo più da vicino.
VMware Workstation, VMware Player e VirtualBox sono hypervisor di tipo 2, mentre Hyper-V è un hypervisor di tipo 1. Un hypervisor di tipo 2 è installato sul sistema operativo che è in esecuzione sull’hardware. Un hypervisor di tipo 1 è installato sopra l’hardware. Tutti gli hypervisor richiedono estensioni di virtualizzazione del processore, che sono insiemi di istruzioni per la virtualizzazione hardware – Intel VT-x o AMD-V. Hyper-V prende il controllo delle estensioni di virtualizzazione all’avvio di Windows. Queste estensioni di virtualizzazione non sono disponibili per VMware Workstation e VirtualBox quando Windows si carica. Solo un componente software alla volta può utilizzare Intel VT-x o AMD-V.
Questa incompatibilità è causata da Hyper-V perché le estensioni di virtualizzazione non vengono esposte agli hypervisor di tipo 2 installati su una macchina Windows dove il ruolo Hyper-V è abilitato.
Errori 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.
Errori 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.
La situazione più interessante è quando un utente non installa Hyper-V e incontra comunque uno degli errori menzionati in precedenza usando VMware Workstation o VirtualBox. L’errore si verifica quando sono abilitati gli aggiornamenti automatici di Windows. Con gli aggiornamenti (Windows 10 v1607 e le versioni appropriate di Windows Server a partire da Windows Server 2016), alcune nuove funzionalità relative a Hyper-V vengono installate e abilitate automaticamente senza il consenso dell’utente di Windows. Queste funzioni sono Device Guard e Credential Guard. Gli aggiornamenti di Windows conoscono le vulnerabilità ma possono aggiungere problemi e distruggere una configurazione funzionante. Per questo motivo, molti utenti non amano gli aggiornamenti automatici.
Device Guard è un gruppo di funzionalità di sicurezza in Windows. L’idea di implementare questa funzione è di rafforzare l’esecuzione di codice dannoso. Device Guard è disponibile in Windows 10, Windows Server 2019 e Windows Server 2019. I requisiti principali sono: UEFI in esecuzione in modalità nativa e Secure Boot abilitato. Credential Guard è una funzione per ridurre l’impatto degli attacchi se il codice dannoso è già in esecuzione, isolando i segreti di sistema e utente per renderli più difficili da compromettere.
Virtual Secure Mode (VSM) è una funzione per sfruttare le estensioni di virtualizzazione del processore che protegge i dati in una regione isolata della memoria. HVCI è l’integrità del codice protetta dall’hypervisor. LSA è l’Autorità di Sicurezza Locale.
La Sicurezza Basata sulla Virtualizzazione (VBS) è una classe di tecnologie che utilizza le estensioni di virtualizzazione, tra cui VSM, per fornire sicurezza in Windows. Il ruolo Hyper-V è richiesto per far funzionare queste funzioni (gli strumenti di gestione Hyper-V non sono necessari).
L’hypervisor (Hyper-V) si carica per primo, e quindi il sistema operativo (Windows) si carica. Hyper-V fornisce un livello di astrazione tra hardware e sistema operativo. Un VSM consente di contrassegnare processi critici specifici e la memoria da loro utilizzata come appartenenti a un sistema operativo indipendente controllato da Hyper-V. Il principio è simile all’isolamento di due VM che operano su un host Hyper-V quando ciascuna VM può utilizzare solo le risorse hardware assegnate.
Nota: Se hai bisogno di un hypervisor di tipo 1 da VMware, utilizza VMware ESXi e un ambiente VMware vSphere. Scopri di più in questi post del blog: Hyper-V contro VMware, VMware Workstation vs VMware Player e Come installare ESXi su Hyper-V.
Esploriamo come risolvere nel dettaglio il problema di incompatibilità tra Hyper-V e altre applicazioni di virtualizzazione.
Metodo 1: Disinstalla Hyper-V nell’interfaccia grafica
Verifica le informazioni di sistema sulla configurazione di Windows eseguendo il seguente comando in CMD:
msinfo32.exe
Si apre una finestra delle Informazioni di Sistema. Nella schermata seguente, si vede che Hyper-V è abilitato (un hypervisor è stato rilevato) e la sicurezza basata su Device Guard Virtualization è in esecuzione. Ora puoi rimuovere queste funzioni.
Tieni presente che le seguenti funzioni relative a Hyper-V non saranno disponibili dopo la rimozione di Hyper-V:
- Hyper-V
- Credential Guard and Device Guard
- Virtual Machine Platform
- Windows Sandbox
- WSL2.
Rimuovi la funzione Hyper-V nell’interfaccia utente grafica (GUI) utilizzando la procedura guidata di Control Panel, Add Roles, e Features.
In Windows 10, apri Control Panel, clicca su Programs and Features, poi clicca su Turn Windows features on or off.
Si apre la finestra Windows Features.
Deseleziona la casella di controllo Hyper-V e premi OK.
Per completare la rimozione di Hyper-V, riavvia il computer.
I passaggi per rimuovere Hyper-V su Windows 10 e Windows Server 2016 sono simili.
In Windows Server 2016, apri Server Manager e clicca su Manage > Remove Roles and Features. Nel Remove Roles and Features Wizard , passare al passaggio Server Roles e deselezionare Hyper-V. Premi Next a ogni passaggio per continuare. È necessario un riavvio per completare la rimozione del ruolo Hyper-V.
Metodo 2: Usa PowerShell per disabilitare la funzione Hyper-V
Puoi eseguire un’azione simile utilizzando l’interfaccia a riga di comando anziché la GUI.
Accedi a PowerShell come amministratore ed esegui il comando per disabilitare la funzione Hyper-V:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
Riavvia la macchina host:
shutdown -r -t 0
Metodo 3: Disabilita Hyper-V usando BCDedit
L’idea alla base di questo metodo è modificare i dati di configurazione di avvio e disabilitare l’avvio di Hyper-V senza disinstallare il ruolo Hyper-V.
Accedi a PowerShell come amministratore o esegui il comando da un prompt dei comandi con privilegi elevati per disabilitare Hyper-V:
bcdedit /set hypervisorlaunchtype off
Se hai bisogno di riabilitare Hyper-V e ripristinare il valore predefinito, esegui questo comando:
bcdedit /set hypervisorlaunchtype auto
Per un maggior controllo e comodità, disabilita l’avvio veloce in Windows 10. Apri l’editor del Registro di sistema di Windows e vai a:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerPower
Imposta il parametro HiberbootEnabled a 0
Se hai bisogno di utilizzare a volte le VM Hyper-V, crea due voci per un boot loader Windows: una per avviare Windows con Hyper-V e un’altra per avviare Windows senza Hyper-V. Quindi, seleziona l’opzione necessaria prima di avviare Windows. Questo approccio evita di eseguire comandi in PowerShell manualmente ogni volta che hai bisogno di abilitare o disabilitare Hyper-V.
bcdedit /copy "{current}" /d "No Hyper-V"
"The entry was successfully copied to {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}."
Copia e incolla il tuo valore al posto di xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
bcdedit /set "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" hypervisorlaunchtype off
Riavvia il computer.
Una volta che il computer si è riavviato, dovresti vedere due opzioni nel gestore di avvio di Windows.
Se vuoi rimuovere l’opzione di avvio No Hyper-V , utilizza l’opzione /delete per bcdedit.
Ottieni un elenco delle voci di avvio correnti:
bcdedit /v
Viene visualizzato nell’output un elenco di tutte le voci con i loro identificatori. Copia l’ID della voce che vuoi rimuovere ed esegui il seguente comando:
bcdedit /delete "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
Metodo 4: Disinstalla il ruolo Hyper-V in PowerShell con dism.exe
L’idea alla base di questo metodo è utilizzare l’utilità di gestione e servizio delle immagini dell’implementazione nella riga di comando per disinstallare Hyper-V.
Accedi al CMD o a PowerShell come amministratore. Esegui il seguente comando per disinstallare Hyper-V:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
Se desideri nuovamente installare Hyper-V, usa questo comando:
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
Metodo 5: Disabilita la sicurezza basata sulla virtualizzazione in Windows
Questo metodo è utilizzato per disabilitare Device Guard e Credential Guard, che sono funzioni relative a Hyper-V. Apri l’Editor dei Criteri di Gruppo per una macchina locale. L’Editor dei Criteri di Gruppo è disponibile in Windows 10 Pro, Enterprise e Education. Nel prompt dei comandi, esegui gpedit.msc
Vai a Local Computer Policy > Computer Configuration > Administrative Templates > System > Device Guard
Fai doppio clic su Turn On Virtualization Based Security. Di default, lo stato di questa impostazione è Not configured.
Nella finestra che si apre, seleziona Disabled e premi OK per salvare le impostazioni e chiudere la finestra.
Modifica il Registro come alternativa
In Windows 10 Home, dove l’Editor dei Criteri di Gruppo non è presente, è possibile disabilitare la Sicurezza Basata sulla Virtualizzazione nel Registro di Windows.
Crea un backup del registro di Windows prima di cambiare le impostazioni del registro per evitare errori e problemi.
Apri l’Editor del Registro. Esegui regedit nella riga di comando che dovrebbe essere aperta come Amministratore.
Vai a HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuard
Crea la voce EnableVirtualizationBasedSecurity se questa voce manca. Per creare una nuova voce, fai clic con il pulsante destro del mouse su uno spazio vuoto nella directory DeviceGuard e nel menu contestuale fai clic su New > DWORD (32-bit) Value. Inserisci il EnableVirtualizationBasedSecurity nome per questa voce del registro. Per impostazione predefinita, il set di dati per questa voce dovrebbe essere 0 (vedi lo screenshot seguente). Puoi fare doppio clic su EnableVirtualizationBasedSecurity e impostare 0 manualmente.
Vai a HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa
Crea una nuova voce del registro nella directory Lsa. Fai clic con il pulsante destro del mouse su uno spazio vuoto nel riquadro destro della finestra Registry Editor. Nel menu contestuale, fai clic su New > DWORD (32-bit) Value.
Inserisci il nome LsaCfgFlags per questo valore. Questo valore deve essere impostato su 0.
Chiudi l’Editor del Registro e riavvia il computer.
Puoi eseguire i seguenti comandi in PowerShell (come Amministratore) per disabilitare Device Guard e Credential Guard al prossimo avvio di Windows.
Monta una partizione di sistema UEFI sull’unità X: (seleziona un volume non utilizzato):
mountvol X: /s
Copia il C:WindowsSystem32SecConfig.efi to X:EFIMicrosoftBootSecConfig.efi con un’opzione per sovrascrivere il file se il file esiste. Questo file è un’immagine di avvio per lo strumento di configurazione della sicurezza di Windows.
copy %WINDIR%System32SecConfig.efi X:EFIMicrosoftBootSecConfig.efi /Y
Crea una nuova opzione nel menu di avvio con l’ID {0cb3b571-2f2e-4343-a879-d86a476d7215} e il nome DebugTool:
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
Imposta l’opzione di avvio creata al passo precedente su EFIMicrosoftBootSecConfig.efi:
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "EFIMicrosoftBootSecConfig.efi"
Imposta il Boot Manager di Windows per rendere la nuova voce quella predefinita per il prossimo riavvio. Dopo di che, il riavvio di Windows dovrebbe tornare all’avvio normale.
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
Imposta il bootloader per passare le opzioni DISABLE-LSA-ISO,DISABLE-VBS al file SecConfig.efi quando il bootloader lancia il file.
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
Imposta la partizione per l’unità di avvio all’unità X: :
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
Smonta l’unità X: dal sistema:
mountvol X: /d
Metodo 6: Aggiorna VMware Workstation
Se hai Windows 10 versione 2004 (20H1) build 19041 o successiva sul tuo computer fisico, puoi aggiornare VMware Workstation a VMware Workstation 15.5.6 o più recente ed eseguire le VM VMware sul tuo computer Windows senza disabilitare/disinstallare le funzioni di Hyper-V e Virtualization Based Security (VBS), inclusi Device Guard e Credential Guard.
A causa di molte lamentele da parte dei clienti, Microsoft e VMware hanno deciso di sviluppare un progetto congiunto che adotta le API della Piattaforma Hypervisor di Microsoft Windows (WHP) per permettere ai hypervisor di tipo 2, come VMware Workstation, di funzionare su un host dove Hyper-V è abilitato. Queste API permettono alle applicazioni di gestire le risorse della CPU, leggere/scrivere i valori del registro, terminare l’operazione della CPU e generare interruzioni.
VMware Workstation, prima della versione 15.5.5, utilizza un Monitor della Macchina Virtuale (VMM) che ha accesso diretto a una CPU e ai set di istruzioni di virtualizzazione (Intel VT-x o AMD-V). Un VMM opera in modalità privilegiata. Se le funzioni di Sicurezza Basata sulla Virtualizzazione sono abilitate su un host Windows, allora uno strato aggiuntivo di hypervisor (Hyper-V) è aggiunto tra l’hardware e Windows. Hyper-V ha accesso diretto alle funzioni della CPU utilizzate per la virtualizzazione hardware, e VMM non ha accesso alle funzioni di virtualizzazione della CPU.
VMware ha apportato modifiche nell’architettura di VMware Workstation 15.5.6 per permettere al loro prodotto di utilizzare le API WHP di Microsoft e risolvere il problema di compatibilità. VMM può ora funzionare a livello utente (non in modalità privilegiata) usando le API WHP ed eseguire le VM senza accesso diretto alle estensioni di virtualizzazione della CPU. Questa modalità è chiamata Monitor a Livello Utente (ULM) o modalità VBS Host. Se disinstalli le funzioni relative a Hyper-V dal tuo host Windows, VMware Workstation lo rileva automaticamente e VMM viene commutato all’accesso diretto delle estensioni di virtualizzazione della CPU (funzionando in modalità privilegiata).
La Piattaforma Hypervisor di Windows (WHP) deve essere installata su una macchina Windows fisica dove Hyper-V è abilitato per permettere a VMware Workstation di eseguire le VM VMware su questa macchina. Installa la funzione Windows Hypervisor Platform nel Pannello di Controllo cliccando Turn Windows features on or off.
Pertanto, puoi aggiornare Windows 10 e VMware Workstation sulla tua macchina fisica a versioni che supportano le funzioni relative a Hyper-V e le VM VMware sulla stessa macchina.
Limitazioni della modalità VBS Host:
- La Piattaforma Hypervisor di Windows non è supportata su Windows Server 2016 e altre versioni ed edizioni di Windows Server. Di conseguenza, VMware Workstation non può eseguire VM nella modalità VBS host su macchine fisiche che eseguono Windows Server.
- La virtualizzazione annidata non è supportata. Non puoi eseguire VM annidate (VM all’interno di VM VMware Workstation).
- Le VM VMware possono funzionare più lentamente.
- I contatori di monitoraggio delle prestazioni x86 (PMC) non sono supportati.
- La capacità di chiavi di protezione in modalità utente (PKU) non è disponibile.
- Le capacità di memoria transazionale ristretta (RTM) e sparse di blocco hardware (HLE) non sono disponibili.
VirtualBox e Hyper-V
VirtualBox può coesistere con Hyper-V, Device Guard e Credential Guard a partire da VirtualBox 6.0. VirtualBox 6 può funzionare con le API Hyper-V in modo simile a VMware Workstation su Windows 10 v1803 x64.
Queste caratteristiche devono essere abilitate su una macchina host Windows per consentire a VirtualBox di collaborare con le API Hyper-V:
- Hyper-V
- Piattaforma Hypervisor di Windows
Se la caratteristica Hyper-V è abilitata, ma la caratteristica Piattaforma Hypervisor di Windows è disabilitata, nella System > Acceleration nel riepilogo della configurazione VM, puoi vedere che il Paravirtualisation mode è acceso. Se provi ad avviare una VM, VirtualBox ti ricorda di abilitare la Piattaforma Hypervisor di Windows e mostra il messaggio di errore.
Il messaggio di errore:
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).
Se le caratteristiche relative a Hyper-V richieste in Windows sono abilitate, le seguenti informazioni vengono mostrate per la VM nella sezione Sistema:
Acceleration: VT-x/AMD-v, Nested Paging, Paravirtualization Hyper-V

La VM dovrebbe avviarsi con successo. Un’icona di tartaruga verde appare nel pannello inferiore della finestra VirtualBox. Questa icona indica che una VM sta eseguendo in modalità di paravirtualizzazione Hyper-V invece della modalità nativa solitamente utilizzata da VirtualBox quando si interagisce direttamente con le estensioni di virtualizzazione della CPU. Le prestazioni delle VM di VirtualBox peggiorano su macchine su cui Hyper-V e le funzioni correlate sono abilitate. Puoi disabilitare o rimuovere Hyper-V come spiegato in precedenza per eseguire VM su VirtualBox nella modalità nativa utilizzando direttamente le estensioni di virtualizzazione CPU.
Leggi anche il VirtualBox contro Hyper-V confronto e il VirtualBox contro VMware confronto.
Conclusione
Le nuove funzioni di Windows come la Sicurezza Basata sulla Virtualizzazione (Device Guard e Credential Guard), Windows Sandbox, WSL che utilizzano il motore Hyper-V causano molti problemi agli utenti, amministratori e sviluppatori di software che utilizzano altri hypervisor come VMware Workstation, VirtualBox, QEMU e Google Android Emulator su macchine Windows. Esistono due approcci per risolvere questi problemi di incompatibilità: Disabilitare/disinstallare Hyper-V o utilizzare nuove versioni di applicazioni di virtualizzazione che supportano il lavoro con le API di Hyper-V, come la Windows Hypervisor Platform API fornita da Microsoft.
Eseguire VM su VirtualBox, VMware Workstation e altri hypervisor su macchine con Hyper-V utilizzando le API può ridurre le prestazioni delle VM non Hyper-V. Il backup dei dati è cruciale per i casi in cui le applicazioni di virtualizzazione falliscono. Se non avete ancora scelto la migliore soluzione di backup di Hyper-V per il vostro ambiente, considerate NAKIVO Backup & Replication. La soluzione offre backup robusto, protezione dai ransomware, ripristino di emergenza e altro ancora. Scarica l’edizione gratuita per vedere la soluzione in azione.











