Comparar as versões do WSL

Saiba mais sobre diferentes versões do WSL, incluindo as razões pelas quais o WSL 2 agora é o padrão, e os cenários ou exceções específicos que podem justificar a troca da distribuição do Linux instalada para a arquitetura anterior do WSL 1.

Comparação entre o WSL 1 e o WSL 2

Este guia comparará o WSL 1 com o WSL 2, incluindo exceções para usar o WSL 1 em vez do WSL 2. As principais diferenças entre o WSL 1 e o WSL 2 são o uso de um kernel do Linux real dentro de uma VM gerenciada, suporte para compatibilidade completa de chamada do sistema e desempenho em sistemas operacionais Linux e Windows. O WSL 2 é a versão padrão atual ao instalar uma distribuição do Linux e usa o que há de mais recente e melhor em tecnologia de virtualização para executar um kernel Linux dentro de uma VM (máquina virtual) de utilitário leve. O WSL2 executa distribuições Linux, como contêineres isolados dentro da VM gerenciada. Se sua distribuição estiver executando o WSL 1 e você quiser atualizar para o WSL 2, confira atualizar do WSL 1 para o WSL 2.

Comparação de recursos

Recurso WSL 1 WSL 2
Integração entre o Windows e o Linux
Tempos de inicialização rápidos
Menor volume de recursos em comparação com as Máquinas Virtuais tradicionais
É executado com as versões atuais do VMware e do VirtualBox
VM gerenciada
Kernel do Linux completo
Compatibilidade total com a chamada do sistema
Desempenho entre sistemas de arquivos do sistema operacional
Suporte ao systemd
Suporte a IPv6

Como você pode ver na tabela de comparação acima, a arquitetura do WSL 2 supera a do WSL 1 de várias maneiras, com exceção do desempenho em sistemas de arquivos de sistema operacional, o que pode ser resolvido armazenando os arquivos de projeto no mesmo sistema operacional que as ferramentas que você está executando para trabalhar no projeto.

O WSL 2 só está disponível no Windows 11 ou no Windows 10, versão 1903, build 18362 ou superior. Verifique sua versão do Windows selecionando a tecla do logotipo do Windows + R, digite winver, selecione OK. (Ou digite o comando ver no prompt de comando do Windows). Você pode precisar atualizar para a última versão do Windows. Para builds inferiores ao 14393, não há nenhum suporte para o WSL.

Para obter mais informações sobre as atualizações mais recentes do WSL 2, consulte o blog da Linha de Comando do Windows, incluindo o suporte a Systemd agora está disponível na atualização WSL e WSL de setembro de 2023 para obter mais informações sobre o suporte a IPv6.

Observação

O WSL 2 funcionará como VMware 15.5.5+ e, embora o VirtualBox 6+ declare que há suporte ao WSL, ainda há desafios significativos que o tornam sem suporte. Saiba mais nas Perguntas frequentes.

Novidades no WSL 2

O WSL 2 é uma importante revisão da arquitetura subjacente e usa a tecnologia de virtualização e um kernel do Linux para habilitar os novos recursos. As metas principais dessa atualização são aumentar o desempenho do sistema de arquivos e adicionar compatibilidade total com chamadas do sistema.

Arquitetura do WSL 2

Uma experiência de VM tradicional poderá ter inicialização lenta, ser isolada, consumir muitos recursos e exigir o seu tempo para gerenciá-la. O WSL 2 não tem esses atributos.

O WSL 2 fornece os benefícios do WSL 1, incluindo integração direta entre o Windows e o Linux, tempos de inicialização rápidos, um pequeno volume de recursos e não requer nenhuma configuração ou gerenciamento de VM. Embora o WSL 2 use uma VM, ele é gerenciado e executado nos bastidores, deixando você com a mesma experiência do usuário que o WSL 1.

Kernel do Linux completo

O kernel do Linux no WSL 2 é criado pela Microsoft usando a ramificação estável mais recente, com base na origem disponível em kernel.org. Esse kernel foi especialmente ajustado para o WSL 2, otimizando o tamanho e o desempenho para fornecer uma experiência incrível do Linux no Windows. O kernel será atendido pelas atualizações do Windows, o que significa que você obterá as correções de segurança e aprimoramentos de kernel mais recentes sem precisar gerenciá-las por conta própria.

O kernel do Linux do WSL 2 é de software livre. Se você quiser saber mais, confira a postagem no blog Como enviar um kernel do Linux com o Windows escrito pela equipe que o criou.

Saiba mais nas Notas sobre a versão do kernel do Subsistema do Windows para Linux.

Maior desempenho de E/S de arquivo

Operações com uso intensivo de arquivo, como comandos git clone, npm install, apt update, apt upgrade e muito mais, são visivelmente mais rápidas com o WSL 2.

O aumento da velocidade real dependerá de qual aplicativo você está executando e de como ele está interagindo com o sistema de arquivos. As versões iniciais do WSL 2 são executadas até 20 vezes mais rapidamente em comparação com o WSL 1 ao desempacotar um tarball compactado e de duas a cinco vezes mais rapidamente ao usar os comandos git clone, npm install e cmake em vários projetos.

Compatibilidade total com a chamada do sistema

