Solução de problemas do Subsistema Windows para Linux

Nós abordamos alguns cenários comuns de solução de problemas associados ao WSL abaixo, mas considere também pesquisar os problemas registrados no repositório de produto do WSL no GitHub.

Registrar um problema, relatar bugs, solicitar recurso

Os problemas do repositório de produtos do WSL permitem que você:

  • Pesquise problemas existentes para ver se há algum associado a um problema que você está tendo. Observe que, na barra de pesquisa, você pode remover "is:open" para incluir problemas que já foram resolvidos em sua pesquisa. Considere comentar ou dar um polegar para cima para qualquer problema aberto que você gostaria de expressar seu interesse em avançar como prioridade...
  • Registrar um problema novo. Se você encontrou um problema com o WSL e parece que ainda não existe um problema registrado, você pode selecionar o botão Novo problema verde e escolher o WSL – Relatar Bug. Você precisará incluir um título para o problema, o número de build do seu Windows (execute cmd.exe /c ver para ver o número de build atual), se você está executando o WSL 1 ou 2, o número da versão do Kernel do Linux atual (execute wsl.exe --status ou cat /proc/version), o número da versão da sua distribuição (execute lsb_release -r), outras versões de software envolvidas, as etapas de reprodução, o comportamento esperado, o comportamento real e os logs de diagnóstico, se disponíveis e apropriados. Para obter mais informações, confira contribuindo com o WSL.
  • Registre uma solicitação de recurso selecionando o botão verde Novo problema e escolhendo Solicitação de recurso. Você precisará responder algumas perguntas para descrever sua solicitação.

Também é possível:

Problemas de instalação

  • Falha na instalação com o erro 0x80070003

    • O Subsistema Windows para Linux é executado somente na unidade do sistema (normalmente, a unidade C:). Verifique se as distribuições estão armazenadas na unidade do sistema:
    • No Windows 10, abra Configurações ->Sistema ->Armazenamento ->Mais Configurações de Armazenamento: Altere onde o novo conteúdo é salvoImagem das configurações do sistema para instalar aplicativos na unidade C: (Windows 10)
    • No Windows 11, abra Configurações ->Sistema ->Armazenamento ->Configurações avançadas de armazenamento ->Onde o novo conteúdo é salvoImagem das configurações do sistema para instalar aplicativos na unidade C: (Windows 11)
  • WslRegisterDistribution falhou com o erro 0x8007019e

    • O componente opcional do Subsistema Windows para Linux não está habilitado:
    • Abra Painel de Controle ->Programas e Recursos ->Ativar ou Desativar Recursos do Windows -> Selecione Subsistema do Windows para Linux ou use o cmdlet do PowerShell mencionado no início deste artigo.
  • Ocorreu falha na instalação com o erro 0x80070003 ou 0x80370102

    • Verifique se a virtualização está habilitada dentro do BIOS do seu computador. As instruções para fazer isso variam de um computador para o outro e muito provavelmente estarão sob opções relacionadas à CPU.
    • O WSL2 requer que sua CPU dê suporte ao recurso SLAT (conversão de endereços de segundo nível), que foi introduzido nos processadores Intel Nehalem (Intel Core 1ª geração) e no AMD Opteron. As CPUs mais antigas (como o Intel Core 2 Duo) não poderão executar o WSL2, mesmo se a plataforma da máquina virtual for instalada com êxito.
  • Erro ao tentar fazer upgrade: Invalid command line option: wsl --set-version Ubuntu 2

    • Verifique se você tem o Subsistema do Windows para Linux habilitado e se está usando o Windows com a versão do Build 18362 ou superior. Para habilitar o WSL, execute este comando em um prompt do PowerShell com privilégios de administrador: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux.
  • A operação solicitada não pôde ser concluída devido a uma limitação do sistema de disco virtual. Os arquivos do disco rígido virtual precisam ser descompactados e descriptografados e não podem ser esparsos.

    • Desmarque "Compactar conteúdo" (bem como "Criptografar conteúdo", se estiver marcado) abrindo a pasta de perfil da sua distribuição do Linux. Ela deve estar localizada em uma pasta no sistema de arquivos do Windows, algo como: %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited...
    • Nesse perfil de distribuição do Linux, deve haver uma pasta LocalState. Clique com o botão direito do mouse nessa pasta para exibir um menu de opções. Selecione Propriedades > Avançado e verifique se as caixas de seleção "Compactar conteúdo para economizar espaço em disco" e "Criptografar conteúdo para proteger dados" estão desmarcadas (não selecionadas). Se for solicitado que você aplique isso apenas à pasta atual ou a todas as subpastas e arquivos, selecione "somente esta pasta" porque você só vai limpar o sinalizador de compactação. Depois disso, o comando wsl --set-version deve funcionar.

