WSL 2 – Linux Dentro do Windows – O lado Bom e o Ruim

Tempo de Leitura: 5 Minutos

Desde 2018 a Microsoft vem trabalhando na ferramenta WSL (Windows Subsistem for Linux) que é uma implementação do Kernel (núcleo) do linux adaptado para rodar dentro do Windows. O que permite que você instale uma distro Linux dentro do próprio sistema da Microsoft, permitindo que você use o Bash, como se você estivesse em uma máquina Linux por exemplo.

Muitos céticos acreditam que é uma conspiração para derrubar o Linux, mais o fato é que a Microsoft abriu espaço para os desenvolvedores e quer ganhar uma fatia de mercado neste segmento, e para nós, o pacote vem bem recheado, começando com o WSL e grandes ferramentas específicas para nós DEVs.

O maior benefício vem para os desenvolvedores, que já utilizam as ferramentas linux e usam o pinguim como sistema operacional, mais ainda assim precisam acessar o windows para testar seus softwares ou mesmo rodar alguma ferramenta ou software ainda não disponível no ambiente unix.

O Ubuntu foi uma das primeiras distribuições a oferecer suporte total ao WSL 2. Assim, a Canonical (mantenedora da distribuição) anunciou que quem quiser experimentar o WSL 2 na atualização de maio de 2020 pode baixar a versão 20.04 LTS direto da Microsoft Store.

A novidade mais diferente apresentada é o novo “winget”, um gerenciador de pacotes em linha de comando para instalar softwares, exatamente como o apt, dnf, entre diversos outros que já funcionam no Linux. Através do winget será possível instalar diversos aplicativos de uma vez e até criar scripts para facilitar a instalação em novos dispositivos. Inclusive, já existem serviços de terceiros como o Winstall, que geram de maneira simplificada um script com todos os aplicativos desejados para instalação.

O novo WSL2, que agora conta com um kernel Linux completo, também terá suporte para rodar aplicativos de Linux com interface gráfica diretamente no Windows. Para viabilizar isso, a Microsoft está adicionado suporte à aceleração por hardware via GPU através do DirectX 12 no WSL, além de desenvolver um compositor baseado em Wayland próprio.

As metas principais do WSL 2 são aumentar o desempenho do sistema de arquivos, bem como adicionar compatibilidade completa com a chamada do sistema. As distribuições do Linux podem ser executadas como WSL 1 ou WSL 2 e podem ser alternadas a qualquer momento. O WSL 2 é uma importante revisão da arquitetura subjacente e usa a tecnologia de virtualização e um kernel Linux para habilitar os novos recursos.

Limitações do WSL

O WSL permite você executar qualquer binário compilado para Linux diretamente no Windows, através de um subsistema que é responsável pro traduzir as chamadas de sistema (do inglês system calls) do Linux para uma chamada equivalente para o Windows. Duas grandes limitações do WSL são a sua performance envolvendo operações de disco e a sua compatibilidade com algumas system calls específicas.

Sobre a performance em disco, atividades que envolvem operações intensivas com o disco, com comandos como git clone, npm install, apt upgrade, entre outros acabam demorando mais do que deveriam. Isso acontece pois esses dados são salvos diretamente no disco do seu sistema, e toda a operação que precisa interagir com esses arquivos precisa de alguns passos extras para a tradução dos comandos enviados pela system call do Linux até a persistência do dado em si.

Embora grande parte das system calls funcione graças a implementação e melhorias adicionadas pela equipe do WSL, elas não correspondem 100% de todas as system calls disponíveis para o Linux, fazendo que aplicações específicas que façam uso de chamadas mais avançadas do Linux não seja compatíveis com o WSL. Um exemplo desse tipo de aplicação é o Docker, ferramenta presente no dia a dia de muitos desenvolvedores atualmente.

Na versão WSL2, essas chamadas traduzidas foram substituídas completamente por um Kernel Linux rodando diretamente no Windows, e reconhecendo nativamente TODAS as chamadas do sistema.

Como funciona o WSL 2

O WSL 2 utiliza uma arquitetura completamente diferente do WSL 1. Ao invés de traduzir as system calls, ele utiliza diretamente um kernel do Linux atualizado através de uma máquina virtual. Mas não estamos tratando de uma máquina virtual qualquer!

O WSL 2 utiliza as mais recentes tecnologias de virtualização fornecidas pelo Hyper-V para fornecer uma máquina virtual leve, rápida e altamente integrada com o Windows. Com isso é possível utilizar de todas as vantagens que o WSL 1 trouxe, mas agora com total compatibilidade do sistema, até para rodar Docker.

Com a melhoria de performance e compatibilidade total com Linux, temos um ambiente de desenvolvimento com performance comparável o Linux instalado de forma nativa, o que é uma grande conquista.

Muitas pessoas se sentem mais confortáveis utilizando Windows, ou precisam desenvolver aplicações legadas que só funcionam no Windows, mas ao mesmo tempo trabalham com projetos que são hospedados em servidores Linux, requerendo que você tenha um ambiente mais próximo de produção. Para esses casos o WSL 2 é uma ótima solução.

Combinado com ferramentas como o Visual Studio Code com Remote extension podemos trabalhar com o WSL 2 como se estivéssemos trabalhando no sistema local, sem perceber que estamos utilizando uma máquina virtual por baixo.

Até mesmo o Docker para Windows irá se aproveitar do WSL 2, estando disponível na versão Edge do mesmo integração com o WSL 2, aproveitando também dos ganhos de performance com disco, um dos problemas que temos atualmente com o Docker ao usá-lo no Windows com aplicações que precisam de um grande volume de leitura e escrita em disco.

Windows: a plataforma para desenvolvedores

É bastante claro que a Microsoft está empenhada em criar a melhor experiência de desenvolvimento absoluta para todos os tipos de desenvolvedores. É incrível a quantidade de coisas boas saindo da empresa entre o Visual Studio Code, o Windows 10, o Azure e o GitHub.

O WSL2 ainda está na versão beta no momento, mas quando for lançado, a Microsoft terá um vencedor em suas mãos. À medida que mais desenvolvedores buscam além do MacBook Pro em busca de algo novo, o Windows está bem posicionado como a plataforma amigável para desenvolvedores – especialmente com os adoráveis ​​laptops Surface da Microsoft.