# WSL2 - Instalação e Configuração

%[https://youtu.be/dTWXnDWjA_Y] 

---

## O que é WSL2?

WSL2 é uma abreviação para `Windows Subsystem for Linux` ou `Subsistema do Windows para o Linux` que permite que os devs executem um ambiente GNU/Linux, incluindo a maioria das linhas de comando, utilitários e aplicativos do Linux diretamente no Windows, sem modificações e sem a sobrecarga de uma máquina virtual tradicional ou instalação `dualboot`.

---

## Perguntas Frequentes

### Por que usar o WSL2 em vez do Linux em uma VM?

O WSL2 requer menos recursos (CPU, memória e armazenamento) do que uma máquina virtual completa. O WSL2 também permite que você execute aplicativos e ferramentas de linha de comando do Linux juntamente com os aplicativos de linha de comando e da área de trabalho do Windows, além de acessar os arquivos do Windows de dentro do Linux e vice-versa. Na prática é como se seu Windows e Linux fosse uma coisa só.

### O WSL 2 usa o Hyper-V?

O WSL2 usa uma opção do Hyper-V para habilitar a virtualização chamada de `Virtual Machine Platform` (Plataforma de máquina virtual), mas não é necessário ter o Hyper-V completo para usar o WSL2, apenas essa opção é o suficiente.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662915895430/HyAwE24Q1.png align="center")

---

## Especificações e Versões

<div data-node-type="callout">
<div data-node-type="callout-emoji">⚠</div>
<div data-node-type="callout-text">Toda a documentação está baseada nas versões do Windows 11 e Ubuntu 20.04 LTS que são as mais atuais no momento em que criamos esse conteúdo.</div>
</div>

---

## Instalando o WSL2

1- Clique em `Iniciar` → Procure por Prompt de Comando `(CMD)` → clique com o lado direito do mouse → `Executar como Administrador`

2- Digite o comando:

```plaintext
wsl --list --online
```

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916376083/x_95VRefE.png align="center")

3- Digite o comando:

<div data-node-type="callout">
<div data-node-type="callout-emoji">⚠</div>
<div data-node-type="callout-text">Substitua: <code>Ubuntu-20.04</code> pelo nome da distro que você deseja usar</div>
</div>

```plaintext
wsl --install -d Ubuntu-20.04
```

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916427190/c2TXbInEG.png align="center")

4- Reinicie o computador, nesse momento será aberto automaticamente uma janela com o terminal para você definir um nome de usuário e senha para finalizar a configuração do seu WSL2

<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><strong>Dica:</strong> Você pode verificar a instalação do WSL2 abrindo novamente seu Prompt de Comando (<code>CMD</code>) como Administrador → digitando o comando <code>wsl -l -v</code></div>
</div>

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916460657/x-YZqIfNe.png align="center")

5- Ainda no Prompt de Comando (`CMD`) como Administrador, atualize o WSL2 Kernel digitando o comando:

```plaintext
wsl --update
```

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916498571/XA6BZZQ1Q.png align="center")

---

## Limitando o uso da Memória e o Processador do WSL2

Pode acontecer que após a instalação do WSL2, seu computador fique lento ou travando, então se você abrir o Gerenciador de Tarefas, poderá ver um processo chamado `Vmmem` consumindo quase que toda a sua capacidade de memória.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916616896/RepxgpxUQ.png align="center")

Então para evitarmos esse comportamento, vamos fazer:

6- Pressione `Windows + R` → digite `%UserProfile%` → crie um arquivo chamado `.wslconfig`

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916640724/Iu2MpsXcr.png align="center")

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916656923/WpYPI3lua.png align="center")

7- Adicione o conteúdo

<div data-node-type="callout">
<div data-node-type="callout-emoji">ℹ</div>
<div data-node-type="callout-text">Altere de acordo com as configurações do seu laptop, abaixo é só um exemplo</div>
</div>

```plaintext
[wsl2]
memory=6GB # Limita a memória para 6GB
processors=2 # Limita para 2 processadores lógicos
swap=0 # desabilita o swap
localhostForwarding=true
```

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916698561/ywRWzHqzs.png align="center")

---

## Acessando as pastas do Linux direto do Windows

8- Pressione `Windows + R` e digite `\\wsl$\<distro>`

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916735835/Lli5oZhY8.png align="center")

9- Clique no ícone `Linux`

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916758124/-9wayr_N1.png align="center")

---

## WSLg - Acessando aplicativos do Linux com Interface Gráfica direto no Windows

