WSL2 no Windows: Linux para desenvolvedores Link para o cabeçalho

Pinguim representando Linux saindo de uma janela em quatro painéis coloridos, inspirada no símbolo do Windows.

Hoje, quando falamos de computador de mesa ou notebook, o Windows ainda é o sistema operacional desktop mais usado no mundo. Isso importa para desenvolvedores: muita gente trabalha em Windows, entrega aplicações para Windows, testa integrações no ecossistema Windows e, ao mesmo tempo, precisa de ferramentas que nasceram primeiro no Linux.

É exatamente para esse meio do caminho que existe o WSL, o Windows Subsystem for Linux. Ele permite rodar um ambiente Linux dentro do Windows, com terminal, pacotes, comandos e sistema de arquivos Linux, sem exigir dual boot e sem obrigar você a administrar uma máquina virtual tradicional para cada tarefa.

Para quem cria automações, agentes, ferramentas de linha de comando, scripts de build ou aplicações que precisam conversar com o mundo Linux, o WSL2 resolve uma dor bem prática: continuar usando o Windows como estação principal, mas executar runtimes e ferramentas Linux quando isso faz mais sentido.

O que é WSL Link para o cabeçalho

WSL é um recurso do Windows para rodar distribuições Linux, como Ubuntu, Debian, Kali, openSUSE, Fedora, Arch e outras, diretamente na máquina Windows. Na prática, você abre o terminal da distribuição escolhida e usa comandos como bash, grep, sed, awk, git, node, python e várias ferramentas Linux comuns.

A vantagem não é “substituir” o Windows. A vantagem é somar os dois ambientes:

  • Windows continua sendo o desktop, com seus editores, navegadores, ferramentas corporativas e integrações locais;
  • Linux entra como ambiente técnico para terminal, pacotes, automação e runtimes que funcionam melhor no ecossistema Linux.

Esse modelo é muito confortável para desenvolvimento porque você pode editar no Windows e executar no Linux, ou trabalhar direto dentro do filesystem Linux quando desempenho e compatibilidade forem prioridade.

WSL1 e WSL2, sem drama Link para o cabeçalho

Existem duas arquiteturas: WSL1 e WSL2.

O WSL1 traduz chamadas Linux para chamadas do Windows. Já o WSL2 usa virtualização para rodar um kernel Linux real dentro de uma VM utilitária leve gerenciada pelo próprio Windows. Essa diferença é importante porque o WSL2 tem compatibilidade maior com chamadas de sistema Linux e costuma ser o caminho recomendado para ferramentas modernas.

Para a maioria dos fluxos atuais de desenvolvimento, especialmente quando você vai instalar agentes, runtimes, ferramentas de automação, Docker ou dependências mais próximas do Linux real, o WSL2 é a escolha natural.

Como o WSL2 funciona por baixo Link para o cabeçalho

No WSL2, o Windows inicia uma VM leve e gerenciada. Dentro dessa VM roda um kernel Linux real. As distribuições rodam como ambientes isolados dentro dessa VM.

Fluxograma mostrando como o WSL2 executa Linux sobre o Windows usando Virtual Machine Platform, VM leve gerenciada, filesystem Linux, montagem /mnt/c e rede virtualizada.

Essa VM não é uma VM tradicional que você cria no Hyper-V Manager, escolhe ISO, configura disco e administra manualmente. Ela existe, mas é controlada pelo WSL. Para o usuário, a experiência continua sendo abrir uma distribuição Linux no terminal; para o sistema, há uma camada de virtualização cuidando do kernel Linux, memória, CPU, rede e isolamento.

Por baixo, o WSL2 usa a fundação de virtualização do Windows. A documentação da Microsoft descreve o Hyper-V como uma tecnologia de virtualização baseada em hypervisor tipo 1. Em termos simples, isso significa que o hypervisor roda próximo do hardware e coordena recursos como processador, memória e dispositivos virtualizados para ambientes isolados.

No caso do WSL2, pense no fluxo assim:

  1. você chama wsl ou abre uma distribuição Linux;
  2. o Windows seleciona a distribuição;
  3. o serviço do WSL inicia a VM leve, se ela ainda não estiver rodando;
  4. a distribuição Linux roda dentro da VM gerenciada;
  5. processos Linux fazem chamadas ao kernel Linux real;
  6. o hypervisor agenda CPU e memória sobre o hardware físico.

