Le applicazioni di virtualizzazione non funzionano: cosa fare?

Quando si installa un’applicazione di virtualizzazione su un computer Windows su cui sono installati Hyper-V o servizi correlati, spesso possono verificarsi errori. Gli errori che si verificano quando si eseguono VM su applicazioni di virtualizzazione non Hyper-V causano problemi significativi. Questo post del blog spiega cosa causa questi errori, come risolverli e come eseguire altre applicazioni di virtualizzazione su un computer con Hyper-V.

NAKIVO for Hyper-V Backup

NAKIVO for Hyper-V Backup

Agentless, application-aware backups for Hyper-V. Anti-ransomware protection, instant VM boot from backup, other virtual/physical platform support and more.

Contesto e principio di funzionamento

Dopo aver installato VMware Workstation, VMware Player o Oracle VirtualBox su un computer Windows, è possibile che si verifichino errori all’avvio di una VM in queste applicazioni di virtualizzazione. Gli errori si verificano anche se le VM Hyper-V non sono in esecuzione in quel momento. È possibile installare VMware Workstation e VirtualBox ed eseguire VM VMware e VirtualBox sullo stesso computer, ma non contemporaneamente. Qual è la causa di questo problema con Hyper-V? Esaminiamo la questione 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 viene installato sul sistema operativo in esecuzione sull’hardware. Un hypervisor di tipo 1 viene installato sull’hardware. Tutti gli hypervisor richiedono estensioni di virtualizzazione del processore, che sono set di istruzioni per la virtualizzazione hardware: Intel VT-x o AMD-V. Hyper-V assume il controllo delle estensioni di virtualizzazione all’avvio di Windows. Queste estensioni di virtualizzazione non sono disponibili per VMware Workstation e VirtualBox quando Windows viene avviato. Solo un componente software alla volta può utilizzare Intel VT-x o AMD-V.

How Hyper-V and Windows applications work on a computer

Questa incompatibilità è causata da Hyper-V perché le estensioni di virtualizzazione non sono esposte agli hypervisor di tipo 2 installati su un computer Windows in cui è abilitato il ruolo Hyper-V.

Errori di VMware Workstation:

VMware Workstation e Hyper-V non sono compatibili. Rimuovere il ruolo Hyper-V dal sistema prima di eseguire VMware Workstation.

VMware Workstation e Device/Credential Guard non sono compatibili. VMware Workstation può essere eseguito dopo aver disabilitato Device/Credential Guard.

Errori VirtualBox:

BSOD, come BSOD con SYSTEM_SERVICE_EXCEPTION

VT-x non è disponibile (VER_VMX_NO_VMX). E_FAIL (0x80004005).

Una VM VirtualBox funziona troppo lentamente e utilizza la modalità di paravirtualizzazione (emulazione).

La situazione più interessante si verifica quando un utente non installa Hyper-V e riscontra comunque uno degli errori menzionati in precedenza durante l’utilizzo di VMware Workstation o VirtualBox. L’errore si verifica quando gli aggiornamenti automatici di Windows sono abilitati. Con gli aggiornamenti (Windows 10 v1607 e le versioni appropriate di Windows Server da Windows Server 2016), alcune nuove funzionalità relative a Hyper-V vengono installate e abilitate automaticamente senza il consenso dell’utente Windows. Queste funzionalità sono Device Guard e Credential Guard. Gli aggiornamenti di Windows risolvono le vulnerabilità note, ma possono aggiungere problemi e distruggere una configurazione attiva. Ecco perché molti utenti non amano gli aggiornamenti automatici.

Device Guard è un gruppo di funzioni di sicurezza in Windows. L’idea alla base dell’implementazione di questa funzione è quella 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 che riduce al minimo l’impatto degli attacchi se il codice dannoso è già in esecuzione, isolando le credenziali di sistema e utente per rendere più difficile la compromissione.

Virtual Secure Mode (VSM) è una funzione che sfrutta le estensioni di virtualizzazione del processore per proteggere 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 estensioni di virtualizzazione, tra cui VSM, per garantire la sicurezza in Windows. Per il funzionamento di queste funzioni è obbligatorio il ruolo Hyper-V (non sono necessari strumenti di gestione Hyper-V).

