Durante nosso dia a dia como desenvolvedores usamos diversas ferramentas pela linha de comando. Podemos utilizar git para versionar nossos projetos, instalar dependências com npm ou executar scripts para automatizar tarefas. Algumas dessas ferramentas são compatíveis com diversos sistemas operacionais, porém algumas delas são criadas levando em consideração somente o sistema Linux, não levando em conta as particularidades para serem executadas no Windows.
Como não é viável tornar todas as ferramentas compatíveis tanto com Windows como Linux, por que não tornar o Windows compatível com essas ferramentas? O Windows Subsystem for Linux (WSL) vem para resolver esse problema.
Curso Windows - Fundamentos para desenvolvedores
Conhecer o cursoComo o WSL funciona?
O WSL é um recurso opcional disponível no Windows 10 (a partir da versão 1607) que te permite executar binários e scripts em Linux diretamente no Windows, traduzindo as instruções enviadas para o sistema (as chamadas de sistema ou system calls) para uma instrução válida para o kernel do Windows. Com ele é possível ter um ambiente idêntico a de uma distribuição Linux que você já esteja acostumado sem precisar usar uma máquina virtual ou algo do tipo para isso.
O WSL permite que você instale múltiplas distribuições Linux na sua máquina, cada qual com uma estrutura de arquivos isolada e independente do sistema e de outras distribuições, similar com o que ocorre com uma máquina virtual.
Instalação
É possível habilitar o WSL executando o comando abaixo a partir de uma janela do PowerShell com permissão de Administrador:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Após reiniciar sua máquina você pode instalar uma versão da sua distribuição preferida a partir da Microsoft Store. Digite Linux na barra de busca e você encontrará várias distribuições como Ubuntu, Debian, Suse e até o Kali Linux.
Após instalar e executar o aplicativo da distribuição desejada, é solicitado que você crie um usuário e senha para usar como o sudo da sua distribuição. Como exemplo, escolhi o Ubuntu 18.04 como a distribuição na minha máquina e criei um usuário chamado treinaweb:
Você pode encontrar no menu iniciar a distribuição instalada para usá-la posteriormente, digitando na barra de busca o nome da distribuição. Você pode fixar esse atalho na barra de tarefas, no iniciar ou na área de trabalho se desejar.
Funcionalidades
Ao contrário de uma máquina virtual, o WSL é integrado com o sistema, permitindo o acesso dos arquivos tanto do sistema como os arquivos da distribuição. Dentro da distribuição os discos da sua máquina estão mapeados dentro do diretório /mnt/
e no Windows os arquivos da distribuição estão no caminho de rede \\\\wsl$
Com o utilitário wslpath
é possível converter os caminhos de diretório entre o WSL e Windows e vice-versa.
É possível também utilizar executáveis do Linux dentro do PowerShell ou Prompt de comando diretamente com wsl
e até mesmo rodar executáveis do Windows dentro do WSL.
Outro uso comum é utilizar o WSL como ambiente de desenvolvimento web. Tanto o sistema como o WSL compartilham o mesmo IP de rede, logo para acessar o servidor web do seu ambiente basta utilizar localhost
e informar a porta que você deseja acessar.
Vale lembrar que o WSL não substitui completamente uma máquina virtual. O público alvo do WSL são desenvolvedores que precisam executar ferramentas em linha de comando. Aplicações que usam a interface gráfica não são compatíveis com o WSL.
Aplicativos que invocam funções nativas do kernel do Linux também não são compatíveis com o WSL, como por exemplo, o Docker. Nesses casos uma máquina virtual ou o Docker for Desktop podem ser melhores soluções.
O que vem por aí
O WSL se mostrou até agora uma alternativa interessante para quem precisa executar ferramentas e aplicações Linux dentro do Windows de forma leve e integrada. Entretanto, na sua versão atual o WSL não tem compatibilidade total com as funções do kernel do Linux e com aplicações que fazem uso intenso de disco existe um gargalo no desempenho de leitura de disco se comparado com outras soluções.
Tendo isso em vista a Microsoft anunciou o WSL 2, uma nova versão que promete compatibilidade total com o kernel do Linux e performance de disco mais rápida. Para que isso seja possível o WSL 2 contará com o próprio kernel do Linux distribuído dentro do Windows ao invés de uma camada de tradução de system calls! O código do kernel utilizado é baseado na versão 4.19 e pode ser encontrado aqui.
O WSL 2 ainda está em desenvolvimento, disponível somente a partir do build 18917 do Windows Insider.