O resultado é uma experiência muito mais simples que uma VM manual, mas com compatibilidade Linux real por baixo.

Arquivos: /home e /mnt/c Link para o cabeçalho

Um ponto que evita muita confusão: existem dois caminhos de arquivo convivendo.

Dentro da distribuição, o caminho Linux principal fica em /home/seu_usuario. Para projetos que vão rodar com ferramentas Linux, esse costuma ser o melhor lugar:

/home/seu_usuario/projetos/minha-api

O Windows também aparece dentro do WSL por caminhos montados, normalmente em /mnt/c. Por exemplo:

/mnt/c/Users/seu_usuario/Documentos

Use /mnt/c quando você precisar acessar arquivos do Windows. Mas, para projetos Linux com muitos arquivos pequenos, dependências, node_modules, ambiente virtual Python ou builds frequentes, prefira manter o projeto em /home. Isso reduz problemas de permissão e costuma melhorar o desempenho.

Rede e localhost Link para o cabeçalho

O WSL2 também virtualiza a rede. Mesmo assim, a experiência do dia a dia costuma ser simples: se você sobe um serviço dentro da distribuição escutando em localhost, normalmente consegue acessar pelo navegador do Windows em http://127.0.0.1:porta.

Exemplo: se uma aplicação Linux subir em 127.0.0.1:3000 dentro da distribuição, tente abrir no navegador do Windows:

http://127.0.0.1:3000

Se não funcionar, aí vale investigar firewall, porta, bind do serviço e modo de rede do WSL. Mas, para uso local comum, essa ponte pelo localhost resolve a maioria dos testes.

Antes de começar: onde cada comando roda Link para o cabeçalho

Essa separação é o que mais evita erro bobo.

  • PowerShell como Administrador: instalar WSL e habilitar recursos do Windows.
  • PowerShell normal: listar distribuições, consultar status e reiniciar a VM do WSL.
  • Distribuição Linux/WSL: validar o ambiente e rodar ferramentas de desenvolvimento.

Sempre confira em qual terminal você está antes de copiar comandos. wsl --install é comando de Windows. cat /etc/os-release é comando Linux dentro da distribuição.

Passo 1: instalar o WSL2 Link para o cabeçalho

Abra o PowerShell como Administrador e rode:

wsl --install

Esse comando habilita os recursos necessários e instala a distribuição Linux padrão, normalmente Ubuntu. Se o Windows pedir reinicialização, reinicie antes de continuar.

Depois do reboot, abra a distribuição pelo Menu Iniciar. Na primeira abertura, ela pode pedir para criar um usuário e senha Linux. Essa senha é do ambiente Linux; ela não precisa ser igual à senha do Windows.

Se você quiser ver quais distribuições estão disponíveis, rode no PowerShell normal:

wsl --list --online

As principais famílias que costumam aparecer nessa lista são:

  • Ubuntu: geralmente a opção mais documentada para tutoriais de desenvolvimento;
  • Debian: Debian;
  • Kali: kali-linux;
  • openSUSE: Leap ou Tumbleweed;
  • SUSE Linux Enterprise: versões Enterprise publicadas para WSL;
  • AlmaLinux: versões da família Enterprise Linux;
  • Arch Linux: archlinux;
  • Fedora: versões publicadas como FedoraLinux-*;
  • Oracle Linux: versões publicadas como OracleLinux_*;
  • eLxr: eLxr.

Essa lista muda com o tempo e varia conforme o catálogo disponível no Windows. Por isso, trate o comando wsl --list --online como a fonte final na sua máquina, e não memorize nomes de versão.

Para instalar uma distribuição específica, use o nome que apareceu na coluna NAME:

wsl --install -d <NomeDaDistro>

Por exemplo:

wsl --install -d Debian
wsl --install -d kali-linux

Se a distro que você quer não aparecer nessa lista, há três caminhos:

  • conferir na Microsoft Store, porque algumas distribuições podem ser instaladas por lá;
  • baixar uma imagem/rootfs oficial da distribuição e importar manualmente com wsl --import;
  • usar um projeto comunitário com cautela, validando procedência, atualização e segurança da imagem.

O caminho com wsl --import é mais avançado. Ele exige um arquivo .tar com o filesystem da distribuição:

wsl --import MinhaDistro C:\WSL\MinhaDistro C:\caminho\rootfs.tar --version 2

