Quando você instala um aplicativo de virtualização em uma máquina Windows na qual o Hyper-V ou serviços relacionados estão instalados, erros podem ocorrer com frequência. Erros que acontecem ao executar VMs em aplicativos de virtualização não-Hyper-V causam problemas significativos. Esta postagem no blog explica o que causa esses erros, como corrigi-los e como executar outros aplicativos de virtualização em um computador com Hyper-V.
Antecedentes e Princípio de Funcionamento
Depois de instalar o VMware Workstation, VMware Player ou Oracle VirtualBox em uma máquina Windows, você pode receber erros ao iniciar uma VM nesses aplicativos de virtualização. Os erros ocorrem mesmo se as VMs do Hyper-V não estiverem sendo executadas naquele momento. Você pode instalar o VMware Workstation e o VirtualBox e executar VMs do VMware e VMs do VirtualBox no mesmo computador, mas não simultaneamente. O que causa esse problema com o Hyper-V? Vamos dar uma olhada mais de perto.
O VMware Workstation, VMware Player e o VirtualBox são hipervisores do tipo 2, enquanto o Hyper-V é um hipervisor do tipo 1. Um hipervisor do tipo 2 é instalado no sistema operacional que está em execução no hardware. Um hipervisor do tipo 1 é instalado em cima do hardware. Todos os hipervisores requerem extensões de virtualização de processador, que são conjuntos de instruções para virtualização de hardware – Intel VT-x ou AMD-V. O Hyper-V assume o controle das extensões de virtualização quando o Windows é inicializado. Essas extensões de virtualização não estão disponíveis para o VMware Workstation e o VirtualBox quando o Windows é carregado. Apenas um componente de software pode usar Intel VT-x ou AMD-V de cada vez.
Esta incompatibilidade é causada pelo Hyper-V porque as extensões de virtualização não são expostas a hipervisores do tipo 2 instalados em uma máquina Windows onde o papel do Hyper-V está habilitado.
Erros do VMware Workstation:
O VMware Workstation e o Hyper-V não são compatíveis. Remova o papel do Hyper-V do sistema antes de executar o VMware Workstation.
O VMware Workstation e o Device/Credential Guard não são compatíveis. O VMware Workstation pode ser executado após desativar o Device/Credential Guard.
Erros do VirtualBox:
Tela azul da morte (BSOD), como BSOD com EXCEPTION DE SERVIÇO DO SISTEMA
VT-x não está disponível (VER_VMX_NO_VMX). E_FAIL (0x80004005).
A VirtualBox VM works too slowly and uses the paravirtualisation (emulation) mode.
A situação mais interessante é quando um usuário não instala o Hyper-V e ainda encontra um dos erros mencionados anteriormente ao usar o VMware Workstation ou o VirtualBox. O erro ocorre quando as atualizações automáticas do Windows estão habilitadas. Com as atualizações (Windows 10 v1607 e as versões apropriadas do Windows Server a partir do Windows Server 2016), algumas novas características relacionadas ao Hyper-V são instaladas e habilitadas automaticamente sem o consentimento do usuário do Windows. Essas características são o Device Guard e o Credential Guard. As atualizações do Windows corrigem vulnerabilidades conhecidas, mas podem adicionar problemas e destruir uma configuração funcional. É por isso que muitos usuários não gostam de atualizações automáticas.
O Device Guard é um grupo de recursos de segurança no Windows. A ideia de implementar esse recurso é endurecer a execução de código malicioso. O Device Guard está disponível no Windows 10, Windows Server 2019 e Windows Server 2019. Os principais requisitos são: UEFI sendo executado no modo nativo e Secure Boot ativado.
Credential Guard é uma funcionalidade para minimizar o impacto de ataques se código malicioso já estiver em execução, isolando segredos do sistema e do usuário para tornar mais difícil a comprometimento.
Modo Seguro Virtual (VSM) é uma funcionalidade que aproveita as extensões de virtualização do processador para proteger dados em uma região isolada da memória. HVCI é Integridade de Código Protegido por Hipervisor. LSA é Autoridade de Segurança Local.
Segurança Baseada em Virtualização (VBS) é uma classe de tecnologias que utiliza extensões de virtualização, incluindo VSM, para fornecer segurança no Windows. O papel do Hyper-V é necessário para fazer esses recursos funcionarem (as ferramentas de gerenciamento do Hyper-V não são necessárias).
O hipervisor (Hyper-V) é carregado primeiro e, em seguida, o sistema operacional (Windows) é carregado. O Hyper-V fornece uma camada de abstração entre o hardware e o sistema operacional. Um VSM permite a marcação de processos críticos específicos e memória usada por eles, pois pertencem a um sistema operacional independente separado controlado pelo Hyper-V. O princípio é semelhante ao isolamento de duas VMs em execução em um host Hyper-V, onde cada VM só pode usar os recursos de hardware provisionados para ela.
Nota: Se você precisar de um hipervisor de tipo1 da VMware, use VMware ESXi e ambiente VMware vSphere. Saiba mais nestes posts de blog: Hyper-V vs VMware, VMware Workstation vs VMware Player e Como instalar o ESXi no Hyper-V.
Vamos explorar como resolver o problema de incompatibilidade do Hyper-V e outras aplicações de virtualização em detalhes.
Método1: Desinstalar o Hyper-V no GUI
Verifique informações do sistema sobre a configuração do Windows executando o seguinte comando no 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.
Você deve estar ciente de que os seguintes recursos relacionados ao Hyper-V não estarão disponíveis após a remoção do Hyper-V:
- Hyper-V
- Credential Guard e Device Guard
- Plataforma de Máquina Virtual
- Caixa de Areia do Windows
- WSL2.
Remova o recurso Hyper-V na interface gráfica do usuário (GUI) usando o Painel de Controle, Assistente de Adição de Funções e Recursos.
No Windows10, abra Painel de Controle, clique em Programas e Recursos, depois clique em Ativar ou desativar recursos do Windows.
A janela de Recursos do Windows é aberta.
Desmarque a caixa de seleção Hyper-V e pressione OK.
Para concluir a remoção do Hyper-V, reinicie o computador.
Os passos para remover o Hyper-V no Windows10 e no Windows Server2016 são semelhantes.
No Windows Server2016, abra o Gerenciador de Servidores e clique em Gerenciar > Remover Funções e Recursos. No Assistente de Remoção de Funções e Recursos, vá para a etapa Funções de Servidor e desmarque Hyper-V. Pressione Próximo em cada etapa para continuar. É necessário reiniciar para concluir a remoção da função Hyper-V.
Método2: Use o PowerShell para Desabilitar o Recurso Hyper-V
Você pode fazer uma ação semelhante usando a interface de linha de comando em vez da GUI.
Faça login no PowerShell como Administrador e execute o comando para desabilitar o recurso Hyper-V:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
Reinicie seu host:
shutdown -r -t0
Método3: Desabilitar o Hyper-V Usando o BCDedit
A ideia por trás deste método é editar os dados de configuração de inicialização e desabilitar a inicialização do Hyper-V sem desinstalar a função Hyper-V.
Faça login no PowerShell como Administrador ou execute o comando a partir de um prompt de comando elevado para desabilitar o Hyper-V:
bcdedit /set hypervisorlaunchtype off
Se você precisar reabilitar o Hyper-V e definir o valor padrão de volta, execute este comando:
bcdedit /set hypervisorlaunchtype auto
Para mais controle e conveniência, desative o Fast Boot no Windows10. Abra o Editor de Registro do Windows e vá para:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power
Defina o parâmetro HiberbootEnabled como 0
Se você precisar usar VMs Hyper-V às vezes, crie duas entradas para um carregador de inicialização do Windows: uma para inicializar o Windows com Hyper-V e outra para inicializar o Windows sem Hyper-V. Em seguida, selecione a opção necessária antes de inicializar o Windows. Essa abordagem evita que você execute comandos no PowerShell manualmente toda vez que precisar ativar ou desativar o Hyper-V.
bcdedit /copy“{current}” /d“No Hyper-V”
“A entrada foi copiada com sucesso para {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.”
Copie e cole seu valor em vez de xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
bcdedit /set“{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}” hypervisorlaunchtype off
Reinicie o computador.
Depois que o computador for reiniciado, você deve ver duas opções no Gerenciador de inicialização do Windows.
Se você quiser remover a entrada de inicialização No Hyper-V, use a opção /delete para bcdedit.
Obtenha uma lista das entradas de inicialização atuais:
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}”
Método 4: Desinstalar o Papel Hyper-V no PowerShell com dism.exe
A ideia por trás deste método é usar a ferramenta Deployment Image Servicing and Management no interface de linha de comando para desinstalar o Hyper-V.
Faça login no CMD ou PowerShell como Administrador. Execute o seguinte comando para desinstalar o Hyper-V:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
Se você quiser instalar o Hyper-V novamente, use este comando:
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
Método 5: Desativar a Segurança Baseada em Virtualização no Windows
Este método é usado para desabilitar o Device Guard e o Credential Guard, que são recursos relacionados ao Hyper-V.
Abra o Editor de Política de Grupo para uma máquina local. O Editor de Política de Grupo está disponível no Windows 10 Pro, Enterprise e Education. No prompt de comando, execute gpedit.msc
Vá para Política de Computador Local > Configuração do Computador > Modelos Administrativos > Sistema > Device Guard
Clique duas vezes em Ativar Segurança Baseada em Virtualização. Por padrão, o status desta configuração é Não configurado.
Na janela que se abre, selecione Desativado e aperte OK para salvar as configurações e feche a janela.
Editar Registro como alternativa
No Windows 10 Home, onde o Editor de Políticas de Grupo não está presente, você pode desabilitar a Segurança Baseada em Virtualização no Registro do Windows.
Faça um backup do registro do Windows antes de alterar as configurações do registro para evitar erros e problemas.
Abra o Editor do Registro. Execute regedit na linha de comando que deve ser aberta como Administrador.
Vá para HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuard
Crie a entrada EnableVirtualizationBasedSecurity se essa entrada estiver ausente. Para criar uma nova entrada, clique com o botão direito em um lugar vazio na DeviceGuard pasta e, no menu de contexto, clique em Novo > Valor DWORD (32 bits). Insira o EnableVirtualizationBasedSecurity nome para esta entrada no registro. Por padrão, os dados definidos para esta entrada devem ser 0 (veja a captura de tela a seguir). Você pode clicar duas vezes no EnableVirtualizationBasedSecurity e definir 0 manualmente.
Vá para HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa
Crie uma nova entrada de registro na Lsa pasta. Clique com o botão direito em um espaço vazio na parte direita da janela do Editor do Registro. No menu de contexto, clique em Novo > Valor DWORD (32 bits).
Insira o LsaCfgFlags nome para este valor. Este valor deve ser definido como 0.
Feche o Editor do Registro e reinicie o computador.
Você pode executar os seguintes comandos no PowerShell (como Administrador) para desativar o Device Guard e o Credential Guard na próxima inicialização do Windows.
Monte uma partição UEFI no disco X: (selecione um volume não utilizado):
mountvol X: /s
Copie o C:\Windows\System32\SecConfig.efi para X:\EFI\Microsoft\Boot\SecConfig.efi com uma opção para substituir o arquivo se o arquivo existir. Este arquivo é uma imagem de inicialização para a ferramenta de configuração de segurança do Windows.
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
Crie uma nova opção no menu de inicialização com o ID {0cb3b571-2f2e-4343-a879-d86a476d7215} e o DebugTool nome:
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d “DebugTool” /application osloader
Defina a opção de inicialização que você criou no passo anterior para \EFI\Microsoft\Boot\SecConfig.efi:
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “\EFI\Microsoft\Boot\SecConfig.efi”
Defina o Gerenciador de Inicialização do Windows para fazer a nova entrada a padrão para a próxima reinicialização. Depois disso, reinicie seu Windows deve voltar para a inicialização normal.
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
Defina o carregador de inicialização para passar as opções DISABLE-LSA-ISO,DISABLE-VBS para o SecConfig.efi arquivo quando o carregador de inicialização inicia o arquivo.
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
Defina a partição para o disco de inicialização na unidade X:
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
Desmonte a unidade X: do sistema:
mountvol X: /d
Método 6: Atualize o VMware Workstation
Se você tiver o Windows 10 versão 2004 (20H1) build 19041 ou mais recente em seu computador físico, poderá atualizar o VMware Workstation para o VMware Workstation 15.5.6 ou mais recente e executar VMs do VMware em sua máquina Windows sem desativar/desinstalar o Hyper-V e a Segurança Baseada em Virtualização (VBS) recursos, incluindo Device Guard e Credential Guard.
Devido a muitas reclamações de clientes, a Microsoft e a VMware decidiram desenvolver um projeto conjunto que adota as APIs da Plataforma de Hypervisor do Windows da Microsoft (WHP) para permitir que hypervisores de tipo 2, como o VMware Workstation, sejam executados em um host onde o Hyper-V está habilitado. Essas APIs permitem que aplicativos gerenciem recursos de CPU, leiam/escrevam valores do registro, terminem a operação da CPU e gerem interrupções.
O VMware Workstation antes da versão 15.5.5 usa um Monitor de Máquina Virtual (VMM) que tem acesso direto a uma CPU e conjuntos de instruções de virtualização (Intel VT-x ou AMD-V). Um VMM opera em um modo privilegiado. Se os recursos de Segurança Baseada em Virtualização estiverem habilitados em um host do Windows, uma camada adicional de hypervisor (Hyper-V) é adicionada entre o hardware e o Windows. O Hyper-V tem acesso direto a recursos da CPU usados para virtualização de hardware, e o VMM não tem acesso a recursos de virtualização da CPU.
A VMware fez alterações na arquitetura do VMware Workstation 15.5.6 para permitir que seu produto use as APIs do Microsoft WHP e corrigir o problema de compatibilidade. O VMM agora pode ser executado no nível do usuário (não no modo privilegiado) usando as APIs do WHP e executar VMs sem acesso direto às extensões de virtualização da CPU. Este modo é chamado de User Level Monitor (ULM) ou modo Host VBS. Se você desinstalar os recursos relacionados ao Hyper-V do seu host do Windows, o VMware Workstation detecta automaticamente e o VMM é alterado para o acesso direto às extensões de virtualização da CPU (executando no modo privilegiado).
A Plataforma de Hipervisor do Windows (WHP) deve estar instalada em uma máquina física do Windows onde o Hyper-V está habilitado para permitir que o VMware Workstation execute VMs do VMware nesta máquina. Instale o recurso Plataforma de Hipervisor do Windows no Painel de Controle clicando em Ativar ou desativar recursos do Windows.
Dessa forma, você pode atualizar o Windows 10 e o VMware Workstation em sua máquina física para versões que suportam a execução de recursos relacionados ao Hyper-V e VMs do VMware Workstation na mesma máquina.
Limitações do modo Host VBS:
- A Plataforma de Hipervisor do Windows não é suportada no Windows Server 2016 e em outras versões e edições do Windows Server. Como resultado, o VMware Workstation não pode executar VMs no modo host VBS em máquinas físicas com Windows Server.
- A virtualização aninhada não é suportada. Você não pode executar VMs aninhadas (VMs dentro de VMs do VMware Workstation).
- As VMs do VMware podem executar mais lentamente.
- Os contadores de monitoramento de desempenho X86 (PMC) não são suportados.
- A capacidade de chaves de proteção do modo de usuário (PKU) não está disponível.
- As capacidades de memória transacional restrita (RTM) e elisão de bloqueio de hardware (HLE) não estão disponíveis.
O VirtualBox e o Hyper-V
O VirtualBox pode coexistir com o Hyper-V, Device Guard e Credential Guard a partir do VirtualBox 6.0. O VirtualBox 6 pode funcionar com APIs do Hyper-V de forma semelhante ao VMware Workstation no Windows 10 v1803 x64.
Esses recursos devem ser habilitados em uma máquina host do Windows para permitir que o VirtualBox funcione com APIs do Hyper-V:
- Hyper-V
- Plataforma de Hipervisor do Windows
Se o recurso Hyper-V estiver habilitado, mas o recurso Plataforma de Hipervisor do Windows estiver desativado, em Sistema > Aceleração no resumo da configuração da VM, você pode ver que o modo Paravirtualização está ligado. Se você tentar iniciar uma VM, o VirtualBox lembra que você deve habilitar a Plataforma de Hipervisor do Windows e exibe a mensagem de erro.
A mensagem de erro:
O WHvCapabilityCodeHypervisorPresent é FALSO! Certifique-se de ter habilitado o recurso ‘Plataforma de Hipervisor do Windows’.
(VERR_NEM_NOT_AVAILABLE).
VT-x não está disponível (VERR_VMX_NO_VMX).
Se os recursos relacionados ao Hyper-V necessários no Windows estiverem habilitados, as seguintes informações são exibidas para a VM na seção Sistema:
Aceleração: VT-x/AMD-v, Paging Aninhado, Paravirtualização Hyper-V
A VM deve iniciar com sucesso. Um ícone de tartaruga verde é exibido no painel inferior da janela do VirtualBox. Esse ícone indica que uma VM está sendo executada no modo de paravirtualização do Hyper-V, em vez do modo nativo que é normalmente usado pelo VirtualBox ao interagir diretamente com as extensões de virtualização da CPU. O desempenho das VMs do VirtualBox degrada em máquinas em que o Hyper-V e recursos relacionados estão habilitados. Você pode desabilitar ou remover o Hyper-V conforme explicado anteriormente para executar VMs no VirtualBox no modo nativo usando as extensões de virtualização da CPU diretamente.
Leia também a comparação entre VirtualBox e Hyper-V e a comparação entre VirtualBox e VMware.
Conclusão
Novos recursos do Windows, como Segurança Baseada em Virtualização (Device Guard e Credential Guard), Windows Sandbox, WSL que usam o motor do Hyper-V, causam muitos problemas para usuários, administradores e desenvolvedores de software que utilizam outros hipervisores como VMware Workstation, VirtualBox, QEMU e Google Android Emulator em máquinas Windows. Existem duas abordagens para resolver esses problemas de incompatibilidade: desabilitar/desinstalar o Hyper-V ou usar novas versões de aplicativos de virtualização que suportem o trabalho com APIs do Hyper-V, como a API da Plataforma de Hipervisor do Windows fornecida pela Microsoft.
Executar VMs no VirtualBox, VMware Workstation e outros hipervisores em máquinas com Hyper-V usando APIs pode degradar o desempenho de VMs não-Hyper-V. O backup de dados é crucial para os casos em que as aplicações de virtualização falham. Se ainda não escolheu a melhor solução de backup do Hyper-V para o seu ambiente, considere o NAKIVO Backup & Replication. A solução oferece backup robusto, proteção contra ransomware, recuperação de desastres e muito mais. Baixe a Edição Gratuita para ver a solução em ação.