O que esperar do Windows Subsystem for Linux (WSL) 2

O Windows Subsystem Linux (WSL) é uma alternativa para desenvolvedores que procuram utilizar ferramentas de linha de comando compatíveis somente com Linux no Windows. Disponível para Windows 10, com ele é possível executar nativamente binários Linux na sua máquina Windows, escolhendo sua distribuição Linux preferida, como Debian, Ubuntu, Suse, até mesmo Kali Linux. Entretanto, tudo na vida pode ser aprimorado.

Vamos conhecer nesse artigo quais são as limitações do WSL e como será a evolução para o WSL 2.

Curso de
CONHEÇA O CURSO

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. Você pode ver com mais detalhes como o WSL funciona e como instalá-lo na sua máquina nesse artigo.

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.

Outra limitação é a compatibilidade com system calls. 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.

Tendo em vista esses problemas, o time responsável pelo desenvolvimento anunciou o WLS 2, com o foco em melhorar a performance em disco e fornecer total compatibilidade com system calls em Linux, não mais traduzindo essas chamadas, mas fornecendo um kernel Linux dentro do Windows!

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.

Graças ao uso dessa máquina virtual, a performance com operações em disco aumentaram drasticamente. Antes, seus arquivos eram armazenados diretamente no disco do sistema, agora todos os arquivos utilizados pelo WSL 2 estão dentro de uma disco virtual do formato VHD, conseguindo entregar uma performance até 5 vezes mais em operações como npm install nessa nova arquitetura.

É possível notar essa diferença a partir do vídeo abaixo encontrado no anuncio do WSL 2. Ele mostra o tempo necessário para iniciar o WSL e executar um container Docker. Tudo isso leva menos que 30 segundos!

Performace do WSL 2

Uma desvantagem dessa abordagem é que não temos acesso direto aos arquivos armazenados dentro do WSL 2, mas temos outras formas de acessar esses arquivos, através da rede ou com extensões especialidades nas nossas IDE, como a extensão Remote WSL do Visual Studio Code. Assim podemos utilizar da melhoria de performance em disco trazido pelo WSL 2.

Instalação

O processo de instalação do WSL 2 é muito próximo WSL 1. No momento ele está disponível na versão Insider do Windows 10. Sua previsão de lançamento está para o release 2003 do Windows 10 que deve ser lançado por volta de Abril de 2020.

Para use o WSL 2, precisamos habilitar a feature do Windows Subsystem for Linux e também o Virtual Machine Platform. Isso pode ser feito executando os comandos abaixo a partir de uma janela do PowerShell com permissão de Administrador:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Feito isso, caso você já tenha uma distribuição Linux instalada a partir do Microsoft Store, você pode migrar essa distribuição para executar dentro do WSL 2 e poder assim utilizar de todas as suas melhorias. Por exemplo, se você tem o Ubuntu 18.04 instalado, execute o comando abaixo:

wsl --set-version Ubuntu-18.04 2

Altere o nome de acordo com a distribuição que você utiliza. Para descobrir quais distribuições estão instaladas, execute o comando:

wsl --list --verbose

Lista com distribuições WSL

Isso vai te mostrar quais distribuições estão instaladas, juntamente com a versão do WSL em uso.

Caso esteja utilizando uma instalação limpa do Windows, você pode definir a versão padrão do WSL para sua segunda versão:

wsl --set-default-version 2

O restante do processo é semelhante com o WSL 1. Você vai até a Microsoft Store e escolhe a distribuição desejada. Você pode acompanhar com mais detalhes no artigo sobre WSL como é feito esse processo.

O que esperar do WSL 2

Pelo motivo do WSL 2 ainda estar em desenvolvimento, podemos esperar que muitas melhorias sejam implementadas até seu lançamento final. 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.

Curso de
CONHEÇA O CURSO
Deixe seu comentário

Autor dos cursos de cloud computing da TreinaWeb. Graduado em Gestão de TI pela FATEC e quase bacharel em Sistemas de Informação pela UFSCar. Tem experiência em desenvolvimento backend com PHP, mas se encontrou trabalhando com DevOps. Microsoft Certified: Azure DevOps Engineer Expert, Azure Administrator Associate e Azure Data Engineer Associate, AWS Certified Solutions Architect - Associate, Zend Certified Engineer (ZCE), Linux Foundation Certified Systems Administrator (LFCS). @gmsantos