Como configurar um ambiente de desenvolvimento no WSL2
1. Introdução ao WSL2: Por que usar o subsistema Linux no Windows?
O Windows Subsystem for Linux versão 2 (WSL2) representa uma evolução significativa para desenvolvedores que precisam de um ambiente Linux sem abandonar o Windows. Diferentemente do WSL1, que funcionava como uma camada de tradução de chamadas de sistema, o WSL2 utiliza um kernel Linux real executado em uma máquina virtual leve e gerenciada pelo próprio Windows.
Principais vantagens do WSL2:
- Kernel Linux completo com compatibilidade total de chamadas de sistema
- Desempenho de I/O de arquivos até 3-5x superior ao WSL1
- Suporte nativo ao Docker sem necessidade de VirtualBox ou Hyper-V
- Integração perfeita com o sistema de arquivos do Windows
- Inicialização em segundos e consumo mínimo de recursos
Pré-requisitos:
- Windows 10 build 19041 ou superior (ou Windows 11)
- Virtualização habilitada na BIOS/UEFI
- Pelo menos 4GB de RAM (8GB recomendado)
2. Instalação e configuração inicial do WSL2
Para instalar o WSL2, abra o PowerShell como Administrador e execute:
# Instalar o WSL com distribuição Ubuntu padrão
wsl --install
# Se já tiver o WSL1 instalado, defina a versão 2 como padrão
wsl --set-default-version 2
# Listar distribuições instaladas e verificar versão
wsl --list --verbose
# Verificar status geral do WSL
wsl --status
Para migrar uma distribuição existente do WSL1 para WSL2:
# Converter uma distribuição específica
wsl --set-version Ubuntu 2
# Definir uma distribuição como padrão
wsl --set-default Ubuntu
A saída esperada do comando wsl --list --verbose deve mostrar:
NAME STATE VERSION
* Ubuntu Running 2
3. Otimização do terminal e integração com Windows
O Windows Terminal é a ferramenta recomendada para trabalhar com WSL2. Instale-o pela Microsoft Store ou via winget:
winget install Microsoft.WindowsTerminal
Configuração do Windows Terminal para WSL:
- Perfil Ubuntu já é criado automaticamente
- Configure fonte Cascadia Code PL para Powerline
- Ative "Usar tema do sistema" ou escolha um tema escuro
Acesso ao sistema de arquivos do Windows:
# Montagem automática em /mnt/
cd /mnt/c/Users/seu_usuario/Projetos
# Para melhor performance, mantenha projetos dentro do sistema de arquivos Linux
mkdir -p ~/projetos
cd ~/projetos
Boas práticas de performance:
- Armazene projetos em ~/projetos (dentro do Linux) para evitar overhead de I/O
- Use \\wsl.localhost\Ubuntu\home\seu_usuario\projetos para acessar do Windows
- Configure variáveis de ambiente compartilhadas no arquivo ~/.bashrc
# Adicione ao ~/.bashrc para compartilhar PATH
export PATH="$PATH:/mnt/c/Program Files/nodejs"
4. Configuração de ferramentas essenciais de desenvolvimento
Gerenciadores de pacotes:
# Atualizar apt e instalar pacotes básicos
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential curl wget git -y
# Instalar Linuxbrew (Homebrew para Linux)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Configuração do Git:
# Configurar identidade
git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"
# Gerar chave SSH
ssh-keygen -t ed25519 -C "seu@email.com"
# Adicionar chave ao ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# Integrar com Windows (reutilizar credenciais)
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
Editores de código:
# VS Code com Remote-WSL (instale a extensão no Windows)
code .
# Para Neovim
sudo apt install neovim -y
5. Gerenciamento de linguagens e runtimes
Node.js com nvm:
# Instalar nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Recarregar terminal
source ~/.bashrc
# Instalar Node.js LTS
nvm install --lts
nvm use --lts
# Verificar versões
node --version
npm --version
Python com pyenv:
# Instalar dependências do pyenv
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
# Instalar pyenv
curl https://pyenv.run | bash
# Adicionar ao ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# Instalar Python 3.12
pyenv install 3.12.0
pyenv global 3.12.0
Docker no WSL2:
# Opção 1: Docker Desktop com integração WSL2
# Baixe de https://docs.docker.com/desktop/wsl/
# Opção 2: Docker Engine nativo
sudo apt install docker.io docker-compose -y
sudo usermod -aG docker $USER
newgrp docker
6. Personalização do ambiente e produtividade
Zsh com Oh My Zsh:
# Instalar Zsh
sudo apt install zsh -y
# Definir Zsh como shell padrão
chsh -s $(which zsh)
# Instalar Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Instalar plugins
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# Configurar plugins no ~/.zshrc
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
Tema Powerlevel10k:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
Configure o tema no ~/.zshrc:
ZSH_THEME="powerlevel10k/powerlevel10k"
Script de bootstrap automatizado:
Crie um arquivo setup.sh:
#!/bin/bash
echo "Configurando ambiente de desenvolvimento WSL2..."
# Atualizar sistema
sudo apt update && sudo apt upgrade -y
# Instalar pacotes essenciais
sudo apt install -y build-essential curl wget git zsh neovim
# Instalar nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Instalar Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
echo "Ambiente configurado com sucesso!"
7. Resolução de problemas comuns e boas práticas
Ajuste de recursos no .wslconfig:
Crie ou edite %USERPROFILE%\.wslconfig:
[wsl2]
memory=4GB
processors=4
swap=2GB
localhostForwarding=true
Problemas de rede e DNS:
# Corrigir DNS no WSL2
sudo nano /etc/resolv.conf
# Adicione:
nameserver 8.8.8.8
nameserver 8.8.4.4
# Ou para configuração permanente
sudo nano /etc/wsl.conf
[network]
generateResolvConf = false
Permissões de arquivos:
# Corrigir permissões em /mnt/
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o uid=1000,gid=1000,umask=022,fmask=111
Dicas de performance:
- Nunca trabalhe diretamente em /mnt/c/ para projetos grandes
- Use \\wsl.localhost\Ubuntu\home para acessar arquivos do Windows
- Desative o Windows Defender para pastas específicas do WSL2
8. Próximos passos: expandindo o ambiente
Ferramentas cloud:
# AWS CLI
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# Azure CLI
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# GCP SDK
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt install google-cloud-sdk
Bancos de dados locais:
# PostgreSQL
sudo apt install postgresql postgresql-contrib -y
sudo service postgresql start
# MySQL
sudo apt install mysql-server -y
sudo service mysql start
# Redis
sudo apt install redis-server -y
sudo service redis start
Contêineres e orquestração:
# Minikube para Kubernetes local
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Iniciar cluster
minikube start --driver=docker
Com estas configurações, seu ambiente de desenvolvimento no WSL2 estará completo e pronto para projetos profissionais. A combinação de ferramentas Linux com a praticidade do Windows oferece o melhor dos dois mundos para desenvolvedores.
Referências
- Documentação oficial do WSL2 (Microsoft) — Guia completo de instalação, configuração e resolução de problemas do WSL2
- Guia de configuração do Windows Terminal (Microsoft) — Documentação oficial para personalização do terminal com perfis WSL
- Oh My Zsh - Framework para gerenciamento de configuração Zsh — Tutorial de instalação e plugins para melhorar a produtividade no terminal
- Docker Desktop WSL 2 backend (Docker Inc.) — Guia oficial de integração do Docker com WSL2 para desenvolvimento em contêineres
- nvm-sh - Node Version Manager — Repositório oficial com instruções de instalação e uso do gerenciador de versões Node.js
- pyenv - Python Version Manager — Documentação completa para gerenciamento de múltiplas versões Python no Linux
- Powerlevel10k - Tema para Zsh — Guia de instalação e personalização do tema de terminal mais rápido para Oh My Zsh