Captura de tela das configurações da propriedade de distribuição do WSL

Observação

No meu caso, a pasta LocalState da minha distribuição do Ubuntu 18.04 estava localizada em C:\Users<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc

Para obter informações atualizadas, verifique o thread 4103 do GitHub dos documentos do WSL em que esse problema está sendo acompanhado.

  • O termo 'wsl' não é reconhecido como nome de um cmdlet, uma função, um arquivo de script ou um programa operável.

  • Erro: o Subsistema do Windows para Linux não tem distribuições instaladas.

    • Se você receber esse erro depois que já tiver instalado as distribuições do WSL:
    1. Execute a distribuição pelo menos uma vez antes de invocá-la da linha de comando.
    2. Verifique se você pode estar executando contas de usuário separadas. A execução da sua conta de usuário principal com permissões elevadas (no modo admin) não deve resultar nesse erro, mas você deve garantir que não esteja executando acidentalmente a conta de administrador interno que vem com o Windows. Essa é uma conta de usuário separada e não mostrará nenhuma distribuição do WSL instalada por design. Para obter mais informações, confira Habilitar e desabilitar a conta de administrador interno.
    3. O executável do WSL é instalado apenas no diretório nativo do sistema. Quando você estiver executando um processo de 32 bits em Windows de 64 bits (ou em ARM64, qualquer combinação não nativa), o processo não nativo hospedado na verdade verá uma pasta System32 diferente. (Aquela que um processo de 32 bits vê no Windows x64 é armazenada em disco em \Windows\SysWOW64.) Você pode acessar a system32 "nativa" de um processo hospedado examinando a pasta virtual: \Windows\sysnative. Na verdade, ela não estará presente no disco, mas o resolvedor de caminho do sistema de arquivos vai encontrá-la.
  • Erro: esta atualização se aplica somente a computadores com o Subsistema do Windows para Linux.

    • Para instalar o pacote MSI de atualização do kernel do Linux, o WSL é exigido e deve ser habilitado primeiro. Se ele falhar, você verá a mensagem: This update only applies to machines with the Windows Subsystem for Linux.
    • Há três motivos possíveis para você ver essa mensagem:
    1. Você ainda está usando uma versão antiga do Windows, que não dá suporte ao WSL 2. Confira a etapa nº 2 para obter os requisitos de versão e os links a serem atualizados.

    2. O WSL não está habilitado. Você precisará retornar à etapa nº 1 e verificar se o recurso opcional do WSL está habilitado no seu computador.

    3. Depois que você habilitar o WSL, uma reinicialização será exigida para que ele entre em vigor. Reinicialize o computador e tente novamente.

  • Erro: o WSL 2 exige uma atualização do componente kernel. Para obter mais informações, visite https://aka.ms/wsl2kernel.

    • Se o pacote do kernel do Linux está ausente na pasta %SystemRoot%\system32\lxss\tools, você encontra esse erro. Resolva-o instalando o pacote MSI de atualização do kernel do Linux na etapa nº 4 das instruções de instalação. Talvez você precise desinstalar o MSI em 'Adicionar ou Remover Programas' e instalar ele novamente.

Problemas comuns

Estou usando o Windows 10, versão 1903, e ainda não vejo as opções relacionadas ao WSL 2

É provável que seu computador ainda não tenha feito o backport para o WSL 2. A maneira mais simples de resolver isso é indo até as Configurações do Windows e clicando em "Verificar Atualizações" para instalar as atualizações mais recentes no sistema. Veja as instruções completas sobre como fazer o backport.