Para a maioria dos tutoriais de desenvolvimento, Ubuntu e Debian reduzem atrito com documentação, pacotes e exemplos. Mas o WSL não fica preso nelas.

Passo 2: confirmar que a distribuição está em WSL2 Link para o cabeçalho

No PowerShell normal, confira as distribuições instaladas:

wsl -l -v

A coluna VERSION deve mostrar 2 para a distribuição que você vai usar. Se aparecer 1, ajuste o padrão para novas distribuições:

wsl --set-default-version 2

E, se necessário, converta uma distribuição já instalada:

wsl --set-version <NomeDaDistro> 2

Também vale atualizar o WSL:

wsl --update

Se você mexeu em configuração global do WSL ou quer reiniciar o ambiente Linux por completo, use:

wsl --shutdown

Depois disso, abra a distribuição novamente.

Passo 3: abrir uma distribuição no Windows Link para o cabeçalho

Você pode abrir uma distribuição de três formas simples:

  1. pelo Menu Iniciar, pesquisando pelo nome da distribuição;
  2. pelo Windows Terminal, clicando na seta ao lado da aba atual e escolhendo o perfil da distribuição;
  3. pelo PowerShell normal, chamando diretamente a distribuição:
wsl -d <NomeDaDistro>

Exemplo:

wsl -d Debian

Quando estiver no lugar certo, o prompt deixa de parecer PowerShell e passa a parecer um terminal Linux, algo como:

usuario@maquina:~$

Se quiser confirmar, rode dentro da distribuição Linux/WSL:

pwd

Se a resposta começar com /home/..., você está dentro da distribuição Linux. Para sair e voltar ao PowerShell depois, use:

exit

Daqui em diante, quando um tutorial disser “rode no Linux”, normalmente você pode rodar dentro dessa distribuição no WSL2. A instalação de pacotes específicos, como curl, git, Node.js, Python ou ferramentas de automação, fica no tutorial da ferramenta que você vai instalar.

Passo 4: validar se a distribuição está OK Link para o cabeçalho

Depois de abrir a distribuição, valide o básico sem depender de um gerenciador de pacotes específico.

Dentro do Linux/WSL, veja qual distribuição está rodando:

cat /etc/os-release

Confira o kernel Linux:

uname -a

Confira o usuário atual:

whoami

Confira o diretório atual:

pwd

No PowerShell normal, veja se a distribuição está registrada e qual versão do WSL ela usa:

wsl -l -v

E veja quais distribuições estão rodando naquele momento:

wsl --list --running

Se esses comandos respondem sem erro, a distribuição está funcional. A partir daí, cada tutorial pode pedir pacotes de acordo com a família da distribuição: apt em Debian/Ubuntu, dnf em Fedora, zypper em openSUSE, pacman em Arch e assim por diante.

Passo 5: controlar se o WSL inicia com o Windows Link para o cabeçalho

Uma distribuição WSL não deve iniciar sozinha só porque o Windows ligou. Em geral, ela inicia quando algo chama wsl.exe: Windows Terminal, Docker Desktop, uma tarefa agendada, um serviço, um script no startup ou algum aplicativo de desenvolvimento.

Para ver o que está rodando agora, use:

wsl --list --running

Para parar uma distribuição específica:

wsl --terminate <NomeDaDistro>

Para parar toda a VM do WSL2 e todas as distribuições:

wsl --shutdown

Fazer uma distribuição iniciar com o Windows Link para o cabeçalho

Se você quer que uma distribuição ou um serviço dentro dela suba com o Windows, use uma tarefa agendada do Windows chamando wsl.exe.

Exemplo simples para iniciar a distribuição no logon:

schtasks /Create /TN "Iniciar WSL" /SC ONLOGON /TR "wsl.exe -d <NomeDaDistro>" /F

Para iniciar um comando específico dentro da distribuição:

schtasks /Create /TN "Iniciar servico WSL" /SC ONLOGON /TR "wsl.exe -d <NomeDaDistro> --exec bash -lc 'comando-aqui'" /F

Use esse caminho quando houver um motivo real: banco local, serviço de desenvolvimento, agente, automação ou daemon que precisa existir assim que você entra no Windows.

Impedir que uma distribuição inicie com o Windows Link para o cabeçalho

