Perguntas frequentes sobre o Subsistema Windows para Linux

Geral

O que é o WSL (Subsistema Windows para Linux)?

O Subsistema do Windows para Linux (WSL) é um recurso do sistema operacional Windows que permite executar um sistema de arquivos linux, juntamente com ferramentas de linha de comando do Linux e aplicativos gui, diretamente no Windows, juntamente com sua área de trabalho e aplicativos tradicionais do Windows.

Consulte a página Sobre para obter mais detalhes.

Para quem é o WSL?

Essa é principalmente uma ferramenta para desenvolvedores, especialmente desenvolvedores Web, aqueles que trabalham em projetos código aberto ou implantação em ambientes de servidor Linux. O WSL é para quem gosta de usar o Bash, ferramentas comuns do Linux (sed, awketc.) e estruturas do Linux (Ruby, Python etc.), mas também gosta de usar ferramentas de produtividade do Windows

O que posso fazer com o WSL?

O WSL permite que você execute o Linux em um shell bash com sua escolha de distribuição (Ubuntu, Debian, OpenSUSE, Kali, Alpine etc. ). Usando o Bash, você pode executar aplicativos e ferramentas de linha de comando do Linux. Por exemplo, digite lsb_release -a e pressione Enter. Você verá os detalhes da distribuição do Linux em execução no momento:

Captura de tela dos detalhes da distribuição

Você também pode acessar o sistema de arquivos do computador local de dentro do shell do Linux Bash. Você encontrará suas unidades locais montadas na /mnt pasta . Por exemplo, sua unidade C: está montada em /mnt/c:

Captura de tela da unidade C montada

Você poderia descrever um fluxo de trabalho de desenvolvimento típico que incorpora o WSL?

O WSL é destinado a desenvolvedores, com a intenção de ser usado como parte de um loop de desenvolvimento interno. Digamos que Pedro esteja criando um pipeline de CI/CD (integração contínua & entrega contínua) e queira testá-lo primeiro em um computador local (laptop) antes de implantá-lo na nuvem. O Pedro poderá habilitar o WSL (& o WSL 2 para melhorar a velocidade e o desempenho) e, em seguida, usar uma instância do Linux Ubuntu autêntica localmente (no laptop) com quaisquer comandos e ferramentas de bash que preferir. Depois de verificar o pipeline de desenvolvimento localmente, Pedro pode enviar por push esse pipeline de CI/CD para a nuvem (ou seja, para o Azure), colocando-o em um contêiner do Docker e enviando o contêiner para uma instância de nuvem em que ele é executado em uma VM Ubuntu pronta para produção.

O que é Bash?

O Bash é uma linguagem de comando e shell baseado em texto popular. É o shell padrão incluído no Ubuntu e em outras distribuições do Linux. Os usuários digitam comandos em um shell para executar scripts e/ou executar comandos e ferramentas para realizar muitas tarefas.

Como isso funciona?

Confira este artigo no blog da Linha de Comando do Windows: Um aprofundamento em como o WSL permite que o Windows acesse arquivos Linux que entram em detalhes sobre a tecnologia subjacente.

Por que usar o WSL em vez do Linux em uma VM?

O WSL requer menos recursos (CPU, memória e armazenamento) do que uma máquina virtual completa. O WSL também permite que você execute aplicativos e ferramentas de linha de comando do Linux juntamente com os aplicativos de linha de comando, da área de trabalho e da loja do Windows, além de acessar os arquivos do Windows de dentro do Linux. Isso habilita você a usar aplicativos do Windows e ferramentas de linha de comando do Linux no mesmo conjunto de arquivos, se desejar.

Por que eu usaria, por exemplo, o Ruby no Linux em vez de no Windows?

Algumas ferramentas multiplataforma foram criadas supondo que o ambiente no qual elas são executadas se comporta como o Linux. Por exemplo, algumas ferramentas pressupõem que elas são capazes de acessar caminhos de arquivo muito longos ou que arquivos/pastas específicos existam. Isso geralmente causa problemas no Windows que, com frequência, se comporta de forma diferente do Linux.

Muitas linguagens como Ruby e Node.js geralmente são portadas para, e são ótimas, no Windows. No entanto, nem todos os proprietários do Ruby Gem ou de bibliotecas do Node/NPM têm suas bibliotecas para dar suporte ao Windows e muitos têm dependências específicas do Linux. Isso geralmente pode resultar em sistemas criados usando ferramentas e bibliotecas com problemas de build e, às vezes, erros de runtime ou comportamentos indesejados no Windows.