L’hypervisor (Hyper-V) viene caricato per primo, seguito dal sistema operativo (Windows). Hyper-V fornisce un livello di astrazione tra l’hardware e il sistema operativo. Un VSM consente di contrassegnare specifici processi critici e la memoria da essi utilizzata, poiché appartengono a un sistema operativo indipendente separato controllato da Hyper-V. Il principio è simile all’isolamento di due VM in esecuzione su un host Hyper-V, in cui ciascuna VM può utilizzare solo le risorse hardware ad essa assegnate.

Virtualization Applications Are Not Working: What Do You Do?

Nota: Se avete bisogno di un hypervisor di tipo 1 di VMware, utilizzate VMware ESXi e l’ambiente VMware vSphere. Scopri di più in questi post del blog: Hyper-V vs VMware, VMware estación de trabajo vs VMware Playere Come installare ESXi su Hyper-V.

Vediamo in dettaglio come risolvere il problema di incompatibilità tra Hyper-V e altre applicazioni di virtualizzazione.

Metodo 1: disinstallare Hyper-V nella GUI

Verificare le informazioni di sistema relative alla configurazione di Windows eseguendo il seguente comando in CMD:

msinfo32.exe

Si aprirà una finestra con le informazioni di sistema. Nella schermata seguente, puoi vedere che Hyper-V è abilitato (è stato rilevato un hypervisor) e che la sicurezza basata sulla virtualizzazione Device Guard è in esecuzione. Ora è possibile rimuovere queste funzioni.

Viewing system information in Windows

È importante tenere presente che le seguenti funzioni relative a Hyper-V non saranno disponibili dopo la rimozione di Hyper-V:

  • Hyper-V
  • Credential Guard e Device Guard
  • Piattaforma VM
  • Windows Sandbox
  • WSL2.

Rimuovere la funzione Hyper-V nell’interfaccia utente grafica (GUI) utilizzando il Pannello di controllo, Aggiungi ruoli e funzioni.

In Windows 10, aprire Pannello di controllo, fare clic su Programmi e funzionalità, quindi fare clic su Attiva o disattiva le funzioni di Windows.

Si apre la finestra delle funzioni di Windows.

Deselezionare la casella di controllo Hyper-V e premere OK.

Per terminare la rimozione di Hyper-V, riavviare il computer.

Removing Hyper-V in Windows 10 to allow other virtualization applications to work properly

I passaggi per rimuovere Hyper-V su Windows 10 e Windows Server 2016 sono simili.

In Windows Server 2016, aprire Server Manager e fare clic su Gestisci > Rimuovi ruoli e funzioni. In Rimuovi ruoli e funzioni Wizard, vai al Ruoli server passaggio e deseleziona Hyper-V. Fare clic su Avanti ad ogni passaggio per continuare. È obbligatorio riavviare il sistema per terminare la rimozione del ruolo Hyper-V.

Removing Hyper-V in the Remove Roles and Features wizard

Metodo 2: utilizzare PowerShell per disabilitare la funzione Hyper-V

È possibile eseguire un’azione simile utilizzando l’interfaccia della riga di comando anziché la GUI.

Accedere a PowerShell come amministratore ed eseguire il comando per disabilitare la funzione Hyper-V:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor

Riavviare il computer host:

shutdown -r -t 0

Metodo 3: disabilitare Hyper-V utilizzando BCDedit

L’idea alla base di questo metodo è quella di modificare i dati di configurazione di avvio e disabilitare l’avvio di Hyper-V senza disinstallare il ruolo Hyper-V.

Accedere a PowerShell come amministratore o eseguire il comando da un prompt dei comandi con privilegi elevati per disabilitare Hyper-V:

bcdedit /set hypervisorlaunchtype off

Se è necessario riattivare Hyper-V e ripristinare il valore predefinito, eseguire questo comando:

bcdedit /set hypervisorlaunchtype auto