Um novo recurso bem legal do WSL2 é o `WSLg` que é uma abreviação para `Windows Subsystem for Linux GUI` e o objetivo é permitir que você abra aplicativos sendo executados no Linux diretamente do Windows, tornando uma experiência totalmente integrada, legal né! Vamos testar?

1- Abra seu terminal e digite o comando:

```bash
sudo apt update
sudo apt install stacer
stacer
```

2- No Windows → clique em Iniciar → digite `stacer` → abra diretamente do Windows o aplicativo sendo executado de dentro do seu Linux do WSL2

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1662916815928/h4j3tVQMC.png align="center")

E então você poderá fazer a mesma coisa para outros aplicativos que instalar no seu Linux.

---

## Sem espaço no seu disco? Mova para outra partição ou disco \[Opcional\]

1- Verifique as distribuições instaladas do WSL2:

```plaintext
wsl --list -v
```

2- Se a instalação que você deseja mover para outro disco ou partição ainda estiver em execução, primeiro precisamos interrompê-la, por exemplo para parar o `Ubuntu-20.04` digitaria o comando:

```plaintext
wsl -t Ubuntu-20.04
```

3- Crie uma pasta no disco ou partição onde você deseja que seu WSL2 "exportado" fique, por exemplo para usar o diretório `D:\WSL2\Export` digitaria o comando:

```plaintext
mkdir D:\WSL2\Export
```

4- Agora vamos exportar nosso WSL2 para uma pasta chamada `Ubuntu-20.04.tar` para o destino que criamos no passo anterior:

```plaintext
wsl --export Ubuntu-20.04 "D:\WSL2\Export\Ubuntu-20.04.tar"
```

5- Cancele o registro da distribuição e isso removerá o `Ubuntu-20.04` da lista do WSL2 que vimos nos passos anteriores antes de interromper sua execução, para isso digite o comando:

```plaintext
wsl --unregister Ubuntu-20.04
```

6- Nesse momento, vamos criar uma pasta no disco ou partição onde você deseja que seu WSL2 fique em definitivo, por exemplo para usar o diretório `D:\WSL2\Ubuntu-20.04` digitaria o comando:

```plaintext
mkdir D:\WSL2\Ubuntu-20.04
```

7- Por fim, vamos importar com o comando abaixo e isso também já irá registrar novamente sua distribuição WSL2:

```plaintext
wsl --import Ubuntu-20.04 "D:\WSL2\Ubuntu-20.04" "D:\WSL2\Export\Ubuntu-20.04.tar"
```

<div data-node-type="callout">
<div data-node-type="callout-emoji">☑</div>
<div data-node-type="callout-text">Pronto! Agora seu WSL2 estará salvo em outro disco ou partição que você desejou usar. 🥳🎉</div>
</div>

---

## Instale Múltiplas Instâncias das Distribuições \[Opcional\]

Haverá momentos que você já tem um Ubuntu instalado, mas gostaria de instalar mais instâncias da mesma versão e distribuição, como por exemplo ter 2 ou mais Ubuntu `Focal Fossa 20.04`, então para isso a princípio parece óbvio executar o comando de instalação que vimos no início deste artigo:

```plaintext
wsl --install -d Ubuntu-20.04
```

Porém, se executarmos novamente o mesmo comando, vamos receber a seguinte mensagem `"Ubuntu 20.04 LTS já está instalado"`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680705701674/a4c43f07-8a4d-425d-ac34-e9be61ce03e0.png align="center")

Bom, então se mesmo assim você ainda deseja ter outra instância dessa distribuição instalada além dessa que já está instalada, precisamos de alguns passos:

1- Acesse o site:

* 👉 [https://cloud-images.ubuntu.com/](https://cloud-images.ubuntu.com/)
    

2- Clique em `Releases`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680705833074/0f2f128a-fb78-4091-8be3-02e263895dcb.png align="center")

3- Clique no código ou na versão que você esteja querendo instalar, no nosso exemplo estamos tentando a versão `Focal Fossa`, então o equivalente a isso é `20.04`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680705983367/3fcceae0-98d6-4eb1-8d7e-f417395af2c0.png align="center")

4- Vá para a última e mais recente `release` disponível

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680706060008/7ef6418e-3a1c-42e7-84bc-52f65fe91035.png align="center")

5- Haverá muitas opções disponíveis, procure pela que está nesse formato e substitua para os valores reais:

```plaintext
ubuntu-x.x-server-cloudimg-amd64-wsl.rootfs.tar.gz
```

