Geral
O que é o Windows Subsystem for Linux (WSL)?
O Subsistema 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 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 é a WSL?
Esta é principalmente uma ferramenta para desenvolvedores, especialmente desenvolvedores web, aqueles que trabalham em projetos de código aberto, ou implantando em ambientes de servidor Linux. WSL é para quem gosta de usar Bash, ferramentas comuns do Linux (sed, awk, etc.) e frameworks Linux-first (Ruby, Python, etc.), mas também gosta de usar ferramentas de produtividade do Windows.
O que posso fazer com a WSL?
WSL permite que você execute Linux em um shell Bash com sua escolha de distribuição (Ubuntu, Debian, OpenSUSE, Kali, Alpine, etc). Usando o Bash, você pode executar ferramentas e aplicativos Linux de linha de comando. Por exemplo, digite lsb_release -a e pressione enter, você verá detalhes da distro Linux em execução no momento:
Você também pode acessar o sistema de arquivos da sua máquina local a partir do shell Linux Bash – você encontrará suas unidades locais montadas sob a /mnt pasta. Por exemplo, a unidade C: está montada em /mnt/c:
Você poderia descrever um fluxo de trabalho de desenvolvimento típico que incorpora WSL?
A WSL tem como alvo um público de desenvolvedores com a intenção de ser usada como parte de um ciclo de desenvolvimento interno. Digamos que Sam esteja criando um pipeline de CI/CD (Continuous Integration & Continuous Delivery) e queira testá-lo primeiro em uma máquina local (laptop) antes de implantá-lo na nuvem. Sam pode habilitar o WSL (& WSL 2 para melhorar a velocidade e o desempenho) e, em seguida, usar uma instância genuína do Linux Ubuntu localmente (no laptop) com quaisquer comandos e ferramentas Bash que preferirem. Depois que o pipeline de desenvolvimento é verificado localmente, Sam pode então enviar esse pipeline de CI/CD para a nuvem (ou seja, Azure) transformando-o em um contêiner do Docker e empurrando o contêiner para uma instância de nuvem onde é executado em uma VM Ubuntu pronta para produção.
O que é o Bash?
Bash é um shell baseado em texto popular e linguagem de comando. É o shell padrão incluído no Ubuntu e outras distros Linux. Os usuários digitam comandos em um shell para executar scripts e/ou executar comandos e ferramentas para realizar muitas tarefas.
Como funciona?
Confira este artigo no blog da linha de comando do Windows: A Deep Dive Into How WSL Allows Windows to Access Linux Files (Um mergulho profundo em como o WSL permite que o Windows acesse arquivos do Linux ), que entra em detalhes sobre a tecnologia subjacente.
Por que eu usaria WSL em vez de 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 ferramentas e aplicativos de linha de comando do Linux junto com seus aplicativos de linha de comando, desktop e loja do Windows, e acesse seus arquivos do Windows de dentro do Linux. Isso permite que você use aplicativos do Windows e ferramentas de linha de comando do Linux no mesmo conjunto de arquivos, se desejar.
Por que eu usaria, por exemplo, Ruby no Linux em vez de no Windows?
Algumas ferramentas multiplataforma foram construídas assumindo que o ambiente em que são executadas se comporta como o Linux. Por exemplo, algumas ferramentas assumem que são capazes de aceder a caminhos de ficheiros muito longos ou que existem ficheiros/pastas específicos. Isso geralmente causa problemas no Windows, que muitas vezes se comporta de forma diferente do Linux.
Muitos idiomas como Ruby e Node.js são frequentemente portados e executados muito bem no Windows. No entanto, nem todos os proprietários de bibliotecas Ruby Gem ou node/NPM portam suas bibliotecas para suportar o Windows, e muitos têm dependências específicas do Linux. Isso geralmente pode resultar em sistemas criados usando essas ferramentas e bibliotecas que sofrem de erros de compilação e, às vezes, de tempo de execução ou comportamentos indesejados no Windows.
Estes são apenas alguns dos problemas que levaram muitas pessoas a pedir à Microsoft para melhorar as ferramentas de linha de comando do Windows e o que nos levou a fazer parceria com a Canonical para permitir que as ferramentas de linha de comando nativas Bash e Linux sejam executadas no Windows.
O que isso significa para o PowerShell?
Ao trabalhar com projetos OSS, há vários cenários em que é imensamente útil cair no Bash a partir de um prompt do PowerShell. O suporte a 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
Quais processadores são compatíveis com o WSL?
WSL suporta x64 e Arm64 CPUs.
Como faço para acessar minha unidade C:?
Os pontos de montagem para discos rígidos na máquina local são criados automaticamente e fornecem fácil acesso ao sistema de arquivos do Windows.
/mnt/<letra> da unidade/
Exemplo de uso seria cd /mnt/c acessar c:\
Como configuro o Git Credential Manager? (Como faço para usar minhas permissões do Windows Git no WSL?)
Consulte o tutorial Introdução ao uso do Git no Subsistema Windows para Linux, que apresenta uma seção sobre como configurar o Git Credential Manager e armazenar tokens de autenticação no Windows Credential Manager.
Como faço para usar um arquivo do Windows com um aplicativo Linux?
Um dos benefícios do WSL é poder acessar seus arquivos por meio de aplicativos ou ferramentas Windows e Linux.
O WSL monta as unidades fixas da sua máquina sob a /mnt/<drive> pasta em suas distribuições Linux. Por exemplo, a unidade C: está montada em /mnt/c/.
Usando suas unidades montadas, você pode editar código, por exemplo, C:\dev\myproj\ usando Visual Studio ou VS Code, e compilar/testar esse código no Linux acessando os mesmos arquivos via /mnt/c/dev/myproj.
Saiba mais no artigo Trabalhando em sistemas de arquivos Windows e Linux .
Os arquivos na unidade Linux são diferentes da unidade montada do Windows?
Os arquivos sob a raiz Linux (ou seja
/, ) são controlados pelo WSL que se alinha com o comportamento do Linux, incluindo, mas não limitado a:- Arquivos que contêm caracteres de nome de arquivo inválidos do Windows
- Links simbólicos criados para usuários não administradores
- Alterando atributos de arquivo através de
chmodechown - Diferenciação de maiúsculas e minúsculas de ficheiros
Os arquivos em unidades montadas são controlados pelo Windows e têm os seguintes comportamentos:
- Suporte a sensibilidade de maiúsculas e min
- Todas as permissões são definidas para refletir melhor as permissões do Windows
Como desinstalo uma distribuição WSL?
Para remover uma distribuição do WSL e excluir todos os dados associados a essa distribuição Linux, execute wsl --unregister <Distro> onde <Distro> é o nome da sua distro Linux, que pode ser visto na lista no wsl -l comando.
Além disso, você pode desinstalar o aplicativo de distribuição Linux em sua máquina, assim como qualquer outro aplicativo da loja.
Para saber mais sobre comandos wsl, consulte o artigo Comandos básicos para WSL.
Como faço para executar um servidor OpenSSH?
OpenSSH vem com o Windows como um recurso opcional. Consulte o documento Instalar o 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 Terminal do Windows como administrador. Existem vários recursos cobrindo cenários SSH com WSL. Confira os artigos do blog de Scott Hanselman: Como SSH em uma máquina Windows 10 a partir de Linux OU Windows OU em qualquer lugar, Como SSH em WSL2 no Windows 10 a partir de uma máquina externa, A MANEIRA FÁCIL como SSH em Bash e WSL2 no Windows 10 a partir de uma máquina externa, e Como usar o OpenSSH integrado do Windows 10 para SSH automaticamente em uma máquina Linux remota.
Como faço para alterar o idioma de exibição do WSL?
A instalação do WSL tentará alterar automaticamente a localidade do Ubuntu para corresponder à localidade da sua instalação do Windows. Se você não quiser esse comportamento, você pode executar este comando para alterar a localidade do Ubuntu após a conclusão da instalação. Você terá que reiniciar 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 a partir da WSL?
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
- Proteção de ponto final da Symantec
- F-Secure
Em alguns casos, desligar o firewall permite o acesso. Em alguns casos, simplesmente ter o firewall instalado parece bloquear o acesso.
Como faço para acessar uma porta do WSL no Windows?
A WSL partilha o endereço IP do Windows, uma vez que está a ser executado no Windows. Como tal, você pode acessar qualquer porta no localhost, por exemplo, se você tivesse conteúdo da web na porta 1234, você poderia https://localhost:1234 entrar no seu navegador do Windows. Para obter mais informações, consulte Acessando aplicativos de rede.
Como posso fazer backup das minhas distribuições WSL?
A melhor maneira de fazer backup ou mover suas distribuições é através dos comandos de importação de exportação/ disponíveis no Windows Versão 1809 e posterior. Você pode exportar toda a sua distribuição para um tarball usando o wsl --export comando. 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. Para saber mais sobre como mover suas distribuições WSL, consulte Como posso transferir meus arquivos WSL de uma máquina para outra?.
Os serviços de backup tradicionais que fazem backup de arquivos em suas pastas AppData (como o Backup do Windows) não corromperão seus arquivos do Linux.
Posso usar o WSL para cenários de produção?
Sim, no entanto, o WSL foi projetado e construído para ser usado 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 principais diferenças entre o WSL e um ambiente de produção tradicional são:
- A 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 WSL será desligada automaticamente. Isso significa que, se você estiver usando-o como um servidor Web, SSH nele para executar seu servidor e, em seguida, sair, a VM pode desligar porque está detetando que os usuários terminaram de usá-lo e limpará seus recursos.
- Os usuários do WSL têm acesso total às suas instâncias do Linux. O tempo de vida da VM, as distribuições WSL registradas, etc., são acessíveis pelo usuário e podem ser modificadas pelo usuário.
- A WSL dá automaticamente acesso a ficheiros do Windows.
- Os caminhos do Windows são anexados 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 a partir do Linux, o que também pode levar a um ambiente diferente de uma VM Linux tradicional.
- O kernel Linux usado pelo WSL é atualizado automaticamente.
- O acesso à GPU no WSL acontece através de um
/dev/dxgdispositivo, que encaminha as chamadas da GPU para a GPU do Windows. Esta configuração é diferente de uma configuração Linux tradicional. - Existem 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 uma máquina para outra?
Existem algumas maneiras de realizar essa tarefa:
- A maneira mais fácil é usar o
wsl --export <Distro> <FileName> --format vhdcomando para exportar sua distribuição WSL para um arquivo VHD. Em seguida, você pode copiar esse arquivo para outra máquina e importá-lo usandowsl --import <Distro> <InstallLocation> <FileName> --vhdo . Consulte os comandos de importação e exportação no documento de comandos básicos do WSL 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, você pode usar técnicas do Linux para mover seus arquivos:
- Use
tar -czf <tarballName> <directory>para criar um tarball de seus arquivos. Em seguida, você pode copiar esses arquivos específicos para sua nova máquina e executartar -xzf <tarballName>para extraí-los. - Você também pode exportar uma lista de pacotes instalados através
aptde um comando assim: e,dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txtem seguida, reinstalar esses mesmos pacotes em outra máquina com um comando comosudo apt install -y $(cat package_list.txt)depois de transferir o arquivo.
- Use
Como posso mover minha distribuição WSL para uma unidade ou local diferente?
Você pode fazer isso usando o PowerShell. Abaixo estão os comandos e explicações necessárias para cada etapa. Abra uma janela do PowerShell e ajuste os valores entre as <> tags para se adequar ao seu caso de uso específico:
# Export your distro to that folder as a VHD
wsl --export <Distro, e.g: Ubuntu> <FileName, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx> --format vhd
# Unregister your old distro
# Please note this will erase your existing distro's file contents, please ensure the backup file you created in the 2nd step is present at the location and that the export operation completed successfully.
# Please exercise caution when using this command, as it is destructive and could cause data loss.
wsl --unregister <Distro, e.g: Ubuntu>
# Import your VHD backup
wsl --import-in-place <Distro, e.g: Ubuntu> <FileName, e.g: D:\WSLDistros\Ubuntu\ext4.vhdx>
Como definir sua conta de usuário padrão
Você pode configurar sua conta de usuário padrão definindo um wsl.conf valor de user.default=<name>
WSL 2
O WSL 2 está disponível no Windows 10 Home e Windows 11 Home?
Yes. O WSL 2 está disponível em todas as SKUs de área de trabalho onde o WSL está disponível, incluindo o Windows 10 Home e o Windows 11 Home.
Especificamente, o WSL2 requer dois recursos para ser habilitado:
- "Virtual Machine Platform" (um subconjunto de Hyper-V)
- "Subsistema Windows para Linux"
O WSL 2 usa o Hyper-V?
A versão mais recente do WSL usa um subconjunto da arquitetura Hyper-V para habilitar sua virtualização. Esse subconjunto é fornecido como um componente opcional chamado "Virtual Machine Platform", disponível em todas as SKUs de desktop.
O que vai acontecer com a WSL 1? Será abandonado?
Atualmente, não temos planos de depreciar a WSL 1. Você pode executar distros WSL 1 e WSL 2 lado a lado, e pode atualizar e fazer downgrade de qualquer distro a qualquer momento. Adicionar o WSL 2 como uma nova arquitetura apresenta uma plataforma melhor para a equipe do WSL fornecer recursos que tornam o WSL uma maneira 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 podem funcionar quando 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, tanto o VirtualBox quanto o VMware lançaram versões que suportam Hyper-V e WSL2. Saiba mais sobre as alterações do VirtualBox aqui e as alterações da VMware aqui. Para solucionar problemas, dê uma olhada nas discussões de problemas do VirtualBox no repositório WSL no GitHub. O StackOverflow também oferece uma dica útil: Como fazer com que o VirtualBox 6.0 e o WSL funcionem ao mesmo tempo.
Estamos trabalhando consistentemente em soluções para dar suporte à integração de terceiros do Hyper-V. Por exemplo, expomos um conjunto de APIs chamado Hypervisor Platform que provedores de virtualização de terceiros podem usar para tornar seu software compatível com o Hyper-V. Isso permite que os aplicativos usem a arquitetura Hyper-V para sua emulação, como o emulador do Google Android e o VirtualBox 6 e superior, que agora são compatíveis com o Hyper-V.
Consulte o repositório de problemas da WSL para obter mais informações e discussões sobre os problemas da WSL 2 com o VirtualBox 6.1.
*Se você estiver procurando por uma máquina virtual do Windows, os downloads de VM 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 de hardware?
Lançamos suporte para acessar a GPU dentro das distribuições WSL 2! Isso significa que agora você pode 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 estão envolvidos. Confira o tutorial de introdução ao suporte à 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 USB está agora disponível através do projeto USBIPD-WIN. Consulte Ligar dispositivos USB para obter passos para configurar o suporte de 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, uma vez que oferece compatibilidade total com chamadas do sistema. No entanto, a arquitetura 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 WSL 2 terão um endereço IP diferente da máquina 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 certificar-se de que a máquina virtual tem a virtualização aninhada habilitada. Isso pode ser habilitado em seu host pai Hyper-V executando o seguinte comando em uma janela do PowerShell com privilégios de administrador:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Certifique-se de substituir '<VMName>' pelo nome da sua máquina virtual.
Posso usar wsl.conf no WSL 2?
O WSL 2 suporta o mesmo arquivo wsl.conf que o WSL 1 usa. Isso significa que todas as opções de configuração definidas em uma distro WSL 1, como a montagem automática de unidades do Windows, a ativação ou desativação da interoperabilidade, a alteração do diretório onde as unidades do Windows serão montadas, etc., funcionarão dentro da 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 montagem de unidades, discos, dispositivos ou VHDs (discos rígidos virtuais) no artigo Montar um disco Linux no WSL 2 .
1: Changelog para VirtualBox 6.02: Hyper-V API3: Hyper-V suporte a emulador Android4: VMware Workstation Tech Preview 20H1 — Suporte a VBS Hyper-V/Host
Onde posso dar feedback?
O assuntos do repositório de produtos WSL permitem-lhe:
- 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 na sua pesquisa. Por favor, considere comentar ou dar um 'gosto' em quaisquer questões em aberto que gostaria de expressar o seu interesse em avançar como uma prioridade.
-
Registre um novo problema. Se você encontrou um problema com a WSL e não parece haver um problema existente, você pode selecionar o botão verde Novo problema e, em seguida, escolher WSL - Relatório de Bugs. Você precisará incluir um título para o problema, seu número de compilação do Windows (execute
cmd.exe /c verpara ver sua compilação atual #), se você estiver executando o WSL 1 ou 2, sua versão atual do kernel Linux # (executewsl.exe --statusoucat /proc/version), a versão # da sua distribuição (executelsb_release -r), quaisquer outras versões de software envolvidas, as etapas de reprodução, comportamento esperado, comportamento real, e logs de diagnóstico, se disponíveis e apropriados. Para obter mais informações, consulte contribuindo para o WSL. - Submeter uma solicitação de funcionalidade selecionando o botão verde Nova questão e, em seguida, selecione Solicitação de funcionalidade. Terá de responder a algumas perguntas descrevendo o seu pedido.
Você também pode:
- Registre um problema de documentação usar o repositório de documentos do WSL. Para contribuir com os documentos WSL, consulte o guia do colaborador do Microsoft Docs .
- Registre um problema no Terminal do Windows usando o repositório do produto Terminal do Windows se o problema estiver mais relacionado ao Terminal do Windows, ao Console do Windows ou à interface do usuário da linha de comando.
Se você quiser ficar atualizado com as últimas notícias da WSL, você pode fazê-lo com:
- Nosso blog de equipe de linha de comando
- X. Por favor, siga @craigaloewen no X para saber de notícias, atualizações, etc.
Como resolver 'Erro: 0x800704ec Este programa está bloqueado pela política de grupo. Para obter mais informações, entre em contato com o administrador do sistema.'?
Este erro é causado por uma política de grupo que bloqueia a WSL. Para resolver, primeiro execute o comando wsl --update para atualizar para a versão mais recente da Loja. Se isso não resolver o problema, entre em contato com o administrador. Saiba mais sobre a diferença entre a WSL da caixa de entrada e a versão Store da WSL: WSL na Microsoft Store.
O LxssManager foi substituído pelo WSLService?
Sim, o LxssManager foi substituído pelo WSLService quando o WSL passou de um componente da caixa de entrada para ser atendido pela Microsoft Store.