Per un maggiore controllo e praticità, disabilitare l’avvio rapido in Windows 10. Apri l’Editor del Registro di sistema di Windows e vai a:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerPower 

Imposta il parametro HiberbootEnabled su 0

Se hai bisogno di utilizzare occasionalmente le macchine virtuali Hyper-V, crea due voci per il boot loader di 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 dover eseguire manualmente i comandi in PowerShell ogni volta che è necessario abilitare o disabilitare Hyper-V.

bcdedit /copy "{current}" /d "No Hyper-V"

“La voce è stata copiata correttamente in {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

Editing boot configuration in Windows

Riavvia il computer.

Una volta riavviato il computer, dovresti vedere due opzioni in Windows Boot Manager.

Two boot options in Windows Boot Manager

Se desideri rimuovere la voce di avvio No Hyper-V , utilizza l’opzione /delete per bcdedit.

Ottieni un elenco delle voci di avvio correnti:

bcdedit /v

Nell’output viene visualizzato un elenco di tutte le voci con i relativi identificatori. Copia l’ID della voce che desideri rimuovere ed esegui il comando seguente:

bcdedit /delete "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"

Metodo 4: disinstallare il ruolo Hyper-V in PowerShell con dism.exe

L’idea alla base di questo metodo è quella di utilizzare lo strumento Deployment Image Servicing and Management nell’interfaccia della riga di comando per disinstallare Hyper-V.

Accedere a CMD o PowerShell come amministratore. Esegui il seguente comando per disinstallare Hyper-V:

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

Se desideri installare nuovamente Hyper-V , utilizza questo comando:

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

How to uninstall Hyper-V in the command line interface

Metodo 5: Disattivare la sicurezza basata sulla virtualizzazione in Windows

Questo metodo viene utilizzato per disabilitare Device Guard e Credential Guard, che sono funzioni relative a Hyper-V.

Aprire l’Editor criteri di gruppo per un computer locale. L’Editor criteri di gruppo è disponibile in Windows 10 Pro, Enterprise ed Education. Nel prompt dei comandi, eseguire gpedit.msc

Andare a Criteri computer locale > Configurazione computer > Modelli amministrativi > Sistema > Device Guard

Fare doppio clic su Attiva sicurezza basata sulla virtualizzazione. Per impostazione predefinita, lo stato di questa impostazione è Non configurato.

Turn Off Virtualization Based Security that uses Hyper-V

Nella finestra che si apre, selezionare Disabilitato e premere OK per salvare le impostazioni e chiudere la finestra.

Close the Group Policy Editor and restart your computer to make changes take effect

Modifica il Registro di sistema in alternativa

In Windows 10 Home, dove l’Editor criteri di gruppo non è presente, è possibile disabilitare la sicurezza basata sulla virtualizzazione nel Registro di sistema di Windows.

Creare un backup del Registro di sistema di Windows prima di modificare le impostazioni del Registro di sistema per evitare errori e problemi.

Aprire l’Editor del Registro di sistema. Eseguire 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 non è presente. Per creare una nuova voce, fare clic con il pulsante destro del mouse su uno spazio vuoto nella directory DeviceGuard e, nel menu contestuale, fare clic su Nuovo > Valore DWORD (32 bit). Immettere il nome EnableVirtualizationBasedSecurity per questa voce del Registro di sistema. Per impostazione predefinita, i dati impostati per questa voce dovrebbero essere 0 (vedere la schermata seguente). È possibile fare doppio clic su EnableVirtualizationBasedSecurity e impostare 0 manualmente.

Editing registry to disable Virtualization Based Security in Windows

Vai a HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa

Crea una nuova voce di registro nella directory Lsa . Fare clic con il pulsante destro del mouse su uno spazio vuoto nel riquadro destro della finestra dell’Editor del Registro di sistema. Nel menu contestuale, fare clic su Nuovo > Valore DWORD (32 bit).

Immettere il LsaCfgFlags nome per questo valore. Questo valore deve essere impostato su 0.

How to disable LSA in Windows Registry

Chiudi l’Editor del Registro di sistema e riavvia il computer.

È possibile eseguire i seguenti comandi in PowerShell (come amministratore) per disabilitare Device Guard e Credential Guard al prossimo avvio di Windows.

Montare una partizione di sistema UEFI sull’unità X: (selezionare un volume inutilizzato):

mountvol X: /s

Copiare il file C:WindowsSystem32SecConfig.efi su X:EFIMicrosoftBootSecConfig.efi con l’opzione di sovrascrivere il file se 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 DebugTool nome:

bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader

Imposta l’opzione di avvio creata nel passaggio precedente su EFIMicrosoftBootSecConfig.efi:

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "EFIMicrosoftBootSecConfig.efi"

Imposta Windows Boot Manager in modo che la nuova voce diventi quella predefinita al prossimo riavvio. Dopodiché, riavvia Windows e dovrebbe tornare al normale avvio.

bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}