ou seja, para nosso exemplo seria:

```plaintext
ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz
```

6- Isso provavelmente fará o download para sua pasta `Downloads` do Windows

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680706391266/d04efdf2-c595-4c66-80c0-ffdb8fe5dab5.png align="center")

7- Clique em `Iniciar` → Procure por Prompt de Comando `(CMD)` → clique com o lado direito do mouse → `Executar como Administrador` → execute o comando nesse formato substituindo para seus valores reais:

```plaintext
wsl --import <Distribution Name> <Install Folder> <.TAR.GZ File Path>
```

ou seja, para nosso exemplo seria:

```plaintext
wsl --import "Ubuntu-20.04-Tutorial" "C:\_WSL2\Ubuntu-20.04-Tutorial" "C:\Users\SimplesCloud\Downloads\ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz"
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680707614314/dd4d722d-c7c7-450a-a302-7d09a3480951.png align="center")

8- Verifique o status:

```plaintext
wsl -l -v
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680707658928/3bce1813-1be3-4841-a2c6-9d86891a86da.png align="center")

Podemos ver que seu status está `stopped`, então podemos executar com o comando:

```plaintext
wsl -d <Distribution Name>
```

ou seja, para nosso exemplo:

```plaintext
wsl -d Ubuntu-20.04-Tutorial
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680707960362/3926ad0b-1637-488d-9b9c-a77d10d66a63.png align="center")

9- Observe que estamos `logados` com uma conta `root`, então vamos configurar uma nova conta de usuário normal:

```bash
NEW_USER=<USERNAME>
```

ou seja, para nosso exemplo vamos criar o usuário chamado `tech`

```bash
NEW_USER=tech
```

10- Em seguida, execute o seguinte comando para criar a conta de usuário e definir uma senha:

```bash
useradd -m -G sudo -s /bin/bash "$NEW_USER" && \
passwd "$NEW_USER"
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680708654897/215024e7-9c48-4ed8-a289-fa804911ee09.png align="center")

11- Agora precisamos configurar o Ubuntu para fazer login como seu novo usuário por padrão, em vez de root. Para fazer isso, execute o comando abaixo:

```bash
tee /etc/wsl.conf <<_EOF
[user]
default=${NEW_USER}
_EOF
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680708736456/30e85fc0-dc43-40a1-b66a-a501e88faf4c.png align="center")

12- Precisamos agora fazer `logout`

```bash
logout
```

e executar novamente a distro do wsl2:

```plaintext
wsl -d <Distribution Name>
```

ou seja, para nosso exemplo:

```plaintext
wsl -d Ubuntu20.04-Tutorial
```

E podemos observar agora o login com o novo usuário

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680709108005/afd0111a-b2ac-4002-b7d8-6a79382fd32f.png align="center")

13- Opcionalmente podemos adicionar isso como um perfil no Windows Terminal:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680709472627/4994c26f-5c58-411e-99d2-9bc6f715249a.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680709449428/df24174e-6bd4-4fd7-a64f-af46b587007c.png align="center")

---

## Remova uma Distribuição \[Opcional\]

E se você desejar excluir uma distribuição específica do seu WSL2?

1- Verifique as distribuições disponíveis com o comando:

```plaintext
wsl -l -v
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680709628613/1969a925-2a96-4ae0-8000-1c24f21f16ad.png align="center")

2- Deregistre o nome da distribuição:

```plaintext
wsl --unregister <Distribution Name>
```

ou no nosso exemplo:

```plaintext
wsl --unregister Ubuntu-20.04-Tutorial
```

E isso já irá excluir o armazenamento, por exemplo:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680709831830/441abd17-e12d-42a4-b93b-7dc80443c1a6.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680709847632/2040b5f4-ac48-485b-8f29-ee30433a6df7.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680709875637/8062840d-dac7-43ce-8aa4-0ae8c88b63b3.png align="center")

---

## Conclusão

Neste artigo completo, expliquei o que é, para que serve e como podemos instalar e configurar o WSL2. Também listei passos opcionais para cenários diferentes como mover para outro diretório, instalar múltiplas vezes e também sugeri dicas legais de como acessar os arquivos do Linux pelo Windows facilmente, além de abrir aplicativos do Linux através do Windows por interface gráfica.

<div data-node-type="callout">
<div data-node-type="callout-emoji">✅</div>
<div data-node-type="callout-text">Espero que essas informações tenham sido úteis para você! 🥳🚀</div>
</div>