Esses são apenas alguns dos problemas que fizeram com que muitas pessoas pedissem à Microsoft para aprimorar as ferramentas de linha de comando do Windows e o que nos levou a fazer parcerias com a Canonical para habilitar as ferramentas de linha de comando do Linux e do Bash nativas para serem executadas no Windows.

O que isso significa para o PowerShell?

Ao trabalhar com projetos OSS, há inúmeros cenários em que é imensamente útil entrar no Bash usando um prompt do PowerShell. O suporte para Bash é complementar e fortalece o valor da linha de comando no Windows, permitindo que o PowerShell e a comunidade do PowerShell aproveitem outras tecnologias populares.

Leia mais no blog da equipe do PowerShell – Bash para Windows: por que é incrível e o que significa para o PowerShell

Com quais processadores o WSL é compatível?

O WSL dá suporte a CPUs x64 e Arm.

Como acesso minha unidade C:?

Os pontos de montagem para discos rígidos no computador local são criados automaticamente e fornecem acesso fácil ao sistema de arquivos do Windows.

/mnt/<drive letter>/

Um uso de exemplo seria cd /mnt/c para acessar c:\

Como configurar o Gerenciador de Credenciais do Git? (Como usar as permissões do Git do Windows no WSL?)

Confira o tutorial Introdução ao uso do Git no Subsistema do Windows para Linux, que apresenta uma seção sobre como configurar o Git Credential Manager e armazenar tokens de autenticação no Gerenciador de Credenciais do Windows.

Como uso um arquivo do Windows com um aplicativo do Linux?

Um dos benefícios do WSL é a capacidade de acessar seus arquivos por meio de aplicativos ou ferramentas do Windows e do Linux.

O WSL monta as unidades fixas do computador na pasta /mnt/<drive> em suas distribuições do Linux. Por exemplo, sua unidade C: está montada em /mnt/c/

Usando suas unidades montadas, você pode editar o código, por exemplo, C:\dev\myproj\ usando o Visual Studio ou o VS Code, e criar/testar esse código no Linux acessando os mesmos arquivos por meio do /mnt/c/dev/myproj.

Saiba mais no artigo Trabalhando em sistemas de arquivos Windows e Linux .

Os arquivos na unidade do Linux são diferentes da unidade montada do Windows?

  1. Os arquivos na raiz do Linux (ou seja /, ) são controlados pelo WSL que se alinha ao comportamento do Linux, incluindo, mas não se limitando a:

    • Arquivos que contêm caracteres de nome de arquivo do Windows inválidos
    • Symlinks criados para usuários não administradores
    • Como alterar atributos de arquivo usando chmod e chown
    • Diferenciação de maiúsculas e minúsculas de arquivo/pasta
  2. Os arquivos em unidades montadas são controlados pelo Windows e têm os seguintes comportamentos:

    • Suporte à diferenciação de maiúsculas e minúsculas
    • Todas as permissões são definidas para refletir melhor as permissões do Windows

Como desinstalar uma distribuição WSL?

Para remover uma distribuição do WSL e excluir todos os dados associados a essa distribuição do Linux, execute wsl --unregister <distroName> em que <distroName> é o nome da distribuição do Linux, que pode ser visto na lista no wsl -l comando .

Além disso, você pode desinstalar o aplicativo de distribuição do Linux em seu computador, assim como qualquer outro aplicativo da loja.

Para saber mais sobre comandos wsl, consulte o artigo Comandos básicos para WSL.

Como executar um servidor OpenSSH?

O OpenSSH é fornecido com o Windows como um recurso opcional. Consulte o documento Instalar OpenSSH . Os privilégios de administrador no Windows são necessários para executar o OpenSSH no WSL. Para executar um servidor OpenSSH, execute sua distribuição WSL (ou seja, Ubuntu) ou o Terminal do Windows como administrador. Há vários recursos por aí abrangendo cenários SSH com WSL. Confira os artigos do blog de Scott Hanselman: Como fazer SSH em um Computador Windows 10 do Linux OU windows ou em qualquer lugar, Como fazer SSH no WSL2 no Windows 10 de um computador externo, A MANEIRA FÁCIL de SSH no Bash e WSL2 no Windows 10 de um computador externo e Como usar o OpenSSSH interno do Windows 10 para entrar automaticamente no SSH em um computador Linux remoto.

Como alterar o idioma de exibição do WSL?

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 sua distribuição WSL para que essa alteração entre em vigor.

O exemplo abaixo altera a localidade para en-US:

sudo update-locale LANG=en_US.UTF8

Por que não tenho acesso à Internet do 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
  5. F-Secure

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