Impostare il bootloader in modo che passi le opzioni DISABLE-LSA-ISO,DISABLE-VBS al file SecConfig.efi quando il bootloader avvia il file.

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS

Impostare la partizione per l’unità avviata sull’unità X:

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:

Smontare l’unità X: dal sistema:

mountvol X: /d

Metodo 6: aggiornare VMware Workstation

Se si dispone di Windows 10 versione 2004 (20H1) build 19041 o versioni successive sul tuo computer fisico, puoi upgradeare VMware Workstation a VMware Workstation 15.5.6 o versioni successive ed eseguire VM VMware sul tuo computer Windows senza disabilitare/disinstallare le funzioni Hyper-V e Virtualization Based Security (VBS), incluse Device Guard e Credential Guard.

A seguito delle numerose segnalazioni ricevute dai clienti, Microsoft e VMware hanno deciso di sviluppare un progetto congiunto che adotta le API Microsoft Windows Hypervisor Piattaforma (WHP) per consentire agli hypervisor di tipo 2, come VMware Workstation, di essere eseguiti su un host in cui è abilitato Hyper-V. Queste API consentono alle applicazioni di gestire le risorse della CPU, leggere/scrivere i valori del registro, terminare il funzionamento della CPU e generare interruzioni.

VMware Workstation prima della versione 15.5.5 utilizza un Virtual Machine Monitor (VMM) che ha accesso diretto a una CPU e a set di istruzioni di virtualizzazione (Intel VT-x o AMD-V). Un VMM opera in modalità privilegiata. Se le funzioni di sicurezza basate sulla virtualizzazione sono abilitate su un host Windows, viene aggiunto un ulteriore livello di hypervisor (Hyper-V) tra l’hardware e Windows. Hyper-V ha accesso diretto alle funzioni della CPU utilizzate per la virtualizzazione dell’hardware, mentre VMM non ha accesso alle funzioni di virtualizzazione della CPU.

VMware ha apportato modifiche all’architettura di VMware Workstation 15.5.6 per consentire al proprio prodotto di utilizzare le API WHP di Microsoft e risolvere il problema di compatibilità. VMM può ora essere eseguito a livello utente (non in modalità privilegiata) utilizzando le API WHP ed eseguire VM senza accesso diretto alle estensioni di virtualizzazione della CPU. Questa modalità è denominata User Level Monitor (ULM) o modalità Host VBS. Se si disinstallano le funzioni relative a Hyper-V dall’host Windows, VMware Workstation lo rileva automaticamente e VMM passa all’accesso diretto alle estensioni di virtualizzazione della CPU (in esecuzione in modalità privilegiata).

Windows Hypervisor Platform (WHP) deve essere installato su un computer Windows fisico in cui Hyper-V è abilitato per consentire a VMware Workstation di eseguire VM VMware su questo computer. Installare la Windows Hypervisor Platform nel Pannello di controllo facendo clic su Attiva o disattiva le funzioni di Windows.

In questo modo, è possibile aggiornare Windows 10 e VMware Workstation sulla macchina fisica alle versioni che supportano l’esecuzione delle funzioni relative a Hyper-V e delle VM VMware Workstation sullo stesso computer.