Se você clicar em 'Verificar Atualizações' e ainda não receber a atualização, instale a Base de Dados de Conhecimento KB4566116 manualmente.

Erro: 0x1bc quando wsl --set-default-version 2

Isso pode acontecer quando a configuração de 'Idioma de Exibição' ou 'Localidade do Sistema' não é inglês.

wsl --set-default-version 2
Error: 0x1bc
For information on key differences with WSL 2 please visit https://aka.ms/wsl2

O erro real em 0x1bc é:

WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel

Para obter mais informações, veja o problema 5749

Não é possível acessar arquivos do WSL por meio do Windows

Um servidor de arquivos do protocolo 9P fornece o serviço no lado do Linux para permitir que o Windows acesse o sistema de arquivos do Linux. Se você não conseguir acessar o WSL usando o \\wsl$ no Windows, isso poderá ser devido a uma inicialização incorreta do 9P.

Para conferir isso, é possível verificar os logs de inicialização usando dmesg |grep 9p, o que mostra os erros existentes. Uma saída bem-sucedida tem a seguinte aparência:

[    0.363323] 9p: Installing v9fs 9p2000 file system support
[    0.363336] FS-Cache: Netfs '9p' registered for caching
[    0.398989] 9pnet: Installing 9P2000 support

Confira este thread do GitHub para discussões mais aprofundadas sobre esse problema.

Não é possível iniciar a distribuição do WSL 2 e apenas o texto 'WSL 2' é exibido na saída

Se seu idioma de exibição não for inglês, talvez você esteja vendo uma versão truncada de um texto de erro.

C:\Users\me>wsl
WSL 2

Para resolver esse problema, visite https://aka.ms/wsl2kernel e instale o kernel manualmente, seguindo as instruções nessa página da documentação.

command not found ao executar o Windows .exe no Linux

Os usuários podem executar os executáveis do Windows, como o notepad.exe, diretamente do Linux. Às vezes, a saída pode ser "command not found", como no seguinte exemplo:

$ notepad.exe
-bash: notepad.exe: command not found

Se não houver nenhum caminho do win32 no seu $PATH, a interoperabilidade não vai encontrar o .exe. Você pode verificá-lo executando echo $PATH no Linux. Espera-se que você veja um caminho win32 (por exemplo, /mnt/c/Windows) na saída. Se você não consegue ver nenhum caminho do Windows, é provável que PATH esteja sendo substituído pelo shell do Linux.

Veja um exemplo em que /etc/profile no Debian contribuiu para o problema:

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi

No Debian, a maneira correta é remover as linhas acima. Você também pode acrescentar $PATH durante a atribuição da maneira abaixo, mas isso resulta em alguns outros problemas com o WSL e o VSCode.

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:$PATH"
fi

Para obter mais informações, confira o problema 5296 e o 5779.

"Error: 0x80370102. Não foi possível iniciar a máquina virtual porque um recurso necessário não está instalado. "

Habilite o recurso Plataforma de Máquina Virtual do Windows e verifique se a virtualização está habilitada na BIOS.

  1. Verifique os requisitos do sistema do Hyper-V

  2. Se o computador for uma VM, habilite a virtualização aninhada manualmente. Inicie o PowerShell com direitos de administrador e execute:

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. Siga as diretrizes do fabricante do seu PC sobre como habilitar a virtualização. Geralmente, isso envolve o uso da BIOS do sistema para garantir que esses recursos estejam habilitados em sua CPU. As instruções desse processo podem variar de acordo com o computador. Confira este artigo do Bleeping Computer para obter um exemplo.

  4. Reinicie o computador depois de habilitar o componente opcional Virtual Machine Platform.

  5. Verifique se a inicialização do hipervisor está habilitada nas suas configurações de inicialização. Você pode validar isso executando (powershell com privilégios elevados):

     bcdedit /enum | findstr -i hypervisorlaunchtype
    

    Se você vir hypervisorlaunchtype Off, o hipervisor será desabilitado. Para habilitá-lo, execute em um powershell com privilégios elevados:

     bcdedit /set {current} hypervisorlaunchtype Auto
    
  6. Além disso, se você tiver hipervisores de terceiros instalados (como VMware ou VirtualBox), verifique se você os tem nas versões mais recentes que são compatíveis com o HyperV (VMware 15.5.5+ e VirtualBox 6+) ou se estão desligados.

