Le applicazioni di virtualizzazione non funzionano: Cosa fare?

Quando si installa un’applicazione di virtualizzazione su una macchina Windows su cui sono installati Hyper-V o servizi correlati, possono verificarsi spesso errori. Gli errori che si verificano quando si eseguono macchine virtuali 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.

Sfondo e Principio di Funzionamento

Dopo aver installato VMware Workstation, VMware Player o Oracle VirtualBox su una macchina Windows, potresti ricevere errori durante l’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. 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? Approfondiamo.

VMware Workstation, VMware Player e VirtualBox sono ipervisori di tipo 2, mentre Hyper-V è un ipervisore di tipo 1. Un ipervisore di tipo 2 è installato sul sistema operativo in esecuzione sull’hardware. Un ipervisore di tipo 1 è installato sopra l’hardware. Tutti gli ipervisori richiedono estensioni di virtualizzazione del processore, che sono set di istruzioni per la virtualizzazione dell’hardware – Intel VT-x o AMD-V. Hyper-V prende il controllo delle estensioni di virtualizzazione durante l’avvio di Windows. Queste estensioni di virtualizzazione non sono disponibili per VMware Workstation e VirtualBox quando Windows si avvia. Solo un componente software può utilizzare Intel VT-x o AMD-V alla volta.

Questa incompatibilità è causata da Hyper-V perché le estensioni di virtualizzazione non sono esposte ai type 2 hypervisors installati su una macchina Windows dove il ruolo Hyper-V è abilitato.

Errori di VMware Workstation:

VMware Workstation e Hyper-V non sono compatibili. Rimuovi 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 di VirtualBox:

BSOD, come BSOD con SYSTEM_SERVICE_EXCEPTION