Como acessar uma porta do WSL no Windows?

O WSL compartilha o endereço IP do Windows, pois ele é executado no Windows. Assim, você pode acessar qualquer porta no localhost, por exemplo, se você tivesse conteúdo da Web na porta 1234, poderia https://localhost:1234 no seu navegador do Windows. Para obter mais informações, consulte Acessando aplicativos de rede.

Como fazer backup das distribuições do WSL ou movê-las de uma unidade para outra?

A melhor maneira de fazer backup ou mover suas distribuições é por meio dos comandos de exportação/importação disponíveis no Windows Versão 1809 e posterior. Você pode exportar toda a distribuição para um tarball usando o comando wsl --export. Em seguida, você pode importar essa distribuição de volta para o WSL usando o wsl --import comando , que pode nomear um novo local de unidade para a importação, permitindo que você faça backup e salve estados de (ou mova) suas distribuições WSL.

Observe que os serviços de backup tradicionais que fazem backup de arquivos em suas pastas AppData (como Backup do Windows) não corromperão seus arquivos do Linux.

Posso usar o WSL para cenários de produção?

O WSL foi projetado e criado para usar com fluxos de trabalho de desenvolvimento de loop interno. Há recursos de design no WSL que o tornam ótimo para essa finalidade, mas podem torná-lo desafiador para cenários relacionados à produção em comparação com outros produtos. Nosso objetivo é deixar claro como o WSL difere de um ambiente de VM regular, para que você possa tomar a decisão sobre se ele atende às suas necessidades de negócios.

As diferenças main entre o WSL e um ambiente de produção tradicional são:

  • O WSL tem uma VM de utilitário leve que inicia, para e gerencia recursos automaticamente.
  • Se você não tiver identificadores de arquivo abertos para processos do Windows, a VM do WSL será desligada automaticamente. Isso significa que, se você estiver usando-o como um servidor Web, o SSH nele para executar seu servidor e, em seguida, sair, a VM poderá ser desligada porque está detectando que os usuários terminaram de usá-lo e limpo seus recursos.
  • Os usuários do WSL têm acesso total às instâncias do Linux. O tempo de vida da VM, as distribuições WSL registradas, etc., são todos acessíveis pelo usuário e podem ser modificados pelo usuário.
  • O WSL fornece automaticamente acesso de arquivo aos arquivos do Windows.
  • Os caminhos do Windows são acrescentados ao seu caminho por padrão, o que pode causar um comportamento inesperado para determinados aplicativos Linux em comparação com um ambiente linux tradicional.
  • O WSL pode executar executáveis do Windows do Linux, o que também pode levar a um ambiente diferente de uma VM linux tradicional.
  • O kernel do Linux usado pelo WSL é atualizado automaticamente.
  • O acesso à GPU no WSL ocorre por meio de um /dev/dxg dispositivo, que roteia chamadas de GPU para a GPU do Windows. Essa configuração é diferente de uma configuração tradicional do Linux.
  • Há outras diferenças menores em comparação com o Linux bare-metal e espera-se que mais diferenças surjam no futuro à medida que o fluxo de trabalho de desenvolvimento de loop interno é priorizado.

Como posso transferir meus arquivos WSL de um computador para outro?

Há algumas maneiras de realizar essa tarefa:

  • A maneira mais fácil é usar o wsl --export --vhd comando para exportar sua distribuição WSL para um arquivo VHD. Em seguida, você pode copiar esse arquivo para outro computador e importá-lo usando wsl --import --vhd. Consulte o documento de comandos para obter mais informações.
  • A implementação acima requer muito espaço em disco. Se você não tiver muito espaço em disco, poderá usar técnicas do Linux para mover seus arquivos:
    • Use tar -czf <tarballName> <directory> para criar uma tarball de seus arquivos. Em seguida, você pode copiar esses arquivos específicos para seu novo computador e executar tar -xzf <tarballName> para extraí-los.
    • Você também pode exportar uma lista de pacotes instalados por meio apt de um comando como esse: dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txt e reinstalar esses mesmos pacotes em outro computador com um comando como sudo apt install -y $(cat package_list.txt) depois de transferir o arquivo.

WSL 2

O WSL 2 usa o Hyper-V? Ele estará disponível no Windows 10 Home e Windows 11 Home?

O WSL 2 está disponível em todos os SKUs da área de trabalho em que o WSL está disponível, incluindo o Windows 10 Home e Windows 11 Home.