Saiba mais sobre como Configurar a virtualização aninhada ao executar o Hyper-V em uma máquina virtual.

O WSL não tem nenhuma conexão de rede no meu computador de trabalho ou em um ambiente Enterpise

Ambientes corporativos ou empresariais podem ter configurações de Windows Defender Firewall definidas para bloquear o tráfego de rede não autorizado. Se a mesclagem de regra local estiver definida como "Não", a rede WSL não funcionará por padrão, e o administrador precisará adicionar uma regra de firewall para permiti-la.

Você pode confirmar a configuração da mesclagem de regra local seguindo estas etapas:

Captura de tela das configurações do Windows Firewall

  1. Abra "Windows Defender Firewall com Segurança Avançada" (é diferente do "Windows Defender" no Painel de Controle)
  2. Clique com o botão direito do mouse na guia "Windows Defender Firewall com Segurança Avançada em Computador Local"
  3. Selecione "Propriedades"
  4. Selecione a guia "Perfil Público" na nova janela que é aberta
  5. Selecione "Personalizar" na seção "Configurações"
  6. Verifique a janela "Personalizar Configurações para o Perfil Público" aberta para ver se "Mesclagem de Regra" está definido como "Não". Isso bloqueará o acesso ao WSL.

Você pode encontrar instruções sobre como alterar essa configuração de firewall em Ambiente empresarial: configurar o WSL para sua empresa.

O WSL não tem conectividade de rede quando conectado a uma VPN

Se, depois de se conectar a uma VPN no Windows, o Bash perder a conectividade de rede, tente essa solução alternativa de dentro do Bash. Essa solução alternativa permitirá que você substitua manualmente a resolução DNS por meio do /etc/resolv.conf.

  1. Anote o servidor DNS da VPN ao fazer ipconfig.exe /all
  2. Faça uma cópia do sudo cp /etc/resolv.conf /etc/resolv.conf.new do resolv.conf existente
  3. Desvincule o sudo unlink /etc/resolv.conf do resolv.conf atual
  4. sudo mv /etc/resolv.conf.new /etc/resolv.conf
  5. Edite /etc/wsl.conf e adicione esse conteúdo ao arquivo. (Mais informações sobre essa configuração podem ser encontradas em Configuração de definições avançadas)
[network]
generateResolvConf=false
  1. Abra /etc/resolv.conf e
    a. Exclua a primeira linha do arquivo que tem um comentário que descreve a geração automática
    b. Adicione a entrada DNS de (1) acima como a primeira entrada na lista de servidores DNS.
    c. Feche o arquivo.

Depois de desconectar a VPN, você precisará reverter as alterações para /etc/resolv.conf. Para isso, faça o seguinte:

  1. cd /etc
  2. sudo mv resolv.conf resolv.conf.new
  3. sudo ln -s ../run/resolvconf/resolv.conf resolv.conf

Iniciar o WSL ou instalar uma distribuição retorna um código de erro

Siga estas instruções para coletar logs detalhados e arquivar um problema em nosso GitHub.

Atualização do WSL

Há dois componentes do Subsistema do Windows para Linux que podem exigir atualização.

  1. Para atualizar o próprio Subsistema do Windows para Linux, use o comando wsl --update no PowerShell ou no CMD.

  2. Para atualizar os binários de usuário da distribuição do Linux específicos, use o comando: apt-get update | apt-get upgrade na distribuição do Linux que você quer atualizar.

Erros de atualização do apt-get

Alguns pacotes usam recursos que ainda não implementamos. udev, por exemplo, ainda não é compatível e causa vários erros de apt-get upgrade.