VT-x non è disponibile (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 quando usa 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 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 funzionalità sono Device Guard e Credential Guard. Gli aggiornamenti di Windows risolvono le vulnerabilità conosciute ma possono aggiungere problemi e distruggere una configurazione funzionante. Ecco perché molti utenti non amano gli aggiornamenti automatici.

Device Guard è un gruppo di funzionalità di sicurezza in Windows. L’idea di implementare questa funzione è per rendere più difficile l’esecuzione di codice dannoso. Device Guard è disponibile in Windows 10, Windows Server 2019 e Windows Server 2019. I requisiti principali sono: UEFI in modalità nativa e Secure Boot abilitato.

Credential Guard è una funzionalità per ridurre al minimo l’impatto degli attacchi se il codice dannoso è già in esecuzione isolando i segreti del sistema e dell’utente per rendere più difficile la compromissione.

Virtual Secure Mode (VSM) è una funzionalità per sfruttare le estensioni di virtualizzazione del processore che proteggono i dati in una regione isolata della memoria. HVCI è l’integrità del codice protetto dall’hypervisor. LSA è l’Autorità di sicurezza locale.

Virtualization Based Security (VBS) è una classe di tecnologie che utilizza estensioni di virtualizzazione, inclusa VSM, per fornire sicurezza in Windows. È necessario il ruolo Hyper-V per far funzionare queste funzionalità (non sono necessari gli strumenti di gestione di Hyper-V).

L’hypervisor (Hyper-V) si carica prima e quindi si carica il sistema operativo (Windows). Hyper-V fornisce uno strato di astrazione tra l’hardware e il sistema operativo. Un VSM consente l’etichettatura di processi critici specifici e della memoria utilizzata da essi 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 quando ogni VM può utilizzare solo le risorse hardware allocate ad essa.

Nota: Se hai bisogno di un hypervisor di tipo 1 da VMware, utilizza VMware ESXi e l’ambiente VMware vSphere. Scopri di più in questi post di blog: Hyper-V vs VMware, VMware Workstation vs VMware Player e Come installare ESXi su Hyper-V.

Esploriamo insieme come risolvere il problema di incompatibilità tra Hyper-V e altri applicativi di virtualizzazione in dettaglio.

Metodo 1: Disinstallare Hyper-V nell’interfaccia grafica

Verifica le informazioni sul sistema riguardo la configurazione di Windows eseguendo il seguente comando in CMD:

msinfo32.exe

A System Information window opens. On the following screenshot, you see that Hyper-V is enabled (a hypervisor has been detected), and Device Guard Virtualization-based security is running. Now you can remove these features.

Dovresti sapere che le seguenti funzionalità correlate a Hyper-V non saranno disponibili dopo aver rimosso Hyper-V:

  • Hyper-V
  • Credential Guard e Device Guard
  • Piattaforma di macchine virtuali
  • Windows Sandbox
  • WSL2.

Rimuovi la funzionalità Hyper-V nell’interfaccia grafica (GUI) utilizzando il Pannello di controllo, la procedura guidata per le funzionalità e i ruoli.

In Windows 10, apri Pannello di controllo, fai clic su Programmi e funzionalità, quindi fai clic su Attiva o disattiva funzionalità di Windows.

Il riquadro delle Funzionalità di Windows si apre.

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

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

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 Funzionalità. Nella Rimuovi Wizard Ruoli e Funzionalità, passare alla fase Ruoli server e deselezionare Hyper-V. Premere Avanti ad ogni passaggio per continuare. È richiesto un riavvio per completare la rimozione del ruolo Hyper-V.

Metodo 2: Utilizzare PowerShell per Disabilitare la Funzionalità Hyper-V

È possibile eseguire un’azione simile utilizzando l’interfaccia a riga di comando invece dell’interfaccia grafica.

Accedere a PowerShell come Amministratore e eseguire il comando per disabilitare la funzionalità 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 è modificare i dati di configurazione del boot e disabilitare il boot di Hyper-V senza disinstallare il ruolo Hyper-V.

Accedere a PowerShell come Amministratore o eseguire il comando da un prompt dei comandi elevato per disabilitare Hyper-V:

bcdedit /set hypervisorlaunchtype off

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

bcdedit /set hypervisorlaunchtype auto

Per ottenere più controllo e comodità, disabilita l’avvio rapido in Windows 10. Apri l’Editor del Registro di sistema di Windows e vai a:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power

Imposta il parametro HiberbootEnabled su 0

Se hai bisogno di utilizzare le macchine virtuali Hyper-V a volte, crea due voci per un caricatore di avvio 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 ti 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”

“L’entry è stato copiato 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

Riavvia il computer.

Una volta riavviato il computer, dovresti vedere due opzioni nel Gestione avvio di Windows.

Se vuoi rimuovere l’entry di avvio No Hyper-V, utilizza l’opzione /delete per bcdedit.

Ottieni un elenco delle voci di avvio correnti:

bcdedit /v

A list of all entries with their identifiers is displayed in the output. Copy the ID of the entry which you want to remove, and run the following command:

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 consiste nell’utilizzare lo strumento Deployment Image Servicing and Management nell’interfaccia a riga di comando per disinstallare Hyper-V.

Accedi 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

Metodo 5: Disattivare la Sicurezza Basata su Virtualizzazione in Windows

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

Apri l’Editor delle Criteri di Gruppo per un computer locale. L’Editor delle Criteri di Gruppo è disponibile in Windows 10 Pro, Enterprise e Education. Nella finestra del prompt dei comandi, esegui gpedit.msc

Vai a Criteri di Computer Locali > Configurazione del Computer > Modelli Amministrativi > Sistema > Device Guard

Fai doppio clic su Attiva Sicurezza Basata su Virtualizzazione.Di default, lo stato di questa impostazione è Non configurato.

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

Modifica del Registro di sistema come alternativa

In Windows 10 Home, dove il Editor Criteri di Gruppo non è presente, è possibile disabilitare la Sicurezza Basata su Virtualizzazione nel Registro di sistema di Windows.

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

Apri il Registro di Sistema. Esegui regedit nella riga di comando che dovrebbe essere aperta come Amministratore.

Vai a HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuard

Crea l’immissione EnableVirtualizationBasedSecurity se questa voce manca. Per creare una nuova voce, fai clic con il tasto destro in un posto vuoto nella DeviceGuard directory, e nel menu contestuale, fai clic su Nuovo > Valore DWORD (32-bit). Inserisci il EnableVirtualizationBasedSecurity nome per questa voce del registro. Di default, i dati impostati per questa voce dovrebbero essere 0 (vedi lo screenshot seguente). Puoi fare doppio clic sulla EnableVirtualizationBasedSecurity e impostare manualmente 0.

Vai a HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa

Crea una nuova voce del registro nella Lsa directory. Fai clic con il tasto destro in uno spazio vuoto nella finestra del Registro di Sistema. Nel menu contestuale, fai clic su Nuovo > Valore DWORD (32-bit).

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

Chiudi il Registro di Sistema e riavvia il tuo computer.

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

Montare una partizione UEFI nel disco X: (selezionare un volume non utilizzato):

mountvol X: /s

Copiare il C:\Windows\System32\SecConfig.efi in X:\EFI\Microsoft\Boot\SecConfig.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%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y

Creare una nuova voce 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

Impostare l’opzione di avvio creata nel passaggio precedente su \EFI\Microsoft\Boot\SecConfig.efi:

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “\EFI\Microsoft\Boot\SecConfig.efi”

Impostare il Gestione Avvio di Windows per rendere la nuova voce quella predefinita per il prossimo riavvio. Successivamente, riavviare Windows che dovrebbe tornare al normale avvio.

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

Impostare il bootloader per passare 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

Imposta la partizione per il disco avviato sulla lettera X: del drive:

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

Scollega il drive X: dal sistema:

mountvol X: /d

Metodo 6: Aggiorna VMware Workstation

Se hai Windows 10 versione 2004 (20H1) build 19041 o più recente sul tuo computer fisico, puoi aggiornare VMware Workstation a VMware Workstation 15.5.6 o più recente e eseguire le VM VMware sul tuo computer Windows senza disabilitare/disinstallare Hyper-V e Virtualization Based Security (VBS) features, tra cui 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 Microsoft Windows Hypervisor Platform (WHP) per consentire a hypervisori di tipo 2, come VMware Workstation, di funzionare su un host in cui è abilitato Hyper-V. Queste API consentono agli applicativi di gestire le risorse del processore, leggere/scrivere valori del registro, terminare l’operazione del processore e generare interruzioni.

VMware Workstation prima della versione 15.5.5 utilizza un Virtual Machine Monitor (VMM) che ha accesso diretto a un processore e a set di istruzioni di virtualizzazione (Intel VT-x o AMD-V). Un VMM opera in modalità privilegiata. Se sono abilitate funzionalità di Virtualization Based Security su un host Windows, viene aggiunto un ulteriore strato di hypervisor (Hyper-V) tra hardware e Windows. Hyper-V ha accesso diretto alle funzionalità del processore utilizzate per la virtualizzazione hardware e VMM non ha accesso alle funzionalità di virtualizzazione del processore.

VMware ha apportato modifiche all’architettura di VMware Workstation 15.5.6 per consentire al loro prodotto di utilizzare le API Microsoft WHP e risolvere il problema di compatibilità. VMM può ora funzionare a livello utente (non in modalità privilegiata) utilizzando le API WHP e eseguire le macchine virtuali senza accesso diretto agli estensioni di virtualizzazione del CPU. Questa modalità è chiamata User Level Monitor (ULM) o modalità Host VBS. Se si disinstallano le funzionalità correlate a Hyper-V dal host Windows, VMware Workstation lo rileva automaticamente e VMM passa all’accesso diretto delle estensioni di virtualizzazione del CPU (esecuzione in modalità privilegiata).

Il Windows Hypervisor Platform (WHP) deve essere installato su una macchina fisica Windows in cui è abilitato Hyper-V per consentire a VMware Workstation di eseguire le macchine virtuali VMware su questa macchina. Installare la funzionalità Windows Hypervisor Platform nel Pannello di controllo facendo clic su Attiva o disattiva le funzionalità di Windows.

In questo modo, è possibile aggiornare Windows 10 e VMware Workstation sulla macchina fisica alle versioni che supportano l’esecuzione delle funzionalità correlate a Hyper-V e le macchine virtuali di VMware Workstation sulla stessa macchina.

Limitazioni della modalità Host VBS:

  • Il Windows Hypervisor Platform non è supportato su Windows Server 2016 e altre versioni e edizioni di Windows Server. Di conseguenza, VMware Workstation non può eseguire le macchine virtuali in modalità Host VBS su macchine fisiche che eseguono Windows Server.
  • La virtualizzazione nidificata non è supportata. Non è possibile eseguire macchine virtuali nidificate (macchine virtuali all’interno di macchine virtuali di VMware Workstation).
  • Le macchine virtuali VMware possono funzionare più lentamente.
  • I contatori di monitoraggio delle prestazioni x86 (PMC) non sono supportati.
  • La funzionalità delle chiavi di protezione a livello utente (PKU) non è disponibile.
  • Le capacità di Restricted Transactional Memory (RTM) e Hardware Lock Elision (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 di Hyper-V in modo simile a VMware Workstation su Windows 10 v1803 x64.

Queste funzionalità devono essere abilitate su un host Windows per consentire a VirtualBox di funzionare con le API di Hyper-V:

  • Hyper-V
  • Windows Hypervisor Platform

Se la funzionalità Hyper-V è abilitata, ma la funzionalità Windows Hypervisor Platform è disabilitata, nella Sezione Sistema > Accelerazione nel riepilogo della configurazione della VM, è possibile vedere che la Modalità Paravirtualizzazione è attiva. Se si tenta di avviare una VM, VirtualBox ricorda che è necessario abilitare Windows Hypervisor Platform e visualizza il messaggio di errore.

Il messaggio di errore:
WHvCapabilityCodeHypervisorPresent è FALSE! Assicurarsi di aver abilitato la funzionalità ‘Windows Hypervisor Platform’.

(VERR_NEM_NOT_AVAILABLE).

VT-x non è disponibile (VERR_VMX_NO_VMX).

Se le funzionalità Hyper-V richieste in Windows sono abilitate, vengono visualizzate le seguenti informazioni per la VM nella sezione Sistema:

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

La VM dovrebbe avviarsi correttamente. Viene visualizzata un’icona di tartaruga verde nel pannello inferiore della finestra di VirtualBox. Questa icona indica che una VM è in esecuzione nella modalità di paravirtualizzazione Hyper-V invece della modalità nativa di solito utilizzata da VirtualBox quando interagisce direttamente con le estensioni di virtualizzazione della CPU. Le prestazioni delle VM di VirtualBox degradano su macchine su cui sono abilitate le funzionalità Hyper-V correlate. Puoi disabilitare o rimuovere Hyper-V come spiegato in precedenza per eseguire le VM su VirtualBox nella modalità nativa utilizzando direttamente le estensioni di virtualizzazione della CPU.

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

Conclusione

Le nuove funzionalità 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, agli amministratori e agli sviluppatori di software che utilizzano altri hypervisor come VMware Workstation, VirtualBox, QEMU e Google Android Emulator su macchine Windows. Ci sono due approcci per risolvere questi problemi di incompatibilità: disabilitare/disinstallare Hyper-V o utilizzare nuove versioni delle applicazioni di virtualizzazione che supportano il lavoro con le API di Hyper-V, come ad esempio l’API Windows Hypervisor Platform fornita da Microsoft.

Eseguire le VM su VirtualBox, VMware Workstation e altri hypervisor su macchine con Hyper-V utilizzando le API può degradare le prestazioni delle VM non Hyper-V. Il backup dei dati è cruciale per i casi in cui le applicazioni di virtualizzazione falliscono. Se non hai ancora scelto la migliore soluzione di backup Hyper-V per il tuo ambiente, considera NAKIVO Backup & Replication. La soluzione offre un backup robusto, protezione ransomware, ripristino da disastri e altro ancora. Scarica la versione gratuita per vedere la soluzione in azione.

Source:
https://www.nakivo.com/blog/virtualization-applications-with-hyper-v-device-guard-and-credential-guard/