WSL2 bem configurado: ajustes que uso no dia a dia para desenvolvimento
Algumas configurações simples podem deixar o WSL2 mais previsível e confortável para desenvolvimento. Neste guia mostro os ajustes que costumo aplicar em memória, CPU, swap, systemd, rede, hosts e permissões de arquivos.

O WSL2 já funciona muito bem com a configuração padrão, mas alguns ajustes fazem diferença quando ele passa a ser parte do ambiente de desenvolvimento do dia a dia.
Para quem trabalha com PHP, Node.js, Docker, bancos de dados, servidores locais e diversas ferramentas Linux, vale a pena entender principalmente dois arquivos:
.wslconfig/etc/wsl.conf
Eles têm finalidades diferentes e essa distinção evita muita confusão.
.wslconfig x /etc/wsl.conf
O .wslconfig controla configurações globais do WSL2 e fica no perfil do usuário do Windows:
C:\Users\SEU_USUARIO\.wslconfigJá o /etc/wsl.conf controla configurações específicas de uma distribuição Linux:
/etc/wsl.confEm outras palavras:
| Arquivo | Escopo | Exemplos |
|---|---|---|
.wslconfig | Global para o WSL2 | Memória, CPU, swap, rede |
/etc/wsl.conf | Uma distribuição | systemd, automount, hosts, usuário |
Essa separação é importante porque é comum encontrar configurações dos dois arquivos misturadas em um único exemplo.
1. Limitando memória e processadores
No meu .wslconfig, uma configuração que considero útil é limitar explicitamente os recursos disponíveis para o WSL:
[wsl2]
memory=16GB
processors=8
swap=2GBA ideia não é simplesmente dar o máximo de recursos disponíveis para o Linux.
O WSL compartilha os recursos da máquina com o Windows e outras aplicações. Definir limites explícitos ajuda a manter o ambiente previsível, principalmente quando existem ferramentas pesadas rodando simultaneamente.
memory
memory=16GBDefine o limite de memória da máquina virtual utilizada pelo WSL2.
O valor ideal depende da quantidade de RAM disponível no computador e do tipo de trabalho realizado.
Para desenvolvimento, o importante é encontrar um equilíbrio entre:
- ferramentas Linux;
- IDE;
- navegador;
- Docker;
- banco de dados;
- ferramentas de IA;
- aplicações do próprio Windows.
Não existe um valor universal.
processors
processors=8Define quantos processadores lógicos podem ser utilizados pela VM do WSL2.
Isso pode ser interessante em máquinas com muitos núcleos, evitando que um conjunto de processos dentro do WSL consuma todos os recursos disponíveis.
swap
swap=2GBDefine o tamanho do arquivo de swap utilizado pelo WSL2.
Swap não substitui RAM, mas funciona como uma camada adicional quando a memória física disponível é insuficiente.
Prefiro manter uma quantidade relativamente pequena em uma máquina de desenvolvimento, mas esse valor também depende do uso.
2. Modo de rede espelhado
Outra configuração que deixo disponível, mas nem sempre ativo, é:
[wsl2]
networkingMode=mirroredO modo mirrored muda a arquitetura de rede utilizada pelo WSL2 para espelhar as interfaces de rede do Windows.
Entre os benefícios documentados pela Microsoft estão suporte a IPv6, melhor compatibilidade com VPNs, multicast e a possibilidade de acessar o WSL diretamente pela LAN em cenários apropriados.
Por isso, no meu arquivo costumo deixar a opção comentada:
# networkingMode=mirroredAssim posso ativá-la rapidamente quando preciso.
Esse recurso é especialmente interessante em ambientes em que existem:
- VPNs corporativas;
- múltiplas interfaces de rede;
- serviços locais que precisam ser acessados de outros dispositivos;
- cenários onde a rede NAT padrão do WSL causa alguma limitação.
Antes de habilitar o modo espelhado, vale verificar se ele realmente resolve uma necessidade do seu ambiente.
3. Habilitando o systemd
Essa configuração pertence ao /etc/wsl.conf, dentro da distribuição Linux.
[boot]
systemd=trueO systemd é importante quando queremos utilizar serviços Linux de forma mais próxima de uma instalação tradicional.
Por exemplo:
systemctl statusou:
systemctl list-unit-files --type=serviceIsso facilita bastante ambientes que dependem de serviços como:
- Docker;
- bancos de dados;
- Redis;
- serviços auxiliares;
- outras aplicações que utilizam systemd.
Depois de alterar o wsl.conf, normalmente é necessário reiniciar a instância do WSL.
No Windows:
wsl --shutdownDepois disso, ao abrir novamente a distribuição, a configuração será carregada.
4. Mantendo um /etc/hosts personalizado
Outra configuração que gosto de usar é:
[network]
generateHosts=falsePor padrão, o WSL pode gerar automaticamente o arquivo /etc/hosts.
Quando essa opção é desabilitada, o WSL deixa de fazer essa geração automática, permitindo que a distribuição mantenha um arquivo /etc/hosts próprio.
Isso é útil em ambientes de desenvolvimento que utilizam vários domínios locais.
Por exemplo:
127.0.0.1 app.local
127.0.0.1 api.local
127.0.0.1 admin.localIsso pode ser interessante quando existe uma estrutura de desenvolvimento com:
- múltiplas aplicações;
- reverse proxy;
- virtual hosts;
- Traefik;
- Apache;
- Nginx;
- domínios locais.
5. Permissões de arquivos no /mnt
Aqui entra uma configuração que pode fazer bastante diferença quando trabalhamos com arquivos do Windows dentro do Linux.
Por padrão, o WSL monta unidades como:
/mnt/c
/mnt/datravés do DrvFs.
No /etc/wsl.conf, podemos definir opções adicionais de montagem:
[automount]
options="metadata"O metadata permite armazenar metadados de permissões Linux nos arquivos do Windows montados pelo WSL.
Isso ajuda quando precisamos trabalhar com comandos Linux que dependem de permissões de arquivos.
6. Usando umask e fmask
Uma configuração que também pode ser utilizada é:
[automount]
options="metadata,umask=022,fmask=011"As máscaras controlam quais permissões serão removidas dos arquivos e diretórios.
Por exemplo:
umask=022é uma configuração bastante comum porque normalmente resulta em diretórios com comportamento semelhante a:
755Enquanto o fmask pode ser usado para aplicar uma máscara específica aos arquivos.
Uma diferença importante é:
umaskafeta arquivos e diretórios;fmaskafeta arquivos;dmaskpode ser usado especificamente para diretórios.
A documentação do WSL também observa que essas opções de máscara dependem do uso de metadata.
Uma observação importante
No arquivo final, não coloque duas seções [automount] diferentes como em alguns exemplos encontrados na internet.
Prefira uma única seção:
[automount]
options="metadata,umask=022,fmask=011"Ou, caso você não precise das máscaras:
[automount]
options="metadata"Os dois exemplos são alternativas.
7. Minha configuração base
Separando corretamente as configurações entre os dois arquivos, uma configuração próxima da que uso fica assim.
%UserProfile%\.wslconfig
[wsl2]
memory=16GB
processors=8
swap=2GB
# Ative quando fizer sentido para seu ambiente de rede
# networkingMode=mirrored/etc/wsl.conf
[boot]
systemd=true
[network]
generateHosts=false
[automount]
options="metadata,umask=022,fmask=011"A vantagem de separar dessa forma é saber exatamente o que é uma configuração global do WSL2 e o que pertence à distribuição Linux.
8. Um detalhe importante sobre desempenho
Existe outro ajuste que considero ainda mais importante do que várias opções do .wslconfig: onde os projetos estão armazenados.
Se o principal conjunto de ferramentas utilizado no projeto roda dentro do Linux, prefiro manter os projetos no filesystem Linux:
/home/fernando/projectsem vez de:
/mnt/c/Users/Fernando/projectsA recomendação oficial da Microsoft é manter os arquivos no mesmo sistema operacional das ferramentas que os utilizam com maior frequência.
Por exemplo, ferramentas Linux como:
git
npm
composer
php
maketendem a funcionar melhor quando o projeto está no filesystem Linux.
Isso pode fazer diferença principalmente em projetos com milhares de arquivos, como:
node_modules
vendor
.git
cache
buildQuando preciso abrir os arquivos pelo Windows Explorer, posso fazer isso diretamente pelo WSL:
explorer.exe .Assim consigo manter os arquivos no filesystem Linux sem abrir mão da integração com o Windows.
9. Como aplicar alterações
Quando alterar o .wslconfig ou /etc/wsl.conf, não basta simplesmente fechar a janela do terminal.
Uma forma prática de reiniciar o WSL é:
wsl --shutdownDepois:
wslTambém é possível verificar se existem distribuições ainda em execução:
wsl --list --runningEsse detalhe é importante porque alterações de configuração só entram em vigor quando a instância do WSL é reiniciada.
10. Como verificar a configuração
Depois de reiniciar, gosto de verificar rapidamente o ambiente.
Memória
free -hCPUs
nprocSystemd
systemctl is-system-runningMontagens
mount | grep /mntDistribuições instaladas
No Windows:
wsl --list --verboseVersão do WSL
wsl --versionIsso ajuda a diferenciar um problema de configuração de um problema relacionado à versão do próprio WSL.
11. O que realmente vale a pena configurar?
Não existe uma configuração universalmente correta para WSL2.
Minha abordagem é começar com o mínimo necessário e adicionar ajustes conforme o ambiente exige.
Normalmente penso em quatro categorias:
Recursos
memory=16GB
processors=8
swap=2GBServiços Linux
[boot]
systemd=trueRede
[network]
generateHosts=falseou:
networkingMode=mirroredArquivos
[automount]
options="metadata,umask=022,fmask=011"O objetivo não é ter o maior número possível de configurações.
É ter um ambiente previsível para o trabalho que realmente será executado nele.
Conclusão
O WSL2 funciona muito bem com os valores padrão, mas entender seus arquivos de configuração permite adaptar o ambiente ao seu fluxo de trabalho.
Para mim, os principais pontos são:
- controlar quanto de CPU e memória o WSL pode utilizar;
- habilitar
systemdquando o projeto precisa de serviços Linux; - controlar como o
/etc/hostsé gerenciado; - ajustar permissões dos discos Windows montados no Linux;
- usar o modo
mirroredquando a rede NAT padrão não atende ao cenário; - manter projetos no filesystem Linux quando as principais ferramentas são executadas dentro do WSL.
Mais importante do que copiar uma configuração pronta é entender o motivo de cada opção.
O melhor .wslconfig é aquele que resolve as necessidades da sua máquina e do seu ambiente de desenvolvimento.
A divisão entre .wslconfig e /etc/wsl.conf, o suporte ao systemd, generateHosts, metadata, máscaras de permissão e o comportamento do modo mirrored seguem a documentação atual da Microsoft. :contentReference[oaicite:1]
A recomendação sobre manter projetos no filesystem Linux quando as ferramentas principais são Linux também é documentada pela Microsoft, especialmente por questões de desempenho de I/O.