WSL2 parou de funcionar? Diagnóstico e correção do erro `hcs_e_hyperv_not_installed`
Voltar para blog

WSL2 parou de funcionar? Diagnóstico e correção do erro `hcs_e_hyperv_not_installed`

07/06/2026 · 5 min · Infraestrutura

WSL2 Parou de Funcionar? Diagnóstico e Correção do Erro HCS_E_HYPERV_NOT_INSTALLED#

Um guia para resolver causa-raiz, não sintoma.

Quando o WSL2 falha com esse erro, o problema não está na distro Linux. O erro está na camada de virtualização do host Windows.

Não há suporte para WSL2 com a configuração atual do computador.
Código de erro: Wsl/Service/CreateInstance/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED

Esse retorno é direto: o Host Compute Service (HCS) tentou provisionar a VM leve do WSL2 e não encontrou hypervisor ativo no kernel.

⚠️ IMPORTANTE: Quase todas as etapas e comandos a seguir requerem elevação de privilégios. Certifique-se de executar o PowerShell como Administrador (clique com o botão direito no ícone do PowerShell e selecione "Executar como administrador").

1) Pré-requisitos mínimos do Windows#

Antes de tentar qualquer correção técnica, certifique-se de que seu sistema operacional atende aos requisitos mínimos exigidos pelo WSL2:

Para verificar rapidamente a versão e a build do seu Windows pelo PowerShell, execute:

[System.Environment]::OSVersion.Version

2) Diagnóstico rápido (sanity check)#

2.1 verificar virtualização no processador (BIOS/UEFI)#

Antes do Windows, o hardware precisa cooperar.

  1. Abra o Gerenciador de Tarefas (Ctrl + Shift + Esc).
  2. Vá na aba Desempenho e clique em CPU.
  3. No canto inferior direito, confirme se Virtualização: Habilitado (ou Virtualization: Enabled) está ativo.

Se estiver "Desabilitado", reinicie a máquina, acesse a BIOS/UEFI e ative a tecnologia de virtualização (Intel VT-x/Vanderpool ou AMD-V/SVM).

2.2 confirmar status do hypervisor no BCD (boot configuration data)#

O Windows precisa saber que deve iniciar o hypervisor do Hyper-V durante o boot. Para checar:

bcdedit | findstr hypervisorlaunchtype

Se o comando não retornar nada ou mostrar hypervisorlaunchtype Off, o hypervisor está desativado no kernel.

2.3 validar features obrigatórias do Windows#

Execute os seguintes comandos para verificar se as features essenciais estão ativas:

dism.exe /online /get-featureinfo /featurename:VirtualMachinePlatform
dism.exe /online /get-featureinfo /featurename:Microsoft-Windows-Subsystem-Linux

O estado esperado para ambas é State : Enabled.


3) Comandos de correção e ativação#

Se o diagnóstico rápido identificou falhas, aplique as correções abaixo:

3.1 habilitar as features do Windows#

Você pode ativar os recursos obrigatórios usando o DISM:

# Habilitar o subsistema de forma persistente
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# Habilitar a plataforma de máquina virtual
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Ou usando cmdlets modernos nativos do PowerShell:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
⚠️ REINÍCIO OBRIGATÓRIO: Após habilitar as features, reinicie o computador para carregar as alterações no kernel: ``powershell Restart-Computer ``

3.2 forçar a inicialização do hypervisor no boot#

Se a virtualização está ativa na BIOS, mas o BCD não carrega o hypervisor:

bcdedit /set hypervisorlaunchtype auto

Após executar este comando, reinicie o computador para que o kernel do Hyper-V seja devidamente carregado.

3.3 configurar e iniciar serviços essenciais do host#

Se as features e o boot estão corretos, o problema pode estar nos serviços associados que não iniciaram:

# Verificar status dos serviços
Get-Service vmcompute,vmms,lxssmanager | Select-Object Name, Status, StartType

Se algum serviço estiver com status Stopped, inicie-o e configure-o para iniciar automaticamente:

# Iniciar os serviços de computação de VM, gerenciamento virtual e WSL
Start-Service vmcompute
Start-Service vmms
Start-Service lxssmanager

# Configurar inicialização automática
Set-Service vmcompute -StartupType Automatic
Set-Service vmms -StartupType Automatic
Set-Service lxssmanager -StartupType Automatic

4) Troubleshooting avançado#

Se o WSL2 ainda se recusar a subir após as correções básicas, investigue as seguintes possibilidades:

4.1 comandos de gerenciamento e reset do WSL#

Em alguns casos, a pilha do WSL precisa ser reiniciada ou atualizada manualmente:

# Desligar forçadamente todas as instâncias em execução
wsl --shutdown

# Atualizar o kernel do WSL2 para a versão mais recente
wsl --update

# Checar a versão instalada do WSL
wsl --version

# Listar distros instaladas e a versão de arquitetura ativa (deve ser 2)
wsl --list --verbose

4.2 virtualização aninhada (nested virtualization)#

Se você está rodando o Windows dentro de uma Máquina Virtual (ex: em um lab no VMware, VirtualBox, Azure ou Hyper-V do Windows Server) e tentando usar o WSL2 lá dentro, você precisa habilitar a virtualização aninhada.

Primeiro, valide se o seu Windows reconhece que está rodando dentro de um Hypervisor virtual:

Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object Model, Manufacturer

Se você estiver rodando em uma VM Hyper-V, execute este comando no host físico (com a VM desligada):

Set-VMProcessor -VMName "NomeDaSuaVM" -ExposeVirtualizationExtensions $true

4.3 conflitos com hypervisors de terceiros (VirtualBox / VMware)#

A execução conjunta do Hyper-V com outros gerenciadores de máquinas virtuais pode gerar conflitos de barramento:

Para verificar via PowerShell se o VirtualBox está instalado:

Get-CimInstance -ClassName Win32_Product | Where-Object {$_.Name -like "*VirtualBox*"}

4.4 filtrar logs de eventos do Windows (event viewer)#

Se o erro persistir, a causa exata estará registrada nos logs de diagnóstico do sistema. Em vez de navegar manualmente no eventvwr.msc, você pode buscar erros específicos pelo PowerShell:

# Logs operacionais do subsistema Linux (WSL)
Get-WinEvent -LogName "Microsoft-Windows-Lxss-Operational" -MaxEvents 20 | Format-Table -Wrap

# Logs operacionais do serviço Host Compute Service (Hyper-V)
Get-WinEvent -LogName "Microsoft-Windows-Hyper-V-Compute-Operational" -MaxEvents 20 | Format-Table -Wrap

# Mensagens do sistema geral com a palavra 'Hyper'
Get-WinEvent -LogName System -MaxEvents 50 | Where-Object {$_.ProviderName -like "*Hyper*"} | Format-Table TimeCreated, Id, Message -Wrap

5) Scripts automatizados de diagnóstico e correção#

Para agilizar o processo em várias estações de trabalho, utilize os scripts abaixo. Eles consolidam todas as validações discutidas neste guia.

5.1 script de diagnóstico completo (wsl2-diagnostic.ps1)#

Crie o arquivo abaixo e execute no PowerShell administrativo para mapear o status de todas as camadas:

# wsl2-diagnostic.ps1 - Diagnóstico completo do WSL2
# Execute como Administrador

Write-Host "=== Diagnóstico WSL2 ===" -ForegroundColor Cyan
Write-Host ""

# 1. Verificar versão do Windows
Write-Host "[1] Verificando versão do Windows..." -ForegroundColor Yellow
$osVersion = [System.Environment]::OSVersion.Version
$build = $osVersion.Build
Write-Host "    Build: $build"
if ($build -lt 18362) {
    Write-Host "    ❌ Build muito antigo. WSL2 requer Build 18362+" -ForegroundColor Red
} else {
    Write-Host "    ✅ Build compatível" -ForegroundColor Green
}

# 2. Verificar virtualização na BIOS
Write-Host ""
Write-Host "[2] Verificando virtualização..." -ForegroundColor Yellow
$hypervisor = (Get-CimInstance -ClassName Win32_ComputerSystem).HypervisorPresent
if ($hypervisor) {
    Write-Host "    ✅ Hypervisor ativo no hardware" -ForegroundColor Green
} else {
    Write-Host "    ❌ Hypervisor inativo - verifique BIOS/UEFI" -ForegroundColor Red
}

# 3. Verificar BCD
Write-Host ""
Write-Host "[3] Verificando BCD..." -ForegroundColor Yellow
$bcd = bcdedit | Select-String "hypervisorlaunchtype"
if ($bcd -match "Auto") {
    Write-Host "    ✅ Hypervisor configurado para Auto no BCD" -ForegroundColor Green
} else {
    Write-Host "    ❌ Hypervisor não configurado para Auto no BCD" -ForegroundColor Red
    Write-Host "    Correção recomendada: bcdedit /set hypervisorlaunchtype auto" -ForegroundColor Yellow
}