A versão mais recente do WSL usa a arquitetura do Hyper-V para habilitar a virtualização. Essa arquitetura estará disponível no componente opcional “Plataforma de máquina virtual”. Esse componente opcional estará disponível em todos os SKUs. Você pode esperar ver mais detalhes sobre essa experiência perto do lançamento do WSL 2.

O que acontecerá com o WSL 1? Ele será abandonado?

No momento, não temos planos para substituir o WSL 1. Você pode executar as distribuições do WSL 1 e do WSL 2 lado a lado e pode atualizar e fazer downgrade de qualquer distribuição a qualquer momento. Adicionar o WSL 2 como uma nova arquitetura proporciona uma plataforma melhor para a equipe do WSL fornecer recursos que tornam o WSL um modo incrível de executar um ambiente Linux no Windows.

Poderei executar o WSL 2 e outras ferramentas de virtualização de terceiros, como VMware ou VirtualBox?

Alguns aplicativos de terceiros não funcionam quando o Hyper-V está em uso, o que significa que eles não poderão ser executados quando o WSL 2 estiver habilitado, como VMware e VirtualBox. No entanto, recentemente, o VirtualBox e o VMware lançaram versões compatíveis com Hyper-V e WSL2. Saiba mais sobre as alterações no VirtualBox aqui e as alterações no VMware aqui. Para solucionar problemas, dê uma olhada nas discussões sobre problemas do VirtualBox no repositório WSL no GitHub.

Estamos trabalhando consistentemente em soluções para dar suporte à integração de terceiros do Hyper-V. Por exemplo, expomos um conjunto de APIs, chamado Plataforma de Hipervisor que provedores de virtualização de terceiros podem usar para tornar o software compatível com o Hyper-V. Isso permite que os aplicativos usem a arquitetura do Hyper-V para emulação, como o Google Android Emulator e o VirtualBox 6 e superiores, que agora são compatíveis com o Hyper-V.

Consulte o repositório de problemas do WSL para obter mais informações e discussões sobre problemas do WSL 2 com o VirtualBox 6.1.

*Se você estiver procurando uma máquina virtual do Windows, os downloads de VMWare, Hyper-V, VirtualBox e Parallels estão disponíveis no Centro de Desenvolvimento do Windows.

Posso acessar a GPU no WSL 2? Há planos para aumentar o suporte a hardware?

Lançamos suporte para acessar a GPU dentro das distribuições do WSL 2! Isso significa que agora você poderá usar o WSL para cenários de aprendizado de máquina, inteligência artificial e ciência de dados mais facilmente quando conjuntos de Big Data estiverem envolvidos. Confira o tutorial Introdução ao suporte a GPU. A partir de agora, o WSL 2 não inclui suporte serial ou suporte a dispositivos USB. Estamos investigando a melhor maneira de adicionar esses recursos. No entanto, o suporte a USB agora está disponível por meio do projeto USBIPD-WIN. Confira Conectar dispositivos USB para obter etapas para configurar o suporte a dispositivos USB.

O WSL 2 pode usar aplicativos de rede?

Sim, em geral, os aplicativos de rede funcionarão melhor e serão mais rápidos com o WSL 2, pois ele oferece compatibilidade completa de chamadas do sistema. No entanto, a arquitetura do WSL 2 usa componentes de rede virtualizados, o que significa que o WSL 2 se comportará de forma semelhante a uma máquina virtual. As distribuições do WSL 2 terão um endereço IP diferente do computador host (sistema operacional Windows). Para obter mais informações, consulte Acessando aplicativos de rede com WSL.

Posso executar o WSL 2 em uma máquina virtual?

Sim! Você precisa verificar se a máquina virtual tem a virtualização aninhada habilitada. Isso pode ser habilitado em seu host do Hyper-V pai executando o seguinte comando em uma janela do PowerShell com privilégios de administrador:

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

Substitua '<VMName>' pelo nome da máquina virtual.

Posso usar wsl.conf no WSL 2?

O WSL 2 é compatível com o mesmo arquivo wsl.conf que o WSL 1 usa. Isso significa que todas as opções de configuração que você definiu em uma distribuição do WSL 1 (como a montagem automática de unidades do Windows, a habilitação ou desabilitação da interoperabilidade, a alteração do diretório em que as unidades do Windows serão montadas etc.) funcionarão dentro do WSL 2. Você pode saber mais sobre as opções de configuração no WSL na página Gerenciamento de Distribuição . Saiba mais sobre o suporte para unidades de montagem, discos, dispositivos ou VHDs (discos rígidos virtuais) no artigo Montar um disco Linux no WSL 2 .

Onde posso fornecer comentários?

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:

Se você quiser ficar por dentro das últimas notícias do WSL, acesse: