Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Abordamos alguns cenários comuns de solução de problemas associados ao WSL abaixo, mas considere pesquisar os problemas arquivados no repositório de produtos WSL no GitHub também.
Registrar um problema, relatório de bugs, solicitação de recurso
Os problemas do repositório de produtos do WSL permitem que você:
Pesquisar problemas existentes para ver se há algum associado a um problema que você está tendo.
Observe que, na barra de pesquisa, você pode remover "state:open" para incluir problemas que já foram resolvidos em sua pesquisa.
Considere comentar ou dar um joinha em qualquer problema aberto para expressar seu interesse em avançar como prioridade.
Registre um novo problema. Se você encontrou um problema com wsl e não parece haver um problema existente, você pode selecionar o botão verde "New issue" e, em seguida, escolher "WSL - Bug Report".
Você precisará fornecer as seguintes informações:
- Título do problema
- Versão do Windows: execute
cmd.exe /c ver
para obter o build do Windows em que você está. - Versão do WSL: se você estiver executando o Subsistema do Windows para Linux na Microsoft Store, execute
wsl.exe -v
. - Você está usando o WSL 1 ou o WSL 2: diga-nos se o problema está no WSL 2 e/ou no WSL 1. Você pode dizer executando
wsl.exe -l -v
. - Versão do kernel: informe-nos qual versão do kernel do Linux você está usando ou se está usando um kernel personalizado. Você pode executar
wsl.exe --status
se esse comando estiver disponível para você ou em execuçãocat /proc/version
na sua distribuição. - Versão de distribuição: informe-nos qual distribuição você está usando (se aplicável). Você pode obter informações adicionais sobre a versão sempre que possível, por exemplo, no Debian/Ubuntu.
run lsb_release -r
- Outro Software: se você estiver relatando um bug envolvendo a interação do WSL com outros aplicativos, informe-nos. Quais aplicativos? Quais versões?
- Etapas de reprodução: liste as etapas para reproduzir o bug.
- Comportamento esperado: o que você esperava ver? Inclua exemplos relevantes ou links de documentação.
- Comportamento real: O que aconteceu em vez disso?
- Logs de diagnóstico: forneça diagnósticos adicionais, se necessário. Consulte as diretrizes para obter informações sobre como coletar logs do Hub de Comentários, logs de rede e muito mais.
Para obter mais informações, consulte contribuir para o WSL.
Registre uma solicitação de recurso selecionando o botão verde "New issue" e selecione "Feature request".
Você precisará responder a algumas perguntas que descrevem sua solicitação.
Você também pode:
- Registre um problema de documentação usando o repositório de documentação do WSL . Para contribuir com a documentação do WSL, consulte o Guia do colaborador do Microsoft Docs.
- Registre um problema do Terminal do Windows usando o repositório de produtos do Terminal do Windows se o problema estiver mais relacionado ao Terminal do Windows, Console do Windows ou à interface de linha de comando.
Problemas de instalação
A instalação falhou com o erro 0x80070003
- O Subsistema do Windows para Linux é executado apenas em sua unidade do sistema (geralmente esta é sua unidade de
C:
). Verifique se as distribuições estão armazenadas na unidade do sistema: - No Windows 10, abra Configurações –>Sistema –> de Armazenamento –>Mais Configurações de Armazenamento: Alterar onde o novo conteúdo é salvo
- No Windows 11, abra Configurações ->Sistema ->Armazenamento ->Configurações avançadas de armazenamento ->Onde o novo conteúdo é salvo
- O Subsistema do Windows para Linux é executado apenas em sua unidade do sistema (geralmente esta é sua unidade de
falha no WslRegisterDistribution com o erro 0x8007019e
- O componente opcional do Subsistema do Windows para Linux não está habilitado:
- Abrir o Painel de Controle ->Programas e Recursos ->Ativar ou desativar o Recurso do Windows -> Verifique o Subsistema do Windows para Linux ou usando o cmdlet do PowerShell mencionado na etapa 1.
Falha na instalação com erro 0x80070003 ou erro 0x80370102
- Verifique se a virtualização está habilitada dentro do BIOS do computador. As instruções sobre como fazer isso variarão de computador para computador e provavelmente estarão em 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 AMD Opteron. CPUs mais antigas (como o Intel Core 2 Duo) não poderão executar o WSL2, mesmo que a Plataforma de Máquina Virtual seja instalada com êxito.
Erro ao tentar atualizar, opção de linha de comando inválida:
wsl --set-version Ubuntu 2
Verifique se você tem o Subsistema do Windows para Linux habilitado e se está usando o Windows Build versão 18362 ou posterior. 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 de disco rígido virtual devem ser descompactados e não criptografados e não devem ser esparsos.
- Desmarque "Compactar conteúdo" (bem como "Criptografar conteúdo" se isso for verificado) abrindo a pasta de perfil para sua distribuição do Linux. Ele deve estar localizado em uma pasta no sistema de arquivos do Windows, algo como:
%LocalAppData%\Packages\CanonicalGroupLimited...
- Neste perfil de distribuição do Linux, deve haver uma pasta LocalState. Clique com o botão direito do mouse nesta pasta para exibir um menu de opções. Selecione Propriedades>Avançadas e verifique se as caixas de seleção "Compactar conteúdo para economizar espaço em disco" e "Criptografar conteúdo para proteger dados" não estão selecionadas (não marcadas). Se for perguntado se você deve aplicar isso apenas à pasta atual ou a todas as subpastas e arquivos, selecione "apenas esta pasta" porque você está apenas limpando o sinalizador de compactação. Depois disso, o comando
wsl --set-version
deve funcionar.
Nota
No meu caso, a pasta LocalState para minha distribuição do Ubuntu 18.04 estava localizada em
C:\Users\<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
Verifique o tópico #4103 do GitHub WSL Docs onde esse problema está sendo monitorado para obter informações atualizadas.
- Desmarque "Compactar conteúdo" (bem como "Criptografar conteúdo" se isso for verificado) abrindo a pasta de perfil para sua distribuição do Linux. Ele deve estar localizado em uma pasta no sistema de arquivos do Windows, algo como:
O termo 'wsl' não é reconhecido como o nome de um cmdlet, função, arquivo de script ou programa operável.
- Verifique se o Componente Opcional do Subsistema Windows para Linux está instalado. Além disso, se você estiver usando um dispositivo ARM64 e executando esse comando do PowerShell, receberá esse erro. Em vez disso, execute
wsl.exe
no PowerShell Core ou no Prompt de Comando.
- Verifique se o Componente Opcional do Subsistema Windows para Linux está instalado. Além disso, se você estiver usando um dispositivo ARM64 e executando esse comando do PowerShell, receberá esse erro. Em vez disso, execute
Erro: o Subsistema do Windows para Linux não tem distribuições instaladas.
- Se você receber esse erro depois de já ter instalado as distribuições do WSL:
- Execute a distribuição pelo menos uma vez antes de invocá-la da linha de comando.
- Verifique se você pode estar executando contas de usuário separadas. Executar sua conta de usuário primária com permissões elevadas (no modo de administrador) não deve resultar nesse erro, mas você deve garantir que não esteja executando acidentalmente a conta de Administrador interna que vem com o Windows. Essa é uma conta de usuário separada e não mostrará nenhuma distribuição WSL instalada por design. Para obter mais informações, consulte Habilitar e desabilitar a conta de administrador interna.
- O executável WSL só é instalado no diretório do sistema nativo. Quando você está executando um processo de 32 bits no Windows de 64 bits (ou em ARM64, qualquer combinação não nativa), o processo não nativo hospedado realmente vê uma pasta system32 diferente. (O que um processo de 32 bits vê no Windows x64 é armazenado em disco em %SystemRoot%\SysWOW64.) Você pode acessar o sistema "nativo"32 de um processo hospedado examinando a pasta virtual:
\Windows\sysnative
. Na verdade, ele não estará presente no disco, vale lembrar, mas o resolvedor de caminhos do sistema de arquivos o encontrará.
Erro: essa atualização só se aplica a computadores com o Subsistema do Windows para Linux.
- Para instalar o pacote MSI de atualização do kernel do Linux, o WSL é necessário e deve ser habilitado primeiro. Se falhar, você verá a mensagem: essa atualização só se aplica a computadores com o Subsistema do Windows para Linux.
- Há três motivos possíveis para você ver esta mensagem:
Você ainda está na versão antiga do Windows que não dá suporte ao WSL 2. Consulte a Etapa 2 – Verificar os requisitos para executar o WSL 2.
O WSL não está habilitado. Você precisará retornar à etapa 1 e garantir que o recurso WSL opcional esteja habilitado em seu computador.
Depois que você habilitou o WSL, uma reinicialização é necessária para que ela entre em vigor, reinicialize o computador e tente novamente.
Erro: o WSL 2 requer uma atualização para o componente do kernel. Para obter informações, visite a etapa 4
- Se o pacote do kernel do Linux estiver ausente na
%SystemRoot%\system32\lxss\tools
pasta, você encontrará esse erro. Resolva-o instalando o pacote MSI de atualização do kernel do Linux na etapa 4 dessas instruções de instalação. Talvez seja necessário desinstalar o MSI de "Adicionar ou Remover Programas" e instalá-lo novamente.
- Se o pacote do kernel do Linux estiver ausente na
Problemas comuns
Estou no Windows 10 versão 1903 e ainda não vejo opções para o WSL 2
Isso provavelmente ocorre porque seu computador ainda não recebeu o backport para WSL 2. A maneira mais simples de resolver isso é acessando as Configurações do Windows e clicando em "Verificar se há atualizações" para instalar as atualizações mais recentes em seu sistema. Consulte as instruções completas sobre como fazer o backport.
Se você pressionar "Verificar se há atualizações" e ainda não receber a atualização, poderá instalar o KB KB4566116 manualmente.
Erro: 0x1bc ao wsl --set-default-version 2
Isso pode acontecer quando a configuração "Idioma de Exibição" ou "Localidade do Sistema" não é inglês.
PS C:\> wsl.exe --set-default-version 2
Error: 0x1bc
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
O erro real é 0x1bc
: o WSL 2 requer uma atualização para o componente do kernel. Para obter informações, visite https://aka.ms/wsl2kernel
Para obter mais informações, consulte o problema nº 5749
Não é possível acessar arquivos WSL do Windows
Um servidor de arquivos de protocolo 9p fornece o serviço no lado do Linux para permitir que o Windows acesse o sistema de arquivos Linux. Se você não puder acessar o WSL usando \\wsl$
no Windows, pode ser porque o 9P não foi iniciado corretamente.
Para verificar isso, você pode verificar os logs de inicialização usando: dmesg | grep 9p
e isso mostrará quaisquer erros. Uma saída bem-sucedida se parece com o seguinte:
[ 0.363323] 9p: Installing v9fs 9p2000 file system support
[ 0.363336] FS-Cache: Netfs '9p' registered for caching
[ 0.398989] 9pnet: Installing 9P2000 support
Consulte o problema nº 5307 para mais discussões sobre esse assunto.
Não é possível iniciar a distribuição do WSL 2 e ver apenas 'WSL 2' na saída
Se o idioma de exibição não for inglês, é possível que você esteja vendo uma versão truncada de um texto de erro.
PS C:\> wsl.exe
WSL 2
Para resolver esse problema, consulte a etapa 4 e instale o kernel manualmente seguindo as instruções nessa página do documento.
command not found
ao executar o Windows .exe no Linux
Os usuários podem executar executáveis do Windows como notepad.exe diretamente do Linux. Às vezes, você pode receber a mensagem "comando não encontrado", como abaixo:
$ notepad.exe
-bash: notepad.exe: command not found
Se não houver caminhos Win32 no seu $PATH, a interoperabilidade não encontrará o .exe.
Você pode verificar isso 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 conseguir ver nenhum caminho do Windows, provavelmente seu PATH está sendo substituído pelo shell do Linux.
Aqui está um exemplo 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
A maneira correta no Debian é remover as linhas acima. Você também pode acrescentar $PATH durante a atribuição como abaixo, mas isso pode causar 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, consulte o problema nº 5296 e o problema nº 5779.
"Erro: 0x80370102 A máquina virtual não pôde ser iniciada porque um recurso necessário não está instalado."
Habilite o recurso Windows da Plataforma de Máquina Virtual e verifique se a virtualização está habilitada no BIOS.
Verifique os requisitos do sistema Hyper-V
Se o seu computador for uma VM, habilite a virtualização aninhada manualmente. Inicie o PowerShell com o administrador e execute o seguinte comando, substituindo
<VMName>
pelo nome da máquina virtual em seu sistema host (você pode encontrar o nome em seu gerenciador de Hyper-V):Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Siga as diretrizes do fabricante do computador sobre como habilitar a virtualização. Em geral, isso pode envolver o uso do BIOS do sistema para garantir que esses recursos estejam habilitados em sua CPU. As instruções para esse processo podem variar de máquina para máquina, consulte Habilitar virtualização no Windows.
Reinicie seu computador depois de habilitar o componente opcionalda Plataforma de Máquina Virtual.
Verifique se a inicialização do hipervisor está habilitada na configuração de inicialização. Você pode validar isso executando o PowerShell com privilégios elevados:
bcdedit /enum | findstr -i hypervisorlaunchtype
Se você vir
hypervisorlaunchtype Off
, o hipervisor estará desabilitado. Para habilitá-lo, execute no PowerShell com privilégios elevados:bcdedit /set hypervisorlaunchtype Auto
Além disso, se você tiver hipervisores de terceiros instalados (como VMware ou VirtualBox), verifique se os tem nas versões mais recentes que podem dar suporte ao HyperV (VMware 15.5.5+ e VirtualBox 6+) ou que estão desativados.
Se você estiver recebendo esse erro em uma Máquina Virtual do Azure, verifique se Inicialização Confiável está desabilitada. Não há suporte para virtualização aninhada em máquinas virtuais do Azure com Início Confiável.
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 Enterprise
Ambientes corporativos ou empresariais podem ter configurações de firewall do Windows Defender configuradas para bloquear o tráfego de rede não autorizado. Se a mesclagem de regras locais estiver definida como "Não", o sistema de rede do 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 regras locais seguindo estas etapas:
captura de tela de configurações do Firewall do Windows
- Abra o "Windows Defender Firewall com segurança avançada" (isso é diferente do "Firewall do Windows Defender" no Painel de Controle)
- Clique com o botão direito do mouse na guia "Firewall do Windows Defender com segurança avançada no Computador Local"
- Selecione "Propriedades"
- Selecione a guia "Perfil Público" na nova Janela que é aberta
- Selecione "Personalizar" na seção "Configurações"
- Verifique a janela "Personalizar Configurações para o Perfil Público" que se abre para verificar se a "Mesclagem de Regras" está configurada como "Não". Isso bloqueará o acesso ao WSL.
Você pode encontrar instruções sobre como alterar essa configuração de Firewall no Configurar Hyper-V firewall.
O WSL não tem conectividade de rede uma vez conectado a uma VPN
Se, após conectar-se a uma VPN no Windows, o bash perder a conectividade de rede, tente esta solução alternativa no bash. Essa solução alternativa permitirá que você substitua manualmente a resolução DNS por meio de /etc/resolv.conf
.
Anote o servidor DNS da VPN de fazer:
ipconfig.exe /all
Faça uma cópia do existente
resolv.conf
:sudo cp /etc/resolv.conf /etc/resolv.conf.bak
Desvincular o atual
resolv.conf
:sudo unlink /etc/resolv.conf
Correr:
sudo mv /etc/resolv.conf.bak /etc/resolv.conf
Edite
/etc/wsl.conf
e adicione esse conteúdo ao arquivo. (Mais informações sobre essa configuração podem ser encontradas em Definição das configurações avançadas)[network] generateResolvConf=false
Abrir
/etc/resolv.conf
e- Exclua a primeira linha do arquivo que tem um comentário que descreve a geração automática.
- Adicione a entrada DNS de (1) acima como a primeira entrada na lista de servidores DNS.
- Feche o arquivo.
Depois de desconectar a VPN, você precisará reverter as alterações para /etc/resolv.conf
. Para fazer isso, faça:
sudo mv /etc/resolv.conf /etc/resolv.conf.bak
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Problemas do Cliente Global Secure Access com o WSL
O Cliente de Acesso Seguro Global (/entra/global-secure-access/how-to-install-windows-client) pode afetar a conectividade WSL, pois ele tem um recurso para retornar um endereço temporário ao resolver um nome. Em seguida, o endereço é trocado para o endereço real quando uma conexão de rede é feita. Isso pode interromper o WSL, pois o tráfego WSL é encaminhado abaixo de grande parte dos ganchos de cliente GSA.
É recomendável desabilitar o Túnel DNS (dnsTunneling=false
) ou desabilitar o Modo Espelhado (networkingMode=nat
).
Problemas de VPN do Cisco Anyconnect com o WSL no modo NAT
A VPN Cisco AnyConnect modifica as rotas de uma maneira que impede que o NAT funcione. Existe uma solução alternativa específica para o WSL 2: consulte Guia do Administrador do Cliente Cisco AnyConnect Secure Mobility, versão 4.10 – Solucionar problemas do AnyConnect.
Problemas de conectividade WSL com VPNs quando o modo de rede espelhado está ativado
O modo de sistema de rede espelhado é atualmente uma configuração experimental na Configuração do WSL. A arquitetura de rede NAT tradicional do WSL pode ser atualizada para um modo de rede totalmente novo chamado "Modo de rede espelhada". Quando o networkingMode
experimental é definido como mirrored
, as interfaces de rede que você tem no Windows são espelhadas no Linux para melhorar a compatibilidade. Saiba mais no blog da Linha de Comando: Atualização do WSL de setembro de 2023.
Algumas VPNs foram testadas e confirmadas como incompatíveis com o WSL, incluindo:
- "Bitdefender" versão 26.0.2.1
- "OpenVPN" versão 2.6.501
- "Mcafee Safe Connect" versão 2.16.1.124
Considerações ao usar autoProxy para espelhamento de HttpProxy no WSL
O espelhamento de proxy HTTP/S pode ser configurado usando a configuração autoProxy
na seção experimental do arquivo de Configuração do WSL. Ao aplicar essa configuração, observe estas considerações:
-
Proxy PAC: O WSL definirá a configuração no Linux definindo a variável de
WSL_PAC_URL
ambiente. O Linux não dá suporte a proxies PAC por padrão. - Interações com o WSLENV: as variáveis de ambiente definidas pelo usuário têm precedência sobre aquelas especificadas por esse recurso.
Quando habilitado, o seguinte se aplica às configurações de proxy em suas distribuições do Linux:
- A variável de ambiente do Linux,
HTTP_PROXY
, é definida como um ou mais proxies HTTP encontrados instalados na configuração de proxy HTTP do Windows. - A variável de ambiente do Linux é
HTTPS_PROXY
definida como um ou mais proxies HTTPS encontrados instalados na configuração de proxy HTTPS do Windows. - A variável de ambiente do Linux,
NO_PROXY
, está definida para ignorar quaisquer proxies HTTP/S encontrados nos destinos de configuração do Windows. - Cada variável de ambiente, exceto
WSL_PAC_URL
, é definida tanto em minúsculas quanto em maiúsculas. Por exemplo:HTTP_PROXY
ehttp_proxy
.
Há um problema conhecido causado pelas configurações do ZScaler, em que o ZScaler habilita e desabilita repetidamente as configurações de proxy do Windows, levando o WSL a mostrar repetidamente a notificação "Uma alteração de proxy Http foi detectada no host".
Saiba mais no blog da Linha de Comando: Atualização do WSL de setembro de 2023.
Considerações de rede com túnel DNS
Quando o WSL não pode se conectar à Internet, pode ser porque a chamada DNS para o host do Windows está bloqueada. Isso ocorre porque o pacote de rede para DNS enviado pela VM WSL para o host do Windows é bloqueado pela configuração de rede existente. O túnel DNS corrige isso usando um recurso de virtualização para se comunicar diretamente com o Windows, permitindo que o nome DNS seja resolvido sem enviar um pacote de rede. Esse recurso deve melhorar a compatibilidade com a rede e permitir que você obtenha melhor conectividade com a Internet, mesmo se você tiver uma VPN, uma configuração de firewall específica ou outras configurações de rede.
O Túnel DNS pode ser configurado usando a configuração de dnsTunneling
na seção experimental do arquivo de Configuração do WSL. Ao aplicar essa configuração, observe estas considerações:
- Se você usar uma VPN com WSL, ative o túnel DNS. Muitas VPNs usam políticas NRPT, que só são aplicadas a consultas DNS do WSL quando o túnel DNS está habilitado.
- O arquivo
/etc/resolv.conf
na distribuição do Linux tem uma limitação máxima de 3 servidores DNS, enquanto o Windows pode usar mais de 3 servidores DNS. O uso do túnel DNS remove essa limitação– todos os servidores DNS do Windows agora podem ser usados pelo Linux. - O WSL usará sufixos DNS do Windows na seguinte ordem (semelhante à ordem usada pelo cliente DNS do Windows):
- Sufixos DNS globais
- Sufixos DNS complementares
- Sufixos DNS por interface
- Se a criptografia DNS (DoH, DoT) estiver habilitada no Windows, a criptografia será aplicada a consultas DNS do WSL. Se os usuários quiserem habilitar o DoH, o DoT dentro do Linux, eles precisarão desabilitar o túnel DNS.
- Consultas DNS de contêineres do Docker gerenciados pelo Docker Desktop ignorarão o túnel DNS. O Docker Desktop possui uma maneira própria (diferente do túnel DNS) de aplicar configurações e políticas de DNS de host a consultas de DNS feitas por contêineres do Docker.
- Para que o túnel DNS seja habilitado com êxito, a opção generateResolvConf no arquivo wsl.conf não deve ser desabilitada.
- Quando o túnel DNS está habilitado, a opção
generateHosts
no arquivo wsl.conf é ignorada (o arquivo de hosts DNS do Windows não é copiado no arquivo Linux /etc/hosts). As políticas no arquivo de hosts do Windows serão aplicadas a consultas DNS do Linux, sem a necessidade de que o arquivo seja copiado no Linux.
Saiba mais no blog da Linha de Comando: Atualização do WSL de setembro de 2023.
Problemas ao direcionar o tráfego de entrada recebido pelo host do Windows para a Máquina Virtual WSL
Ao usar o modo de rede espelhado (o networkingMode
experimental definido como mirrored
), algum tráfego de entrada recebido pelo host do Windows nunca será direcionado para a VM do Linux. Esse tráfego é o seguinte:
- Porta UDP 68 (DHCP)
- Porta TCP 135 (resolução de ponto de extremidade DCE)
- Porta TCP 1900 (UPnP)
- Porta TCP 2869 (SSDP)
- Porta TCP 5004 (RTP)
- Porta TCP 3702 (WSD)
- Porta TCP 5357 (WSD)
- Porta TCP 5358 (WSD)
O WSL definirá automaticamente determinadas configurações de rede do Linux ao usar o modo de rede espelhado. Não há suporte para qualquer configuração de usuário dessas configurações ao usar o modo de rede espelhada. Esta é a lista de configurações que o WSL definirá:
Nome da Configuração | Valor |
---|---|
https://sysctl-explorer.net/net/ipv4/accept_local/ |
Habilitado (1) |
https://sysctl-explorer.net/net/ipv4/route_localnet/ |
Habilitado (1) |
https://sysctl-explorer.net/net/ipv4/rp_filter/ |
Desabilitado (0) |
https://sysctl-explorer.net/net/ipv6/accept_ra/ |
Desabilitado (0) |
https://sysctl-explorer.net/net/ipv6/autoconf/ |
Desabilitado (0) |
https://sysctl-explorer.net/net/ipv6/use_tempaddr/ |
Desabilitado (0) |
addr_gen_mode | Desabilitado (0) |
disable_ipv6 | Desabilitado (0) |
https://sysctl-explorer.net/net/ipv4/arp_filter/ |
Habilitado (1) |
Problemas de contêiner do Docker no WSL2 com o modo de rede espelhado habilitado ao executar no namespace de rede padrão
Há um problema conhecido em que os contêineres da Área de Trabalho do Docker com portas publicadas (docker run –publish/–p
) não serão criados. A equipe do WSL está trabalhando com a equipe do Docker Desktop para resolver esse problema. Para contornar o problema, use o namespace de rede do host no contêiner do Docker. Defina o tipo de rede por meio da opção --network host
usada no docker run
comando. Uma solução alternativa é listar o número da porta publicada na configuração ignoredPorts
da seção experimental no arquivo de configuração do WSL.
Problemas de contêiner do Docker quando o Gerenciador de Rede está em execução
Há um problema conhecido com contêineres do Docker que têm o serviço Gerenciador de Rede em execução. Os sintomas incluem falhas ao tentar fazer conexões de loopback com o host. É recomendável interromper o serviço do Gerenciador de Rede para que a rede WSL seja configurada corretamente.
sudo systemctl disable network-manager.service
Resolução de nomes .local no WSL
Para resolver nomes de host para endereços IP em uma rede local sem a necessidade de um servidor DNS convencional, os nomes .local são frequentemente usados. Isso é feito por meio do protocolo mDNS (DNS multicast), que depende do tráfego multicast para funcionar.
networkingMode
definido como NAT
:
Atualmente, esse recurso não tem suporte quando o túnel DNS está habilitado. Para habilitar a resolução de nomes .local, recomendamos as seguintes soluções:
- Desabilite o túnel DNS.
- Use o modo de rede espelhada.
networkingMode
definido como Mirrored
:
Observação: você precisa estar no build WSL 2.3.17 ou superior para ter a funcionalidade abaixo.
Como o modo Espelhado dá suporte ao tráfego multicast, o protocolo mDNS (DNS multicast) pode ser usado para resolver nomes .local. O Linux deve ser configurado para dar suporte ao mDNS, pois ele não o faz por padrão. Uma maneira de configurá-lo é usando as seguintes duas etapas:
Instalar o pacote
libnss-mdns
sudo apt-get install libnss-mdns
*O
libnss-mdns
pacote é um plug-in para a funcionalidade NSS (GNU Name Service Switch) da biblioteca GNU C (glibc) que fornece resolução de nome de host por meio do MDNS (Multicast DNS). Esse pacote efetivamente permite que programas comuns do Unix/Linux resolvam nomes no domínio mDNS .local ad hoc.Configure o
/etc/nsswitch.conf
arquivo para habilitar amdns_minimal
configuração nahosts
seção. Conteúdo de exemplo do arquivo:/>cat /etc/nsswitch.conf # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat systemd group: compat systemd shadow: compat gshadow: files hosts: files mdns_minimal [NOTFOUND=return] dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Sufixos DNS no WSL
Dependendo das configurações no arquivo .wslconfig, o WSL terá o seguinte comportamento em relação aos sufixos DNS:
Quando networkingMode
é definido como NAT
:
Caso 1: por padrão, nenhum sufixo DNS está configurado no Linux
Caso 2: se o túnel DNS estiver habilitado (dnsTunneling
está definido true
como em .wslconfig) Todos os sufixos DNS do Windows serão configurados no Linux, na search
configuração de /etc/resolv.conf
Os sufixos são configurados em /etc/resolv.conf na seguinte ordem, semelhante à ordem em que o cliente DNS do Windows tenta sufixos ao resolver um nome: sufixos DNS globais primeiro, depois sufixos DNS suplementares e, em seguida, sufixos DNS por interface.
Quando houver uma alteração nos sufixos DNS do Windows, essa alteração será refletida automaticamente no Linux
Caso 3: se o túnel DNS estiver desabilitado e o proxy DNS SharedAccess estiver desabilitado (dnsTunneling
e dnsProxy
estiver definido false
como .wslconfig). Um único sufixo DNS é configurado no Linux, na configuração "domínio" de /etc/resolv.conf
Quando há uma alteração nos sufixos DNS do Windows, essa alteração não é refletida no Linux
O sufixo DNS único configurado no Linux é escolhido entre os sufixos DNS por interface (sufixos globais e complementares são ignorados)
se o Windows tiver várias interfaces, uma heurística será usada para escolher o sufixo DNS único que será configurado no Linux. Por exemplo, se houver uma interface VPN no Windows, o sufixo será escolhido nessa interface. Se nenhuma interface VPN estiver presente, o sufixo será escolhido da interface que provavelmente fornecerá conectividade com a Internet.
Quando networkingMode
é definido como Mirrored
:
Todos os sufixos DNS do Windows são configurados no Linux, na configuração search
de /etc/resolv.conf
Os sufixos são configurados em /etc/resolv.conf na mesma ordem que no caso 2) do modo NAT
Quando houver uma alteração nos sufixos DNS do Windows, essa alteração será refletida automaticamente no Linux
Nota
Sufixos DNS suplementares podem ser configurados no Windows usando.
Função SetInterfaceDnsSettings (netioapi.h), com o sinalizador DNS_SETTING_SUPPLEMENTAL_SEARCH_LIST
definido no Settings
parâmetro.
Solução de problemas de DNS no WSL
A configuração DNS padrão quando o WSL inicia um contêiner no modo NAT é fazer com que o dispositivo NAT no Host do Windows sirva como o "servidor" DNS para o contêiner WSL. Quando as consultas DNS são enviadas do contêiner WSL para esse dispositivo NAT no Host do Windows, o pacote DNS é encaminhado do dispositivo NAT para o serviço de acesso compartilhado no Host; a resposta é enviada na direção inversa de volta para o contêiner WSL. Esse processo de encaminhamento de pacotes para acesso compartilhado requer uma regra de Firewall para permitir esse pacote DNS de entrada, que é criado pelo serviço HNS quando o WSL inicialmente solicita ao HNS que crie a rede virtual NAT para seu contêiner WSL.
Devido a esse NAT - projeto de acesso compartilhado, há algumas configurações conhecidas que podem interromper a resolução de nomes do WSL.
Uma empresa pode enviar por push uma política que não permite regras de Firewall definidas localmente, permitindo apenas regras definidas pela política empresarial.
Quando isso é definido por uma Empresa, a regra de Firewall criada por HNS é ignorada, pois é uma regra definida localmente.
Para que essa configuração funcione, a Empresa deve criar uma regra de Firewall para permitir a porta UDP 53 para o serviço de acesso compartilhado ou o WSL pode ser definido para usar o Túnel DNS.
É possível ver se isso está configurado para não permitir regras de Firewall definidas localmente executando o seguinte. Observe que isso mostrará as configurações para todos os três perfis: Domínio, Privado e Público. Se ele estiver definido em qualquer perfil, os pacotes serão bloqueados se a vNIC do WSL for atribuída a esse perfil (o padrão é
Public
). Este é apenas um snippet do primeiro perfil de Firewall que é retornado no Powershell:PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore Name : Domain Enabled : True DefaultInboundAction : Block DefaultOutboundAction : Allow AllowInboundRules : True AllowLocalFirewallRules : False ...
AllowLocalFirewallRules: False
significa que as regras de firewall definidas localmente, como essa pelo HNS, não serão aplicadas nem usadas.E o Enterprise pode reduzir as configurações de política de MDM e Política de Grupo que bloqueiam todas as regras de entrada.
Essas configurações substituem qualquer regra de firewall Allow-Inbound. Dessa forma, essa configuração bloqueará a regra de Firewall UDP criada pelo HNS e, portanto, impedirá que o WSL resolva nomes.
Para que essa configuração funcione, WSL deve ser definido para usar DNS Tunneling. Essa configuração sempre bloqueará o proxy DNS NAT.
Da Política de Grupo:
Configuração do computador \ Modelos Administrativos \ Rede \ Conexões de Rede \ Firewall do Windows Defender \ Perfil de Domínio | Perfil Padrão
"Windows Defender Firewall: não permitir exceções" – Habilitado
Da Política MDM:
./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/Shielded
./Vendor/MSFT/Firewall/MdmStore/DomainProfile/Protegido
./Vendor/MSFT/Firewall/MdmStore/PublicProfile/Shielded
É possível ver se isso está configurado para não permitir nenhuma regra de Firewall de entrada executando o seguinte (consulte as ressalvas acima em Perfis de Firewall). Este é apenas um snippet do primeiro perfil de Firewall que é retornado no Powershell:
PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore Name : Domain Enabled : True DefaultInboundAction : Block DefaultOutboundAction : Allow AllowInboundRules : False ...
AllowInboundRules: False
significa que nenhuma regra de Firewall de entrada será aplicada.Um usuário passa pelos aplicativos de configuração de Segurança do Windows e verifica o controle "Bloqueia todas as conexões de entrada, incluindo aquelas na lista de aplicativos permitidos".
O Windows dá suporte a uma aceitação do usuário para a mesma configuração que pode ser aplicada por uma Empresa referenciada no nº 2 acima. Os usuários podem abrir a página de configurações de "Segurança do Windows", selecionar a opção "Firewall & proteção de rede", selecionar o Perfil de Firewall que desejam configurar (Domínio, Privado ou Público) e, em "Conexões de entrada", verificar o controle rotulado "Bloqueia todas as conexões de entrada, incluindo aquelas na lista de aplicativos permitidos".
Se isso for definido para o perfil Público (este é o perfil padrão para o WSL vNIC), a regra de Firewall criada pelo HNS para permitir que os pacotes UDP tenham acesso compartilhado será bloqueada.
Essa opção deve ser desmarcada para que a configuração do proxy DNS NAT funcione no WSL, ou o WSL pode ser configurado para usar o Túnel DNS.
A regra de Firewall do HNS para permitir que os pacotes DNS para acesso compartilhado pode se tornar inválida, fazendo referência a um identificador de interface WSL anterior.
Essa é uma falha no HNS que foi corrigida com a versão mais recente do Windows 11. Em versões anteriores, se isso ocorrer, ele não é facilmente detectável, mas tem uma solução simples:
Parar WSL
wsl.exe –shutdown
Exclua a regra antiga do Firewall HNS. Esse comando do PowerShell deve funcionar na maioria dos casos:
Get-NetFirewallRule -Name "HNS*" | Get-NetFirewallPortFilter | where Protocol -eq UDP | where LocalPort -eq 53 | Remove-NetFirewallRule
Remova todos os pontos de extremidade HNS. Observação: se o HNS for usado para gerenciar outros contêineres, como MDAG ou Área Restrita do Windows, eles também deverão ser interrompidos.
hnsdiag.exe delete all
Reinicie ou reinicialize o serviço HNS
Restart-Service hns
Quando o WSL for reiniciado, o HNS criará novas regras de Firewall, direcionando corretamente a interface WSL.
Solução de problemas de acesso à rede no Windows
Se você não tiver acesso à rede, pode ser devido a uma configuração incorreta. Veja se o driver FSE está em execução:
Get-Service FSE
Se isso não mostrar o FSE em execução, verifique se o valor do PortTrackerEnabledMode
Registro é encerrado sob esta chave do Registro:
Get-ItemProperty HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters
Se o FSE não estiver em execução ou instalado e PortTrackerEnabledMode
existir, exclua esse valor do Registro e reinicialize
Maneira manual de excluir adaptadores fantasmas
Adaptadores fantasma ou dispositivos Plug and Play (PnP) fantasma referem-se a componentes de hardware que aparecem no sistema, mas não estão fisicamente conectados. Esses dispositivos "fantasmas" podem causar confusão e confusão nas configurações do sistema. Se você vir adaptadores fantasmas ao executar o WSL em uma VM (Máquina Virtual), siga estas etapas manuais para localizar e excluir esses dispositivos PnP fantasmas. A Microsoft está trabalhando em uma solução automatizada que não exigirá intervenção manual. Mais informações serão fornecidas em breve.
Abrir o Gerenciador de Dispositivos
Exibir > Mostrar dispositivos ocultos
Abrir adaptadores de rede
Clique com o botão direito do mouse no adaptador de rede Ghosted e selecione Desinstalar Dispositivo
Iniciar o WSL ou instalar uma distribuição retorna um código de erro
Siga as instruções para Coletar logs do WSL no repositório do WSL no GitHub para coletar logs detalhados e registrar um problema no nosso GitHub.
Atualização do WSL
Há dois componentes do Subsistema do Windows para Linux que podem exigir atualização.
Para atualizar o subsistema do Windows para Linux em si, use o comando a seguir.
wsl.exe --update
Para atualizar os binários específicos do usuário de distribuição do Linux, use o seguinte comando na distribuição do Linux que você deseja atualizar.
apt-get update | apt-get upgrade
Erros de atualização do Apt-get
Alguns pacotes usam recursos que ainda não implementamos.
udev
, por exemplo, ainda não tem suporte e causa vários erros de apt-get upgrade
.
Para corrigir problemas relacionados ao udev
, siga as seguintes etapas:
Escreva o seguinte para
/usr/sbin/policy-rc.d
e salve suas alterações.#!/bin/sh exit 101
Adicionar permissões de execução a
/usr/sbin/policy-rc.d
:chmod +x /usr/sbin/policy-rc.d
Execute os seguintes comandos:
dpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initctl
"Erro: 0x80040306" na instalação
Isso tem a ver com o fato de não darmos suporte ao console herdado. Para desativar o console herdado:
- Abrir cmd.exe
- Clique com o botão direito do mouse na barra de título -> Propriedades -> Desmarque Usar console herdado
- Clique em OK
"Erro: 0x80040154" após a atualização do Windows
O recurso Subsistema do Windows para Linux pode estar 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 .
Alterando 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á relançar bash.exe para que essa alteração entre em vigor.
O exemplo abaixo muda a configuração regional para en-US
:
sudo update-locale LANG=en_US.UTF8
Problemas de instalação após a restauração do sistema Windows
Exclua a pasta
%SystemRoot%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux
.Aviso
Não faça isso se o recurso opcional estiver totalmente instalado e funcionando.
Habilitar o recurso opcional do WSL (se ainda não estiver)
Reinicializar
lxrun /uninstall /full
Instalar o Bash
Sem acesso à Internet no WSL
Alguns usuários relataram problemas com aplicativos de firewall específicos bloqueando o acesso à Internet no WSL. Os firewalls relatados são:
- Kaspersky
- AVG
- Avast
- Symantec Endpoint Protection
Em alguns casos, desativar o firewall permite o acesso. Em alguns casos, simplesmente ter o firewall instalado procura bloquear o acesso.
Se você estiver usando o Microsoft Defender Firewall, desmarcar "Bloqueia todas as conexões de entrada, incluindo aquelas na lista de aplicativos permitidos". Permite o acesso.
Erro de permissão negada ao usar ping
Para a Atualização de Aniversário do Windows, versão 1607, os privilégios de administrador no Windows são necessários para serem executados ping
no WSL. Para executar ping
, execute o Bash no Ubuntu no Windows como administrador ou execute bash.exe
em um prompt do PowerShell com privilégios de administrador.
Para versões posteriores do Windows, Build 14926+, os privilégios de administrador não são mais necessários.
O Bash está suspenso
Se, ao trabalhar com o bash, você perceber que ele está travado (ou em deadlock) e não responde às entradas, ajude-nos a diagnosticar o problema coletando e relatando um despejo de memória. Observe que essas etapas travarão o sistema. Não faça isso se você não estiver confortável ou salve seu trabalho antes de fazer isso.
Para coletar um despejo de memória:
Altere o tipo de despejo de memória para "despejo de memória completo". Ao alterar o tipo de despejo, anote o tipo atual.
Use as etapas para configurar a falha usando o controle de teclado.
Reproduza o travamento ou o deadlock.
Cause uma falha no sistema usando a sequência de teclas de (2).
O sistema falhará e coletará o despejo de memória.
Depois que o sistema for reinicializado, relate o
memory.dmp
para secure@microsoft.com. O local padrão do arquivo de despejo é%SystemRoot%\memory.dmp
ouC:\Windows\memory.dmp
seC:
é a unidade do sistema. No email, observe que o despejo é para a equipe do WSL ou Bash no Windows.Restaure o tipo de despejo de memória para a configuração original.
Verifique o número da build
Para localizar a arquitetura do computador e o número de build do Windows, abra oSistema> de Configurações>Sobre
Procure os campos Build do SO e Tipo de Sistema.
captura de tela
Para localizar o número de build do Windows Server, execute o seguinte no PowerShell:
systeminfo | Select-String "^OS Name","^OS Version"
Confirmar 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
OpenSSH-Server problemas de conexão
Falha ao tentar conectar o servidor SSH com o seguinte erro: "Conexão fechada pela porta 22 127.0.0.1".
Verifique se o servidor OpenSSH está em execução:
sudo service ssh status
e você seguiu esse tutorial: https://ubuntu.com/server/docs/service-openssh
Interrompa o serviço sshd e inicie o sshd no modo de depuração:
sudo service ssh stop sudo /usr/sbin/sshd -d
Verifique os logs de inicialização e verifique se o HostKeys está disponível e você não vê 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 openssh-server:
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
"O assembly referenciado não pôde ser encontrado." ao habilitar o recurso opcional do WSL
Esse erro está relacionado a estar em um estado de instalação incorreto. Conclua as seguintes etapas para tentar corrigir este problema:
Se você estiver executando o comando habilitar recurso WSL do PowerShell, tente usar a GUI abrindo o menu iniciar, procurando por "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 ambos falharem e você precisar acessar o WSL, considere atualizar no local reinstalando o Windows usando o dispositivo de instalação e selecionando "Manter todos os arquivos" para garantir que seus aplicativos e arquivos sejam preservados. Você pode encontrar instruções sobre como fazer isso na página Reinstalar o Windows 10.
Corrigir erros de permissão (relacionados ao SSH)
Se você estiver vendo este erro:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/user/.ssh/private-key.pem' are too open.
Para corrigir isso, acrescente o seguinte ao arquivo /etc/wsl.conf
:
[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022
Observe que adicionar esse comando incluirá metadados e modificará as permissões de arquivo nos arquivos do Windows vistos do WSL. Consulte as permissões do sistema de arquivos para obter mais informações.
Falha ao usar o WSL remotamente usando o OpenSSH no Windows
Se você estiver usando o openssh-server no Windows e tentando acessar o WSL remotamente, muitos verão esse erro: o arquivo não pode ser acessado pelo sistema.
É um problema conhecido ao usar a versão do WSL da Store. Você pode contornar isso hoje usando o WSL 1 ou usando a versão no Windows do WSL. Consulte o WSL na Microsoft Store para obter mais informações.
A execução de comandos do Windows falha dentro de uma distribuição
Algumas distribuições disponíveis na Microsoft Store ainda não são totalmente compatíveis para executar comandos do Windows prontos para uso. Se você receber um erro "-bash: powershell.exe: comando não encontrado" em execução powershell.exe /c start .
ou qualquer outro comando do Windows, você poderá resolvê-lo seguindo estas etapas:
- Na sua distribuição do WSL, execute o comando
echo $PATH
. Se ele não incluir:/mnt/c/Windows/system32
algo está redefinindo a variável PATH padrão. - Verifique as configurações de perfil com
cat /etc/profile
. Se ele contiver a atribuição da variável PATH, edite o arquivo para comentar o bloco de atribuição PATH com um caractere #. - Verifique se o wsl.conf está presente
cat /etc/wsl.conf
e certifique-se de que ele não contenhaappendWindowsPath=false
, caso contrário, faça um comentário. - Reinicie a distribuição digitando
wsl -t <Distro>
seguido pelo nome de distribuição ou executewsl --shutdown
no PowerShell.
Não é possível inicializar depois de instalar o WSL 2
Estamos cientes de um problema que afeta os usuários em que eles não podem inicializar depois de instalar o WSL 2. Embora diagnosticemos totalmente esse problema, os usuários relataram que alterando o tamanho do buffer ou instalando os drivers certos podem ajudar a resolver isso. Veja este problema do GitHub para ver 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 ICS é usado pelo HNS (Serviço de Rede de Host) para criar a rede virtual subjacente na qual o WSL 2 depende para NAT, DNS, DHCP e compartilhamento de conexão de host.
Desabilitar o serviço ICS (SharedAccess) ou desabilitar o ICS por meio da política de grupo impedirá que a rede HNS do WSL seja criada. Isso resultará em falhas ao criar uma nova imagem do WSL versão 2 e o seguinte erro ao tentar converter uma imagem da versão 1 na versão 2: Não há mais pontos de extremidade disponíveis no mapeador do ponto de extremidade.
Os sistemas que exigem o WSL 2 devem deixar o serviço ICS (SharedAccess) em seu estado de inicialização padrão, Manual (Início do Gatilho), e qualquer política que desabilite o ICS deve ser substituída ou removida. Embora a desabilitação do serviço ICS interrompa o WSL 2 e não recomendamos desabilitar o ICS, partes do ICS podem ser desabilitadas usando essas instruções
Usando versões mais antigas do Windows e do WSL
Há várias diferenças a serem observadas se você estiver executando uma versão mais antiga do Windows e do WSL, como a Atualização de Criadores do Windows 10 (outubro de 2017, Build 16299) ou a 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 porwsl.exe
. Os comandos do Linux podem ser executados no PowerShell, mas para versões iniciais do Windows, talvez seja necessário usar obash
comando. Por exemplo:C:\temp> bash -c "ls -la"
. Os comandos WSL passados parabash -c
são encaminhados para o processo WSL sem modificação. Os caminhos de arquivo devem ser especificados no formato WSL e é preciso ter cuidado com os caracteres de escape relevantes. Por exemplo:C:\temp> bash -c "ls -la /proc/cpuinfo"
ouC:\temp> bash -c "ls -la \"/mnt/c/Program Files\""
. - Para ver quais comandos estão disponíveis para uma distribuição específica, 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 WSL em uma versão anterior do Windows 10, você precisará especificar o caminho do diretório. Por exemplo, para chamar o aplicativo do Bloco de Notas do Windows da linha de comando do WSL, insira:
/mnt/c/Windows/System32/notepad.exe
- Para alterar o usuário padrão para
root
use este comando no PowerShell:C:\> lxrun /setdefaultuser root
e execute Bash.exe para fazer logon:C:\> bash.exe
. Redefina sua senha usando o comando de senha de distribuições:$ 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 originalmente o WSL em uma versão do Windows 10 antes da atualização do Creators (outubro de 2017, Build 16299), recomendamos que você migre todos os arquivos, dados, etc. necessários 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 computador, execute o seguinte de uma linha de comando ou 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 todo o seu sub-conteúdo) usando o Explorador de Arquivos do Windows ou com o PowerShell: Remove-Item -Recurse $env:localappdata/lxss/
.
Código de erro 0x8000FFFF falha inesperada
Esse código de erro normalmente significa que houve uma falha inesperada ou "catastrófica" durante as operações do sistema ao tentar instalar ou usar uma distribuição do Linux (como o Ubuntu) com o WSL. Há muitas razões que podem levar a essa falha. Comece verificando o seguinte:
- Isso é um problema de permissões? Verifique se você está conectado como o usuário esperado em sua linha de comando e tem os privilégios de administrador necessários ao instalar uma distribuição do Linux com o WSL. (Clique com o botão direito do mouse no ícone da barra de tarefas Terminal ou Linha de Comando para selecionar "Executar como Administrador".
- Você atualizou o WSL para a versão mais recente? Use o comando:
wsl --update
para atualizar para a versão mais recente. Talvez você também queira atualizar para a versão mais recente do Windows. - Verifique se você está usando o comando
wsl --install
corretamente e especificando a distribuição do Linux que você pretende instalar. - Tente desligar e reiniciar o WSL usando o comando:
wsl --shutdown
. - Se você estiver usando o Windows Server, verifique se sua versão está atualizada e siga o Guia de Instalação do Windows Server.
- Se você suspeitar que isso possa estar relacionado a arquivos do sistema ausentes ou corrompidos, em um prompt de comando com privilégios elevados (Executar como Administrador), você poderá verificar e reparar arquivos do sistema e/ou reparar a imagem do sistema operacional Windows. Para verificar e reparar arquivos corrompidos ou ausentes do sistema Windows, use o comando:
SFC /SCANNOW
. Para reparar a imagem do Windows em si, use o comando:DISM /Online /Cleanup-Image /RestoreHealth
. - Consulte o problema 9420 relacionado ao repositório de produtos WSL.
Windows Subsystem for Linux