# 4. Verificar features
Write-Host ""
Write-Host "[4] Verificando features do Windows..." -ForegroundColor Yellow
$features = @("Microsoft-Windows-Subsystem-Linux", "VirtualMachinePlatform")
foreach ($feature in $features) {
    $status = Get-WindowsOptionalFeature -Online -FeatureName $feature -ErrorAction SilentlyContinue
    if ($status.State -eq "Enabled") {
        Write-Host "    ✅ $feature: Enabled" -ForegroundColor Green
    } else {
        Write-Host "    ❌ $feature: Disabled" -ForegroundColor Red
        Write-Host "    Correção recomendada: dism.exe /online /enable-feature /featurename:$feature /all /norestart" -ForegroundColor Yellow
    }
}

# 5. Verificar serviços
Write-Host ""
Write-Host "[5] Verificando serviços do host..." -ForegroundColor Yellow
$services = @("vmcompute", "vmms", "lxssmanager")
foreach ($svc in $services) {
    $service = Get-Service -Name $svc -ErrorAction SilentlyContinue
    if ($service) {
        $color = if ($service.Status -eq "Running") { "Green" } else { "Red" }
        Write-Host "    $($service.Status): $svc (Inicialização: $($service.StartType))" -ForegroundColor $color
    } else {
        Write-Host "    ❌ $svc: Não encontrado no sistema" -ForegroundColor Red
    }
}

# 6. Verificar WSL
Write-Host ""
Write-Host "[6] Verificando integridade do WSL..." -ForegroundColor Yellow
$wsl = wsl --list --verbose 2>&1
if ($LASTEXITCODE -eq 0) {
    Write-Host "    ✅ WSL funcional" -ForegroundColor Green
    Write-Host "    $wsl"
} else {
    Write-Host "    ❌ WSL com erro de execução" -ForegroundColor Red
}

Write-Host ""
Write-Host "=== Fim do diagnóstico ===" -ForegroundColor Cyan

5.2 script de correção automática (wsl2-fix.ps1)#

Este script força a ativação de todos os recursos essenciais detectados como inativos ou desconfigurados:

# wsl2-fix.ps1 - Correção automática do WSL2
# Execute como Administrador

Write-Host "=== Aplicando Correções do WSL2 ===" -ForegroundColor Cyan

# 1. Habilitar features
Write-Host ""
Write-Host "[1] Habilitando optional features (DISM)..." -ForegroundColor Yellow
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 2. Habilitar hypervisor no boot
Write-Host ""
Write-Host "[2] Habilitando hypervisor no BCD..." -ForegroundColor Yellow
bcdedit /set hypervisorlaunchtype auto

# 3. Iniciar e habilitar serviços
Write-Host ""
Write-Host "[3] Configurando e iniciando serviços..." -ForegroundColor Yellow
$services = @("vmcompute", "vmms", "lxssmanager")
foreach ($svc in $services) {
    Set-Service -Name $svc -StartupType Automatic -ErrorAction SilentlyContinue
    Start-Service -Name $svc -ErrorAction SilentlyContinue
}

# 4. Atualizar WSL
Write-Host ""
Write-Host "[4] Baixando atualização do kernel do WSL..." -ForegroundColor Yellow
wsl --update

Write-Host ""
Write-Host "✅ Todas as correções locais foram aplicadas!" -ForegroundColor Green
Write-Host "⚠️ IMPORTANTE: REINICIE O COMPUTADOR para carregar os recursos do Hyper-V." -ForegroundColor Yellow

6) Plano de contingência: converter para WSL1#

Se você está em um ambiente corporativo com restrições extremas de segurança (compliance GPO) onde o Hyper-V é terminantemente bloqueado e nenhuma exceção administrativa é concedida, você pode rebaixar sua distro Linux para o WSL1 como contingência temporária.

O WSL1 não depende de virtualização de hardware ou hypervisor (ele faz a tradução das chamadas de sistema Linux diretamente para o kernel NT do Windows).

# Converter a distro instalada para a versão 1
wsl --set-version <NomeDaDistro> 1

Trade-offs técnicos do WSL1:


Considerações práticas#

O erro HCS_E_HYPERV_NOT_INSTALLED não é um defeito na distribuição Linux escolhida. Trata-se de uma interrupção de orquestração na camada de infraestrutura de virtualização do Windows.

Investigar a cadeia de dependências de forma lógica (BIOS -> BCD -> Features -> Serviços) reduz significativamente o MTTR (Mean Time To Recovery) e elimina a má prática de reinstalar sistemas operacionais em busca de uma "solução mágica".

Infraestrutura previsível e resiliente começa com diagnósticos claros e correções aplicadas cirurgicamente nas camadas adequadas.

Este artigo foi útil?

Deixe uma reação rápida para apoiar o conteúdo:

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários