Windows Subsystem for Linux
O Windows Subsystem for Linux (WSL) é uma ferramenta de código aberto apoiada pela Microsoft que permite a emulação de um sistema operacional Linux dentro do Windows. A atual versão na data de escrita deste livro é a WSL 2, que traz grandes melhorias em relação à versão anterior.
O WSL permite instalar diversas distribuições Linux, até mesmo concomitantemente. Este guia oficial da Microsoft mostra algumas opções. Para este guia, vamos nos manter na distribuição Ubuntu, que é a padrão do WSL.
Pré-requisitos
Se você estiver usando o Windows 11, ou o Windows 10 versão 2004 (Build 19041) ou superior, o WSL 2 já estará habilitado, e você pode pular para a próxima seção.
Caso utilize uma versão mais antiga, seguiremos os passos recomendados pelo guia oficial da Microsoft.
Ainda assim, para sistemas com arquitetura x64, é necessário ter instalado a versão 1903 do Windows 10 ou posterior, com a Build 18362.1049 ou posterior. Versões mais antigas do Windows 10 não possuem suporte para o WSL 2.
Como alternativa, você pode ler o capítulo sobre a instalação do MSVC para compilar programas diretamente para executáveis do Windows. Ainda assim, não recomendamos essa abordagem, uma vez que instalar ferramentas para o Windows nativamente tende a ser mais complicado, instável e carecer de boa documentação. Caso possível, opte sempre por usar uma distribuição Linux ou o WSL.
Habilitando o WSL
Para habilitar o WSL no sistema, abra o PowerShell como administrador e execute o comando abaixo.
Habilitando a Virtualização
Para habilitar a virtualização no sistema, execute o comando abaixo no PowerShell como administrador.
Atualizando para o WSL 2
Baixe o pacote de atualização do WSL 2 pelo repositório da Microsoft e instale-o. Você pode verificar a origem do link pelo guia oficial da Microsoft.
Após o download, execute o instalador e siga as instruções.
Definindo o WSL 2 como padrão
Por fim, defina a versão 2 do WSL como padrão com o comando abaixo, ainda no PowerShell como administrador.
Instalando o WSL
Primeiramente, devemos instalar o WSL propriamente dito. Para isso, abra o PowerShell e execute o comando abaixo.
Digitando wsl
, recebi a seguinte mensagem:
O Subsistema do Windows para Linux não tem distribuições instaladas
.
Bom, agora que temos o WSL, vamos instalar uma distribuição Linux! Mas, por precaução, reinicie o computador antes de prosseguir.
Instalando o Ubuntu
Agora que o WSL está habilitado, podemos instalar a distribuição Ubuntu.
A maneira mais fácil de fazer isso é pela Microsoft Store. Procure por uma aplicação chamada Ubuntu, sem indicar a versão. Ela é a primeira opção da imagem a seguir.
Você também pode acessar essa página pelo link direto para a loja da Microsoft.
Clique no botão de instalar, e aguarde o download e instalação da distribuição.
Configurando o Ubuntu
Pesquise pelo Ubuntu no Menu Iniciar e abra o aplicativo.
O que será aberto, na verdade, é uma janela do terminal. Após aguardar alguns segundos, o sistema pedirá para criar um usuário e senha.
Eu usei o mesmo usuário do Windows, mas você pode criar um novo usuário se preferir. Outro detalhe é que, nos sistemas Linux, a senha não aparece enquanto você digita, fica apenas o espaço em branco mesmo. Não se preocupe, digite-a até o final e pressione Enter. Após repetir a senha, pressione Enter novamente.
O sistema fará as últimas configurações e criara um usuário de administrador para você dentro do Ubuntu.
Lembre-se da sua senha, pois ela será solicitada sempre que você precisar de permissões de administrador.
Em caso de esquecê-la, deixo aqui um guia de como recuperá-la.
Configurando o Windows Terminal
Se tudo tiver corrido bem, você verá uma nova entrada para o Ubuntu na aba de perfis do Windows Terminal.
Eu acho mais prático ter o Ubuntu como padrão quando inicio o terminal.
Para isso, abra as configurações do Windows Terminal.
Na seção Startup
(ou Inicialização
), você pode definir o perfil padrão.
Selecione a entrada do ubuntu com o ícone do pinguim Tux e clique em Salvar
.
Atualizando os pacotes
A maioria das ferramentas que você instalará no Ubuntu será por meio do gerenciador de pacotes apt
.
Para garantir que tudo está atualizado, execute o comando abaixo.
A palavra sudo
é usada para executar um comando com permissões de administrador.
Ela solicitará a senha do usuário que você criou anteriormente.
Então, para de fato instalar as atualizações, execute o comando abaixo.
Então, quando perguntado se deseja continuar, pressione Y e Enter para confirmar.
Estrutura de diretórios
Aqui vale um pequeno apanhado de como funciona a estrutura de diretórios no Linux. Ela varia um pouco a depender da distribuição, mas a estrutura básica é a mesma.
- O sistema todo é organizado dentro de uma pasta, a qual chamamos de
ROOT
ou/
.- Ela não tem realmente um nome, por isso a referenciamos apenas com uma barra.
- Dentro dela, temos diversas pastas, que são responsáveis por organizar, por exemplo:
bin
: programas executáveis instalados a nível de sistema (pelo apt ou dnf)opt
: programas instalados manualmente a nível de sistema.usr
: programas instalados pelos usuários.etc
: arquivos de configuração do sistema.lib
: bibliotecas compartilhadas por programas.home
: pastas dos usuários.mnt
: referências a dispositivos de armazenamento montados no computador, como pendrives e HDs.
Há outras pastas (chamadas comumente de diretórios) importantes, mas com o tempo você pega o jeito.
A que nos interessa no momento é a pasta home
.
Dentro dela, o sistema cria uma pasta para cada usuário, nomeada com o nome do usuário.
Por exemplo, o meu usuário é gabriel
, então a pasta do meu usuário é /home/gabriel
.
Essa pasta é tão importante que ela tem uma variável de ambiente que a referencia, chamada de HOME
.
Pressione q para sair do texto de boas-vindas do Zsh.
Digite no terminal o comando echo $HOME
e veja o que aparece.
Depois, digite echo $HOME
no PowerShell e veja o que aparece.
Tanto o Windows quanto o Linux possuem essa variável de ambiente, mas perceba que o caminho é diferente!
De fato, eu uso o mesmo usuário no Ubuntu e no Windows, mas o caminho da pasta do usuário é diferente porque se tratam de duas pastas completamente distintas.
O WSL cria de fato todo um novo ambiente de emulação dentro do Windows, com suas próprias pastas e configurações. Mas como acessar esse ambiente?
Se tudo tiver sido instalado corretamente, você verá uma nova entrada no Explorador de Arquivos chamada Linux
.
Dentro dela, haverá uma pasta chamada Ubuntu
.
Essa é justamente a pasta /
(raiz) do Ubuntu, a qual mencionamos anteriormente.
Acesse a pasta home
, e então a pasta do seu usuário.
Vemos que há vários arquivos e pastas dentro do diretório do usuário.
O arquivo .bashrc
é o arquivo de configuração do Bash, o shell padrão do Ubuntu.
Já o arquivo .zshrc
é o arquivo de configuração do Zsh, o shell que vamos instalar mais adiante.
Link simbólico
O ideal quando e usa o WSL é deixar todos os seus arquivos e projetos dentro do diretório do usuário no Linux. Assim, tem-se uma performance melhor e evita-se problemas de compatibilidade.
Entretanto, pode ser chato ter que navegar até o diretório do usuário toda vez que você quiser acessar um arquivo. Para facilitar, você pode criar um link simbólico do Windows que aponta para alguma pasta dentro do Ubuntu.
Eu gosto de organizar meus projetos numa pasta chamada dev
na raiz do diretório do usuário.
Para criar uma pasta com esse nome, abra o Windows Terminal no perfil do Ubuntu e execute o comando abaixo.
Vamos criar um arquivo de texto dentro dessa pasta para testar o link simbólico.
Então, abra no terminal um perfil do PowerShell como administrador e execute o comando abaixo para criar um link simbólico.
Então, você poderá acessar a pasta dev
diretamente pelo Explorador de Arquivos.
Abra o Executar com Win + R e digite %USERPROFILE%
para acessar seu diretório de usuário no Windows.
Você verá verá que a pasta dev
está lá, e que apresenta um ícone de atalho.
Clique com o botão direito na pasta e selecione Fixar no Acesso Rápido para tê-la sempre à mão.
Ao acessar a pasta, você verá o arquivo hello.txt
que criamos anteriormente no Ubuntu.