Os binários do Linux usam chamadas do sistema para executar funções, como acessar arquivos, solicitar memória, criar processos e muito mais. Enquanto o WSL 1 usava uma camada de conversão criada pela equipe do WSL, o WSL 2 inclui o próprio kernel Linux com compatibilidade total com a chamada do sistema. Os benefícios incluem:

  • Um conjunto totalmente novo de aplicativos que você pode executar dentro do WSL, como o Docker e muito mais.

  • Todas as atualizações para o kernel do Linux estão imediatamente prontas para uso. (Você não precisa esperar que a equipe do WSL implemente atualizações e adicione as alterações).

Exceções para uso do WSL 1 em vez do WSL 2

Recomendamos que você use o WSL 2, pois ele oferece desempenho mais rápido e 100% de compatibilidade com a chamada do sistema. No entanto, há alguns cenários específicos em que você pode preferir usar o WSL 1. Considere usar o WSL 1 se:

  • Seus arquivos de projeto devem ser armazenados no sistema de arquivos do Windows. O WSL 1 oferece acesso mais rápido aos arquivos montados no Windows.
    • Se estiver usando sua distribuição do WSL no Linux para acessar arquivos de projeto no sistema de arquivos do Windows e esses arquivos não puderem ser armazenados no sistema de arquivos do Linux, você obterá um desempenho melhor nos sistemas de arquivos do sistema operacional usando o WSL 1.
  • Um projeto que requer compilação cruzada usando as ferramentas do Windows e do Linux nos mesmos arquivos.
    • O desempenho de arquivos entre os sistemas operacionais do Windows e do Linux é mais rápido no WSL 1 do que no WSL 2, portanto, se estiver usando aplicativos do Windows para acessar arquivos do Linux, você obterá um desempenho melhor com o WSL 1.
  • Seu projeto precisa de acesso a uma porta serial ou a um dispositivo USB. No entanto, o suporte a dispositivos USB agora está disponível para o WSL 2 por meio do projeto USBIPD-WIN. Confira Conectar dispositivos USB para ver as etapas de configuração.
  • O WSL 2 não inclui suporte para acesso a portas seriais. Saiba mais nas Perguntas frequentes ou no Problema de suporte serial do repositório do GitHub do WSL.
  • Você tem requisitos rígidos de memória
    • O uso de memória do WSL 2 aumenta e diminui conforme a sua necessidade. Quando um processo libera memória, ela é devolvida automaticamente ao Windows. No entanto, até o momento presente, o WSL 2 ainda não libera as páginas em cache na memória de volta ao Windows até que a instância do WSL seja desativada. Se você tiver sessões WSL de longa execução ou acessar uma quantidade muito grande de arquivos, esse cache poderá ocupar memória do Windows. Estamos acompanhando o trabalho para melhorar essa experiência no problema 4166 do repositório GitHub do WSL.
  • Para quem usa o VirtualBox, certifique-se de usar a versão mais recente do VirtualBox e do WSL 2. Consulte Perguntas frequentes relacionadas.
  • Se você depender de uma distribuição do Linux para ter um endereço IP na mesma rede que o computador host, talvez seja necessário configurar uma solução alternativa para executar o WSL 2. O WSL 2 está em execução como uma máquina virtual hyper-v. Essa é uma alteração do adaptador de rede com ponte usado no WSL 1, o que significa que o WSL 2 usa um serviço NAT (Conversão de Endereços de Rede) para a rede virtual dele, em vez de fazer com que ele seja conectado à NIC (Placa de Interface de Rede) do host, resultando em um endereço IP exclusivo que será alterado na reinicialização. Para saber mais sobre o problema e a solução alternativa que encaminha portas TCP de serviços WSL 2 para o sistema operacional host, confira Problema 4150 do repositório GitHub do WSL, modo de Ponte NIC (solução alternativa TCP).

Observação

Considere usar a Extensão Remota do WSL do VS Code para permitir que você armazene seus arquivos de projeto no sistema de arquivos do Linux, usando as ferramentas de linha de comando do Linux, mas também usando o VS Code no Windows para criar, editar, depurar ou executar seu projeto em um navegador da Internet sem a lentidão de desempenho associada ao trabalho nos sistemas de arquivos Linux e Windows. Saiba mais.

WSL na Microsoft Store

O WSL retirou a funcionalidade de atualização da imagem do sistema operacional Windows para um pacote que está disponível por meio da Microsoft Store. Isso significa atualizações e manutenção mais rápidas assim que estiverem disponíveis, em vez de precisar aguardar uma atualização do sistema operacional Windows.

O WSL foi originalmente incluído no sistema operacional Windows como um componente opcional que precisa ser habilitado para instalar uma distribuição do Linux. O WSL na Store tem a mesma experiência de usuário e é o mesmo produto, mas recebe atualizações e manutenção como um pacote do repositório, em vez de receber como uma atualização do sistema operacional inteira. A partir da versão 19044 ou superior do Windows, a execução do comando wsl.exe --install instalará a atualização de manutenção do WSL na Microsoft Store. (Veja a postagem no blog anunciando esta atualização). Se você já estiver usando o WSL, poderá atualizar para garantir que está recebendo os recursos mais recentes do WSL e a manutenção do repositório executando wsl.exe --update.