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.
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
, awk
etc.) e estruturas do Linux (Ruby, Python etc.), mas também gosta de usar ferramentas de produtividade do Windows
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:
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
:
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 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.
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.
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.
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.
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
O WSL dá suporte a CPUs x64 e Arm.
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.
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 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
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
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.
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.
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
Alguns usuários relataram problemas com aplicativos de firewall específicos que bloqueiam o acesso à Internet no WSL. Os firewalls relatados são:
- Kaspersky
- AVG
- Avast
- Symantec Endpoint Protection
- F-Secure
Em alguns casos, desligar o firewall permite o acesso. Em outros, simplesmente ter o firewall instalado bloqueia o acesso.
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.
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.
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.
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 usandowsl --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 executartar -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 comosudo apt install -y $(cat package_list.txt)
depois de transferir o arquivo.
- Use
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.
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.
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.
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.
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.
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 .
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 (executewsl.exe --status
oucat /proc/version
), o número da versão da sua distribuição (executelsb_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:
- Registrar um problema de documentação usando o repositório de documentos do WSL. Para contribuir com os documentos do WSL, confira o Guia do colaborador do Microsoft Docs.
- Registre um problema do Terminal do Windows usando o repositório de produto do Terminal do Windows se o problema estiver relacionado mais ao Terminal do Windows, ao Console do Windows ou à interface do usuário da linha de comando.
Se você quiser ficar por dentro das últimas notícias do WSL, acesse:
- Nosso blog da equipe de linha de comando
- O Twitter. Siga @craigaloewen no Twitter para saber mais sobre notícias, atualizações etc.