Para corrigir problemas relacionados ao udev, siga as seguintes etapas:

  1. Grave o seguinte no /usr/sbin/policy-rc.d e salve suas alterações.

    #!/bin/sh
    exit 101
    
  2. Adicione permissões de execução a /usr/sbin/policy-rc.d:

    chmod +x /usr/sbin/policy-rc.d
    
  3. Execute os comandos a seguir:

    dpkg-divert --local --rename --add /sbin/initctl
    ln -s /bin/true /sbin/initctl
    

"Error: 0x80040306" na instalação

Isso tem a ver com o fato de não damos suporte ao console herdado. Para desligar o console herdado:

  1. Abra cmd.exe
  2. Clique com o botão direito do mouse na barra de título -> Propriedades -> desmarque Usar console herdado
  3. Clique em OK

"Error: 0x80040154" após atualização do Windows

O recurso Subsistema Windows para Linux pode ser desabilitado durante uma atualização do Windows. Se isso acontecer, o recurso do Windows deverá ser habilitado novamente. As instruções para habilitar o Subsistema do Windows para Linux podem ser encontradas no Guia de instalação manual.

Como alterar o idioma de exibição

A instalação do WSL tentará alterar automaticamente a localidade do Ubuntu para corresponder à localidade da instalação do Windows. Se você não quiser esse comportamento, poderá executar esse comando para alterar a localidade do Ubuntu após a conclusão da instalação. Você precisará reiniciar o bash.exe para que essa alteração entre em vigor.

O exemplo abaixo altera a localidade para en-US:

sudo update-locale LANG=en_US.UTF8

Problemas de instalação após a restauração do sistema do Windows

  1. Exclua a pasta %windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux.
    Observação: Não faça isso se o recurso opcional estiver totalmente instalado e funcionando.
  2. Habilitar o recurso opcional do WSL (se ainda não estiver habilitado)
  3. Reinicialização
  4. lxrun /uninstall /full
  5. Instale o Bash

Sem acesso à Internet no WSL

Alguns usuários relataram problemas com aplicativos de firewall específicos que bloqueiam o acesso à Internet no WSL. Os firewalls relatados são:

  1. Kaspersky
  2. AVG
  3. Avast
  4. Symantec Endpoint Protection

Em alguns casos, desligar o firewall permite o acesso. Em outros, simplesmente ter o firewall instalado bloqueia o acesso.

Se você estiver usando o Microsoft Defender Firewall, desmarcar "Bloquear todas as conexões de entrada, incluindo aquelas na lista de aplicativos permitidos" permitirá o acesso.

Erro de permissão negada ao usar ping

Para a Atualização de Aniversário do Windows, versão 1607, são necessários privilégios de administrador no Windows para executar o ping no WSL. Para executar o ping, execute o Bash do Ubuntu no Windows como administrador ou execute bash.exe em um prompt do CMD/PowerShell com privilégios de administrador.

Para versões posteriores do Windows, Build 14926 e posteriores, os privilégios de administrador não são mais necessários.

Bash suspenso

Se, ao trabalhar com o Bash, você descobrir que ele está suspenso (ou em deadlock) e não está respondendo às entradas, ajude-nos a diagnosticar o problema coletando e relatando um despejo de memória. Observe que essas etapas apresentarão falha no sistema. Não faça isso se não estiver familiarizado ou salve seu trabalho antes.

Para coletar um despejo de memória

  1. Altere o tipo de despejo de memória para "despejo de memória completo". Ao alterar o tipo de despejo, anote seu tipo atual.

  2. Use as etapas para configurar a falha usando o controle de teclado.

  3. Reproduza o travamento ou o deadlock.

  4. Cause uma falha no sistema usando a sequência de teclas de (2).

  5. O sistema falhará e coletará o despejo de memória.

  6. Após a reinicialização do sistema, relate o memory.dmp a secure@microsoft.com. A localização padrão do arquivo de despejo será %SystemRoot%\memory.dmp ou C:\Windows\memory.dmp se a unidade do sistema for C:. No email, observe que o despejo é para o WSL ou Bash na equipe do Windows.

  7. Restaure o tipo de despejo de memória para a configuração original.

Verifique o número de build

Para encontrar a arquitetura do seu PC e o número de build do Windows, abra
Configurações>Sistema>Sobre

Procure os campos Build do SO e Tipo de Sistema.
Captura de tela dos campos Build e Tipo de Sistema

Para localizar o número de build do Windows Server, execute o seguinte no PowerShell:

systeminfo | Select-String "^OS Name","^OS Version"

Confirme se o WSL está habilitado

Você pode confirmar se o Subsistema do Windows para Linux está habilitado executando o seguinte em uma janela do PowerShell com privilégios elevados:

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Problemas de conexão do servidor OpenSSH

Falha ao tentar conectar seu servidor SSH com o seguinte erro: "Conexão encerrada pela porta 22, 127.0.0.1".

  1. Verifique se o servidor OpenSSH está em execução:

    sudo service ssh status
    

    e que você seguiu este tutorial: https://ubuntu.com/server/docs/service-openssh

  2. Interrompa o serviço SSHD e inicie o SSHD no modo de depuração:

    sudo service ssh stop
    sudo /usr/sbin/sshd -d
    
  3. Verifique os logs de inicialização e certifique-se de que as HostKeys estejam disponíveis e que você não veja mensagens de log, como:

    debug1: sshd version OpenSSH_7.2, OpenSSL 1.0.2g  1 Mar 2016
    debug1: key_load_private: incorrect passphrase supplied to decrypt private key
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_rsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_dsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_ed25519_key
    

Se você vir essas mensagens e as chaves estiverem ausentes em /etc/ssh/, será necessário regenerar as chaves ou apenas limpar e instalar o servidor OpenSSH:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

"Não foi possível encontrar o assembly referenciado." ao habilitar o recurso opcional WSL

Este erro está relacionado a um estado de instalação inadequado. Conclua as etapas a seguir para tentar corrigir esse problema:

  • Se você estiver executando o comando Habilitar recurso WSL do PowerShell, tente usar a GUI em vez de abrir o menu Iniciar, pesquisando "Ativar ou desativar recursos do Windows" e, na lista, selecione "Subsistema do Windows para Linux", que instalará o componente opcional.

  • Atualize sua versão do Windows acessando Configurações, Atualizações e clicando em "Verificar se há atualizações"

  • Se ambas falharem e você precisar acessar o WSL, considere atualizar no local reinstalando o Windows com uma mídia de instalação e selecionando "Manter Tudo" para que seus aplicativos e arquivos sejam preservados. É possível encontrar instruções para fazer isso na página Reinstalar o Windows 10.

Se você vir este erro:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.

Para corrigi-lo, acrescente o seguinte ao arquivo /etc/wsl.conf:

[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022

Ao adicionar esse comando, você incluirá metadados e modificará as permissões do arquivo nos arquivos Windows vistos em WSL. Confira as Permissões do sistema de arquivos para saber mais.

Ocorre uma falha na execução de comandos do Windows dentro de uma distribuição

Algumas distribuições disponíveis na Microsoft Store ainda não são totalmente compatíveis com a execução de comandos do Windows. Caso receba o erro -bash: powershell.exe: command not found ao executar powershell.exe /c start . ou outro comando do Windows, será possível resolvê-lo seguindo estas etapas:

  1. Na distribuição de WSL, execute echo $PATH.
    Caso ele não inclua /mnt/c/Windows/system32, isso significa que algo está redefinindo a variável PATH padrão.
  2. Verifique as configurações de perfil com cat /etc/profile.
    Caso ele contenha uma atribuição da variável PATH, edite o arquivo para fazer comentários no bloco de atribuição PATH com um caractere # .
  3. Verifique se wsl.conf está presente em cat /etc/wsl.conf e se não contém appendWindowsPath=false. Caso contrário, faça um comentário.
  4. Reinicie a distribuição digitando wsl -t , depois o nome da distribuição ou execute wsl --shutdown no cmd ou no PowerShell.

Não foi possível realizar a inicialização após a instalação do WSL 2

Estamos cientes de um problema que afeta os usuários, no qual eles não conseguem realizar a inicialização após a instalação do WSL 2. Embora possamos diagnosticar totalmente esses problemas, os usuários relataram que alterar o tamanho do buffer ou instalar os drivers corretos pode ajudar a resolver isso. Exiba este problema do GitHub para conferir as atualizações mais recentes sobre esse problema.

Erros do WSL 2 quando o ICS está desabilitado

O ICS (Compartilhamento de Conexão com a Internet) é um componente obrigatório do WSL 2. O serviço do ICS é usado pelo HNS (Serviço de Rede Host) para criar a rede virtual subjacente da qual o WSL 2 depende para NAT, DNS, DHCP e compartilhamento da conexão com o host.

Desabilitar o serviço do ICS (SharedAccess) ou desabilitar o ICS por meio da política de grupo impedirá que a rede HNS do WSL seja criada. Isso levará a falhas ao criar uma imagem do WSL versão 2 e causará o erro a seguir ao tentar converter uma imagem da versão 1 para a 2.

There are no more endpoints available from the endpoint mapper.

Sistemas que exigem o WSL 2 devem deixar o serviço do ICS (SharedAccess) no estado de início padrão, Manual (Início do Gatilho), e qualquer política que desabilitar o ICS deverá ser substituída ou removida. O ICS interromperá o WSL 2 se for desabilitado e, embora não seja recomendado desabilitá-lo, partes do ICS podem ser desabilitadas usando estas instruçõesng-application-guard-)

Uso de versões mais antigas do Windows e do WSL

Há várias diferenças a serem observadas se você está executando uma versão mais antiga do Windows e do WSL, como a Atualização do Windows 10 para Criadores (outubro de 2017, Build 16299) ou Atualização de Aniversário (agosto de 2016, Build 14393). Recomendamos que você atualize para a versão mais recente do Windows, mas se isso não for possível, descrevemos algumas das diferenças abaixo.

Diferenças de comando de interoperabilidade:

  • bash.exe foi substituído por wsl.exe. Os comandos do Linux podem ser executados no prompt de comando do Windows ou no PowerShell, mas, para versões anteriores do Windows, você precisa usar o comando bash. Por exemplo: C:\temp> bash -c "ls -la". Os comandos do WSL passados para bash -c são encaminhados para o processo do WSL sem modificação. Os caminhos de arquivo devem ser especificados no formato do WSL e é necessário ter cuidado com os caracteres de escape relevantes. Por exemplo: C:\temp> bash -c "ls -la /proc/cpuinfo" ou C:\temp> bash -c "ls -la \"/mnt/c/Program Files\"".
  • Para ver quais comandos estão disponíveis para uma determinada distribuição, execute [distro.exe] /?. Por exemplo, com o Ubuntu: C:\> ubuntu.exe /?.
  • O caminho do Windows está incluído no WSL $PATH.
  • Ao chamar uma ferramenta do Windows de uma distribuição do WSL em uma versão anterior do Windows 10, será necessário especificar o caminho do diretório. Por exemplo, para chamar o aplicativo Bloco de notas do Windows na linha de comando do WSL, digite: /mnt/c/Windows/System32/notepad.exe
  • Para alterar o usuário padrão para root, use este comando no PowerShell: C:\> lxrun /setdefaultuser root; depois, execute Bash.exe para fazer logon: C:\> bash.exe. Redefina sua senha usando o comando de senha da distribuição: $ passwd username e feche a linha de comando do Linux: $ exit. No prompt de comando do Windows ou no PowerShell, redefina o usuário padrão de volta para sua conta de usuário normal do Linux: C:\> lxrun.exe /setdefaultuser username.

Desinstalar a versão herdada do WSL

Se você instalou o WSL originalmente em uma versão do Windows 10 antes da atualização para criadores (outubro de 2017, Build 16299), recomendamos que migre todos os arquivos, dados necessários etc. da distribuição mais antiga do Linux instalada, para uma distribuição mais recente instalada por meio da Microsoft Store. Para remover a distribuição herdada do seu computador, execute o seguinte em uma linha de comando ou uma instância do PowerShell: wsl --unregister Legacy. Você também tem a opção de remover manualmente a distribuição herdada mais antiga excluindo a pasta %localappdata%\lxss\ (e o seu subconteúdo) usando o Explorador de Arquivos do Windows ou com o PowerShell: rm -Recurse $env:localappdata/lxss/.