Se o WSL está iniciando junto com o Windows e você não quer isso, procure quem está chamando wsl.exe.

Veja tarefas agendadas relacionadas:

schtasks /Query /FO LIST | findstr /I "wsl"

Se você criou uma tarefa como a do exemplo anterior, remova:

schtasks /Delete /TN "Iniciar WSL" /F

Também confira aplicativos de inicialização do Windows, Docker Desktop, scripts em shell:startup e serviços que possam depender do WSL. Depois de remover o gatilho, encerre o WSL:

wsl --shutdown

Um detalhe importante: habilitar systemd dentro de uma distribuição faz serviços Linux iniciarem quando aquela distribuição inicia. Isso não significa, por si só, que a distribuição vai iniciar no boot do Windows.

Passo 6: limitar memória do WSL2 Link para o cabeçalho

Esse passo é opcional, mas útil em máquinas em que o WSL compete com navegador, editor, banco local e outras ferramentas pesadas.

No PowerShell normal, abra o arquivo .wslconfig no seu perfil do Windows:

notepad $env:USERPROFILE\.wslconfig

Se o arquivo não existir, o Notepad pode perguntar se você quer criar. Crie e coloque, por exemplo:

[wsl2]
memory=4GB
processors=4

Esse arquivo fica no Windows, fora das distribuições Linux. Ele configura a VM que alimenta as distribuições WSL2. O valor memory=4GB limita a memória máxima usada pela VM do WSL2. O valor processors=4 limita quantos processadores lógicos ela pode usar.

Depois de salvar, aplique a configuração encerrando o WSL:

wsl --shutdown

Abra a distribuição novamente. A configuração entra em vigor na próxima inicialização da VM do WSL2.

Passo 7: comandos úteis de manutenção Link para o cabeçalho

Ver status geral do WSL:

wsl --status

Ver versão do WSL e componentes:

wsl --version

Listar distribuições instaladas:

wsl -l -v

Encerrar todas as distribuições e a VM leve do WSL2:

wsl --shutdown

Listar somente distribuições em execução:

wsl --list --running

Encerrar só uma distribuição:

wsl --terminate <NomeDaDistro>

Definir uma distribuição como padrão:

wsl --set-default <NomeDaDistro>

Abrir a distribuição padrão:

wsl

Abrir uma distribuição específica:

wsl -d <NomeDaDistro>

Abrir a distribuição já no diretório home:

wsl ~ -d <NomeDaDistro>

Executar um comando sem entrar no shell interativo:

wsl -d <NomeDaDistro> --exec uname -a

Importar uma distribuição a partir de um rootfs:

wsl --import <NomeDaDistro> <DiretorioDeInstalacao> <ArquivoRootfsTar> --version 2

Remover uma distribuição registrada, apagando seu filesystem Linux:

wsl --unregister <NomeDaDistro>

Use wsl --unregister com muito cuidado. Ele remove a distribuição e seus dados Linux.

Checklist final Link para o cabeçalho

Antes de seguir para ferramentas mais específicas, confirme:

  • wsl -l -v mostra a distribuição escolhida em VERSION 2;
  • você consegue abrir a distribuição pelo Menu Iniciar ou Windows Terminal;
  • cat /etc/os-release identifica a distribuição dentro do WSL;
  • uname -a mostra um kernel Linux;
  • pwd dentro da distribuição mostra um caminho Linux;
  • wsl --list --running mostra somente o que está ativo naquele momento;
  • se você criou .wslconfig, rodou wsl --shutdown depois;
  • seus projetos Linux principais ficam em /home/..., não em /mnt/c/..., quando desempenho importa;
  • serviços locais da distribuição podem ser testados pelo navegador do Windows via localhost;
  • se o WSL inicia com o Windows, você sabe qual aplicativo, tarefa agendada ou serviço está chamando wsl.exe.

Com isso pronto, o Windows fica como sua estação de trabalho e o WSL2 vira o runtime Linux para instalar ferramentas modernas com menos atrito.

Próximo passo Link para o cabeçalho

Com uma distribuição funcionando no WSL2, você pode instalar ferramentas de desenvolvimento diretamente nela: Node.js, Python, Docker, bancos locais, CLIs, agentes e automações.

No caso do Hermes Agent, o caminho continua no próximo tutorial:

Instalando o Hermes Agent no Windows com WSL2 e Ubuntu

Referências Link para o cabeçalho