WSL2: Linux de verdade dentro do Windows

Prévia grátis 5 min de leitura

Seu notebook Windows, uma cozinha Linux

Aqui vai um fato que muda a forma como você deve pensar na sua máquina Windows: quase toda aplicação Rails do mundo roda em Linux em produção. Quando você faz deploy para um VPS, para o Heroku, para o Fly.io ou para um cluster Kubernetes, seu código roda em uma máquina Linux: não em Windows.

Por anos isso significou uma escolha ruim para quem usa Windows: fazer dual-boot com Linux, rodar uma máquina virtual pesada, ou brigar com peculiaridades do Windows que nenhum guia de Rails prevê. O WSL2 (Windows Subsystem for Linux, versão 2) acaba com essa escolha. Ele roda um kernel Linux de verdade, dentro de uma máquina virtual leve, conectado diretamente ao Windows. Você ganha um apt de verdade, um filesystem de verdade, um bash de verdade (os mesmos fundamentos que seu servidor de produção usa) enquanto seu navegador, seus arquivos e seus aplicativos Windows continuam rodando onde já estavam.

WSL1 vs. WSL2: por que a versão importa

O WSL1 veio primeiro e era engenhoso, mas incompleto: ele traduzia chamadas de sistema Linux para chamadas do Windows na hora, sem um kernel Linux de verdade por baixo. Extensões nativas de gems e detalhes internos de bancos de dados que dependem do comportamento real do kernel podiam se comportar de forma estranha.

O WSL2 é um design diferente:

+----------------------------------------------------------+
|                        WINDOWS 11                         |
|                                                            |
|  +-------------------+      +---------------------------+ |
|  | Windows Terminal  |      |  VS Code (Windows)         | |
|  | Explorer, navegador|     |  + extensão Remote-WSL     | |
|  +-------------------+      +--------------+--------------+ |
|                                            | ponte           |
|  +-----------------------------------------v--------------+ |
|  |    Máquina virtual leve (Hyper-V), inicia em segundos   | |
|  |  +----------------------------------------------------+ | |
|  |  |            Kernel Linux de Verdade                  | | |
|  |  |  +------------------------------------------------+ | | |
|  |  |  | Espaço de usuário Ubuntu: apt, bash, rbenv,     | | | |
|  |  |  | PostgreSQL, Ruby, Rails, Puma                    | | | |
|  |  |  +------------------------------------------------+ | | |
|  |  +----------------------------------------------------+ | |
|  +-----------------------------------------------------------+ |
+----------------------------------------------------------+

A caixa de dentro é um kernel Linux de verdade: o mesmo que sobe em um servidor Ubuntu bare-metal. O apt se comporta como apt. O pg_ctl se comporta como pg_ctl. Extensões nativas de gems compilam como compilam em produção.

A única regra que poupa suas horas: onde seu código mora

Windows e WSL2 conseguem enxergar os arquivos um do outro, mas não na mesma velocidade. Os discos do Windows ficam montados dentro do WSL2 em /mnt/c, /mnt/d, e por aí vai, acessados através de um protocolo de filesystem no estilo de rede. A quantidade enorme de leituras pequenas de arquivo que um bundle install ou rails server faz deixa o Rails lento nessa fronteira, e a observação de arquivos (da qual dependem o recarregamento de código do Rails e o watcher do Tailwind) pode não perceber mudanças.

A regra para todo este curso: seus projetos Rails moram dentro do filesystem do Linux, em um caminho como ~/code/, nunca em /mnt/c/Users/.... Ruby, PostgreSQL e sua app inteira instalam e rodam do lado Linux. O Windows vira a tela: o Windows Terminal mostra o shell, a extensão Remote-WSL do VS Code mostra o editor, seu navegador mostra o localhost:3000. O processamento em si nunca sai do Linux.

O que você vai montar

Ferramenta Função O que ela substitui
WSL2 + Ubuntu Uma máquina Linux de verdade, rodando ao lado do Windows Dual-boot ou uma VM completa
apt Instala software do sistema A Microsoft Store, para ferramentas de dev
build-essential Compiladores (gcc, make) que compilam Ruby e gems nativas Visual Studio Build Tools
rbenv Instala e alterna versões de Ruby por projeto Igual em macOS/Linux
PostgreSQL O banco de dados com o qual o Rails conversa Igual em macOS/Linux
VS Code + Remote-WSL Editor no Windows, código e terminal no Linux Um esquema estilo área de trabalho remota

Confira a versão do seu Windows

O WSL2 exige o Windows 10 versão 2004 (build 19041) ou mais recente, ou qualquer edição do Windows 11. Abra o PowerShell e rode:

winver

Uma janelinha mostra sua versão e o número da build. Se você estiver abaixo da build 19041, rode o Windows Update antes de continuar: tudo mais neste curso depende disso.

Como este curso está organizado

  1. Instalar o WSL2, o Ubuntu e as ferramentas de build
  2. Se familiarizar com o shell e a fronteira entre Windows e Linux
  3. Instalar o Ruby com rbenv
  4. Instalar e rodar o PostgreSQL dentro do WSL2
  5. Fazer a ponte entre o VS Code e o WSL2 com a extensão Remote-WSL
  6. Criar e rodar sua primeira app Rails

Todo comando deste curso foi testado no Ubuntu 24.04 sob o WSL2 no Windows 11. Digite os comandos você mesmo em vez de copiar: seus dedos aprendem mais rápido que seus olhos.

Por que não uma VM completa ou dual-boot?

Você poderia instalar o VirtualBox e uma VM Ubuntu completa, ou fazer dual-boot entre Windows e Linux lado a lado. O WSL2 ganha dos dois para o trabalho diário com Rails:

  • Integração: seu clipboard do Windows, seu navegador e seus arquivos estão a um explorer.exe . de distância do seu shell Linux: sem copiar e colar entre janelas de VM.
  • Velocidade: uma VM leve e feita sob medida, com memória dinâmica, ganha de uma VM genérica que sobe uma área de trabalho completa que você nunca vai olhar.
  • Uma máquina só para manter: sem particionamento, sem um segundo sistema operacional para atualizar e reiniciar: o Ubuntu liga e desliga como um aplicativo.

Vamos ligar sua cozinha Linux.

Aula 1 de 7 · grátis

Continue com a aula 2

Instalando WSL2, Ubuntu e ferramentas de build

Instalação do WSL2 e do Ubuntu com um comando, do Windows Terminal e das ferramentas de build pelo apt.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...