Limitazioni della modalità Host VBS:

  • Windows Hypervisor Piattaforma non è supportata su Windows Server 2016 e altre versioni ed edizioni di Windows Server. Di conseguenza, VMware Workstation non può eseguire VM in modalità VBS host su macchine fisiche che eseguono Windows Server.
  • La virtualizzazione nidificata non è supportata. Non è possibile eseguire VM nidificate (VM all’interno di VM VMware Workstation).
  • Le VM VMware potrebbero funzionare più lentamente.
  • I contatori di monitoraggio delle prestazioni (PMC) x86 non sono supportati.
  • La funzionalità delle chiavi di protezione in modalità utente (PKU) non è disponibile.
  • Le funzionalità di memoria transazionale limitata (RTM) e di eliminazione del blocco hardware (HLE) non sono disponibili.

VirtualBox e Hyper-V

VirtualBox può coesistere con Hyper-V, Device Guard e Credential Guard 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 funzioni devono essere abilitate su una macchina host Windows per consentire a VirtualBox di funzionare con le API Hyper-V:

  • Hyper-V
  • Piattaforma hypervisor Windows

Se la funzione Hyper-V è abilitata, ma la funzione Piattaforma hypervisor Windows è disabilitata, in Accelerazione di sistema > nel riepilogo della configurazione della VM, è possibile vedere che la modalità di paravirtualizzazione è attiva. Se si tenta di avviare una VM, VirtualBox ricorda che è necessario abilitare Windows Hypervisor Piattaforma e visualizza il messaggio di errore.

Il messaggio di errore:
WHvCapabilityCodeHypervisorPresent è FALSE! Assicurarsi di aver abilitato la funzione “Windows Hypervisor Piattaforma”.

(VERR_NEM_NOT_AVAILABLE).

VT-x non è disponibile (VERR_VMX_NO_VMX).

Se le funzioni relative a Hyper-V obbligatorie in Windows sono abilitate, nella sezione Sistema vengono visualizzate le seguenti informazioni per la VM:

Accelerazione: VT-x/AMD-v, Nested Paging, Paravirtualizzazione Hyper-V

Hyper-V and VirtualBox are installed on the same Windows host

La VM dovrebbe avviarsi correttamente. Nel pannello inferiore della finestra di VirtualBox viene visualizzata un’icona verde a forma di tartaruga. Questa icona indica che una VM è in esecuzione in modalità di paravirtualizzazione Hyper-V anziché nella modalità nativa solitamente utilizzata da VirtualBox quando interagisce direttamente con le estensioni di virtualizzazione della CPU. Le prestazioni delle VM VirtualBox risultano compromesse sui computer in cui sono abilitate Hyper-V e le relative funzioni. È possibile disabilitare o rimuovere Hyper-V come spiegato in precedenza per eseguire le VM su VirtualBox in modalità nativa utilizzando direttamente le estensioni di virtualizzazione della CPU.

Leggi anche il VirtualBox vs Hyper-V confronto e il VirtualBox vs VMware confronto.

Conclusione

Le nuove funzioni di Windows come Virtualization Based Security (Device Guard e Credential Guard), Windows Sandbox, WSL che utilizzano il motore Hyper-V causano molti problemi agli utenti, agli amministratori e agli 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 funzionamento con le API Hyper-V, come Windows Hypervisor Platform API fornita da Microsoft.

L’esecuzione di macchine virtuali su VirtualBox, VMware Workstation e altri hypervisor su macchine con Hyper-V utilizzando le API può ridurre le prestazioni delle macchine virtuali non Hyper-V. Il backup dei dati è fondamentale nei casi in cui le applicazioni di virtualizzazione non funzionano correttamente. Se non avete ancora scelto la soluzione di backup di Hyper-V più adatta al vostro ambiente, prendete in considerazione NAKIVO Backup & Replication. La soluzione offre backup affidabili, protezione dai ransomware, ripristino di emergenza e molto altro. Scaricate l’Edizione gratuita per vedere la soluzione in azione.

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

Le persone leggono anche