WSL 2 no Windows: transformando seu PC em uma máquina de dev Linux
1. Introdução ao WSL 2 e seus benefícios para desenvolvedores
O Subsistema Windows para Linux versão 2 (WSL 2) representa uma mudança fundamental na forma como desenvolvedores podem trabalhar com ambientes Linux diretamente no Windows. Diferentemente do WSL 1, que utilizava uma camada de tradução de chamadas de sistema, o WSL 2 emprega um kernel Linux real executado em uma máquina virtual leve e gerenciada pelo próprio Windows.
Essa arquitetura traz benefícios significativos:
- Desempenho de E/S: operações de arquivo no sistema de arquivos Linux são até 3-5x mais rápidas que no WSL 1
- Compatibilidade total com Docker: containers Linux rodam nativamente sem overhead de VirtualBox ou Hyper-V
- Suporte a chamadas de sistema completas: ferramentas como systemd, fuse e iptables funcionam sem limitações
Os cenários ideais incluem desenvolvimento web (Node.js, Python, Ruby), testes de CI/CD locais, ambientes isolados por projeto e execução de ferramentas como grep, sed e awk diretamente no Windows.
2. Instalação e configuração inicial do WSL 2 no Windows
Pré-requisitos:
- Windows 10 (versão 2004 ou superior) ou Windows 11
- Virtualização habilitada na BIOS/UEFI (Intel VT-x ou AMD-V)
Passo a passo:
# 1. Abrir PowerShell como Administrador e habilitar o recurso WSL
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 2. Habilitar a plataforma de máquina virtual (necessária para WSL 2)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 3. Reiniciar o computador
# 4. Definir WSL 2 como versão padrão
wsl --set-default-version 2
# 5. Instalar uma distribuição (Ubuntu 22.04 LTS)
wsl --install -d Ubuntu-22.04
Após a instalação, configure o arquivo %USERPROFILE%\.wslconfig para alocar recursos:
[wsl2]
memory=4GB
processors=2
swap=2GB
localhostForwarding=true
3. Gerenciamento de distribuições e ambientes de desenvolvimento
O WSL 2 permite gerenciar múltiplas distribuições Linux no mesmo PC:
# Listar distribuições instaladas
wsl --list --verbose
# Definir uma distribuição específica como WSL 2
wsl --set-version Ubuntu-22.04 2
# Exportar uma distribuição para backup
wsl --export Ubuntu-22.04 C:\backup\ubuntu.tar
# Importar uma distribuição de backup
wsl --import MeuUbuntu C:\wsl\meuubuntu C:\backup\ubuntu.tar
Para criar ambientes isolados por projeto:
# Exemplo: ambiente Python isolado
wsl -d Ubuntu-22.04
cd ~/projetos/api-python
python3 -m venv .venv
source .venv/bin/activate
pip install flask
# Ambiente Node.js
wsl -d Ubuntu-22.04
cd ~/projetos/app-node
nvm install 18
npm init -y
npm install express
4. Integração entre Windows e Linux: sistema de arquivos e ferramentas
O sistema de arquivos do Windows é acessível a partir do WSL através de /mnt/c/:
# Acessar unidade C: do Windows
cd /mnt/c/Users/seu_usuario/Documents
# Copiar arquivos entre sistemas
cp /mnt/c/Users/seu_usuario/projeto/config.json ~/projeto/
# Usar editores de código com Remote-WSL
code ~/projeto/app.js # Abre no VS Code com extensão Remote-WSL
Para compartilhar variáveis de ambiente e chaves SSH:
# No Windows, adicione ao perfil do PowerShell (notepad $PROFILE)
$env:WSLENV = "VARIAVEL_DEV/up"
# No WSL, edite ~/.bashrc
export VARIAVEL_DEV="valor_compartilhado"
# Compartilhar chaves SSH
cp /mnt/c/Users/seu_usuario/.ssh/id_rsa ~/.ssh/
chmod 600 ~/.ssh/id_rsa
5. Docker no WSL 2: desenvolvimento de containers nativos
Configure o Docker Desktop para usar o backend WSL 2:
# No Docker Desktop: Settings > Resources > WSL Integration
# Ativar integração com as distribuições desejadas
# Exemplo prático: servidor web com Nginx e MySQL
docker run -d --name webserver -p 8080:80 nginx:alpine
docker run -d --name banco -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0
# Aplicação Flask com Docker Compose
cat > docker-compose.yml << 'EOF'
version: '3'
services:
app:
image: python:3.11-slim
ports:
- "5000:5000"
volumes:
- .:/app
command: sh -c "pip install flask && flask run --host=0.0.0.0"
EOF
docker-compose up -d
6. Automação de tarefas e scripts entre Windows e Linux
Chamando scripts PowerShell a partir do WSL:
# No WSL, executar comando PowerShell
powershell.exe -Command "Get-Process | Where-Object { $_.CPU -gt 10 }"
# Script híbrido para sincronização (WSL -> Windows)
#!/bin/bash
rsync -avz --delete ~/projeto/ /mnt/c/Users/seu_usuario/backup_projeto/
powershell.exe -Command "Compress-Archive -Path C:\Users\seu_usuario\backup_projeto\* -DestinationPath C:\Users\seu_usuario\backup.zip"
# Agendamento no Windows Task Scheduler
# Ação: C:\Windows\System32\wsl.exe -d Ubuntu-22.04 --exec /home/usuario/script_backup.sh
7. Otimização de desempenho e resolução de problemas comuns
Ajustes de memória e swap no arquivo .wslconfig:
[wsl2]
memory=6GB
processors=4
swap=4GB
swapFile=C:\\wsl\\swap.vhdx
Solução de problemas comuns:
# Erro de permissão ao acessar arquivos do Windows
# Solução: usar /mnt/c/ com permissões corretas
sudo chown -R $(whoami) /mnt/c/Users/seu_usuario/projeto
# Conflitos de VPN (Cisco AnyConnect)
# Solução: ajustar roteamento no WSL
sudo ip route add default via $(ip route | grep default | awk '{print $3}')
# Problemas de rede após suspensão
# Solução: reiniciar o serviço WSL
wsl --shutdown
wsl
Dicas de produtividade no Windows Terminal:
# Adicionar atalhos no ~/.bashrc
alias dev='cd ~/projetos && ls -la'
alias docker-clean='docker system prune -af'
alias win='cd /mnt/c/Users/seu_usuario'
8. Considerações finais e próximos passos
O WSL 2 oferece recursos avançados como:
- WSLg: interface gráfica para aplicações Linux (GUI)
- Suporte a systemd: ativável via wsl --system
- GPU pass-through: para machine learning e computação científica
Comparado a alternativas como máquinas virtuais (Hyper-V, VirtualBox) ou dual boot, o WSL 2 oferece a melhor relação entre desempenho e conveniência para desenvolvimento, eliminando a necessidade de reinicializações ou alocação dedicada de recursos.
Para aprofundamento, explore a documentação oficial da Microsoft e comunidades como o r/bashonubuntuonwindows no Reddit. O ecossistema WSL continua evoluindo rapidamente, com novas funcionalidades sendo adicionadas a cada atualização do Windows.
Referências
- Documentação oficial do WSL 2 pela Microsoft — Guia completo de instalação, configuração e gerenciamento do WSL 2
- WSL 2 vs WSL 1: Comparativo técnico detalhado — Diferenças de arquitetura, desempenho e compatibilidade entre as versões
- Configuração avançada do WSL 2 com .wslconfig — Documentação oficial sobre ajustes de memória, CPU e rede
- Docker Desktop com backend WSL 2 — Guia oficial da Docker para integração com WSL 2
- Tutorial de desenvolvimento remoto com VS Code e WSL — Extensão Remote-WSL e configuração de ambientes de desenvolvimento
- WSLg: interface gráfica para aplicações Linux no Windows — Repositório oficial do subsistema gráfico para WSL
- Comunidade r/bashonubuntuonwindows no Reddit — Fórum ativo com dicas, soluções e discussões sobre WSL