DEV Community

Wesley Gonçalves
Wesley Gonçalves

Posted on • Updated on

Configurando o WSL com o Ubuntu 22.04 + ZSH

O WSL é uma excelente alternativa para desenvolvedores que querem possuir todas as vantagens do Windows e ainda manter toda a produtividade que o ambiente Linux pode oferecer.

Esta postagem é uma versão customizada do artigo da Fullcycle que está nesse link: Guia rápido do WSL2 + Docker.

Também vou deixar o aqui os videos do youtube e postagens que me ajudaram a fazer esta configuração.

Índice

Instalando o WSL2

Antes de iniciar a instalação do WSL2 propriamente dita acredito que valha muito a pena instalar antes o windows terminal por ser um emulador de terminal melhorar muito nossa produtividade alem de ser altamente customizável. Pode ser encontrado diretamente na Microsoft Store procurando por windows terminal, também será mostrado o windows terminal preview que é a versão beta que recebe as atualizações mais recentes.

Image description

Agora que temos o windows terminal instalado podemos executa-lo em modo administrador, de acordo com a documentação mais atualizada, você deve rodar o comando.

Para Windows 11

wsl --install
Enter fullscreen mode Exit fullscreen mode

O processo pode ser um pouco demorado e por padrão no windows 11 a distro Ubuntu é instalada, para especificar qual distro você deseja instalar primeiro precisa listar as disponíveis usando o comando:

wsl --list --online
Enter fullscreen mode Exit fullscreen mode

E o resultado apresentado no terminal será este:

 NAME               FRIENDLY NAME
Ubuntu             Ubuntu
Debian             Debian GNU/Linux
kali-linux         Kali Linux Rolling
SLES-12            SUSE Linux Enterprise Server v12
SLES-15            SUSE Linux Enterprise Server v15
Ubuntu-18.04       Ubuntu 18.04 LTS
Ubuntu-20.04       Ubuntu 20.04 LTS
Ubuntu-22.04       Ubuntu 22.04 LTS
OracleLinux_8_5    Oracle Linux 8.5
OracleLinux_7_9    Oracle Linux 7.9
Enter fullscreen mode Exit fullscreen mode

Escolhida a distro executamos o comando com o nome igual ao apresentado na lista acima.

 wsl --install -d Ubuntu-22.04 
Enter fullscreen mode Exit fullscreen mode

Para Windows 10

Aqui as etapas mudam um pouco, inicialmente vamos rodar o seguinte comando para habilitar o WSL, sempre em modo administrador

 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Enter fullscreen mode Exit fullscreen mode

Em seguida habilitamos a virtualização

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Enter fullscreen mode Exit fullscreen mode

Em seguida reiniciamos o sistema.

Agora precisamos baixar o pacote de atualização do kernel do linux e executa-lo. Com a instalação concluída com sucesso vamos tornar a versão do WSL2 como a padrão.

wsl --set-default-version 2
Enter fullscreen mode Exit fullscreen mode

Configuração de recursos de maquina no WSL

Em termos de recurso o WSL é um lobo feroz, podendo consumir por padrão os seguintes números.

  • Quase totalmente o processamento disponível
  • 80% da memória RAM
  • 25% do SWAP

Para limitar esse consumo basta criar o arquivo .wslconfig em sua pasta raiz do usuário C:\Users\nameuser como demostrado a seguir.

[wsl2]
memory=3GB
processors=4
swap=4GB
Enter fullscreen mode Exit fullscreen mode

Escolhendo uma distro Linux

Abra a Microsoft store e escolha sua distro.

Image description

Selecione a que mais te agradar clique em instalar, nesse caso selecionaremos a 22.04 LTS

Image description

Terminada a instalação da distro ao inicia-la teremos a seguinte imagem solicitando a criação de um usuário para o sistema. Com isso temos certeza que nosso WSL2 está funcionando plenamente.

Image description

Com sua conta criada com sucesso está será sua visualização, agora oficialmente você é um usuário do Linux no Windows. Parabéns!!!

Image description

PS: Caso nenhuma das distro apresentadas seja do seu agrado é possível instalar qualquer distro, mas como o foco aqui é no Ubuntu deixo somente o link para quem quiser se aventurar. Importar qualquer distribuição do Linux a ser usada com o WSL

Usando docker nativo

Além de reduzir o consumo de recursos drasticamente em relação ao docker desktop temos o controle total dentro do Linux não dependendo de um terceiro. Neste link é explicado como fazer a instalação em outras distros Linux fora o Ubuntu.

Inicialmente temos que remover todas as versões antigas, mas isso é só mais uma garantia do que uma necessidade uma vez que estamos instalando o sistema

sudo apt-get remove docker docker-engine docker.io containerd runc
Enter fullscreen mode Exit fullscreen mode

No meu caso a saída foi essa pois a distro já tinha docker e docker-engine instaladas.

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package 'docker.io' is not installed, so not removed
E: Unable to locate package docker
E: Unable to locate package docker-engine
Enter fullscreen mode Exit fullscreen mode

Agora faremos a atualização do sistema seguida da ativação dos pacotes com HTTPS.

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
Enter fullscreen mode Exit fullscreen mode

Concluída essa etapa vamos habilitar o docker para uso no Ubuntu

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Enter fullscreen mode Exit fullscreen mode

Para configurar o repositório usamos o comando.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Enter fullscreen mode Exit fullscreen mode

Rodamos a atualização mais uma vez.

sudo apt-get update
Enter fullscreen mode Exit fullscreen mode

Estamos quase lá, só falta realizar a instalação do pacote de fato usando comando.

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Enter fullscreen mode Exit fullscreen mode

Deu certo! agora você possui o docker instalado, precisamos habilitar nosso usuário para a ferramenta.

sudo usermod -aG docker $USER
Enter fullscreen mode Exit fullscreen mode

Agora ligamos o docker usando o comando

sudo service docker start
Enter fullscreen mode Exit fullscreen mode

OBS: sempre use o comando acima para iniciar/ligar o docker no wsl.

E testamos usando o comando de hello world do docker

sudo docker run hello-world
Enter fullscreen mode Exit fullscreen mode

Habilitando o VScode

Eu vou admitir que esteja usando o VScode, mas caso esteja usando outra IDE vou deixar o link do tutorial da fullcycle que explica como fazer isso, show! No VScode basta realizar a instalação do pacote de extensões Remote Development, feito isso você verá o ícone do pacote no canto inferior esquerdo do VScode, clicando lá essa será a imagem.

Image description

Selecione a segunda opção para selecionar em qual distro instalada no WSL deseja que o VScode seja usada e pronto agora temos a IDE funcionado dentro do Linux via WSL2. E agora no canto inferior esquerdo temos indicando nossa distro instalada como no exemplo da imagem abaixo.

Image description

OBS: Para abrir a IDE no WSL basta dar o comando

code .

E na primeira vez que fizer isso ele fara um download e instalação da versão mais recente, também é importante mencionar que algumas de suas extensões terão que ser instaladas novamente.

ZSH

Por padrão temos o bash como shell instalado no ubuntu, mas para caso queira listar todos os shells disponíveis basta usar o comando.

sudo cat /etc/shells
Enter fullscreen mode Exit fullscreen mode

O resultado é uma saída como essa.

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen
Enter fullscreen mode Exit fullscreen mode

Iniciamos atualizando o sistema

sudo apt update
Enter fullscreen mode Exit fullscreen mode

Feito isso fazemos a instalação do zsh pelo comando

sudo apt install zsh -y
Enter fullscreen mode Exit fullscreen mode

OBS: o “-y” no final do comando é para não ter confirmação antes da instalação.

Para verificar a versão instalada usamos o comando.

zsh --version
Enter fullscreen mode Exit fullscreen mode

Antes de definir o zsh como shell padrão temos que saber onde o arquivo binário se encontra usando o comando.

whereis zsh
Enter fullscreen mode Exit fullscreen mode

Essa é a saída apresentada.

zsh: /usr/bin/zsh /usr/lib/x86_64-linux-gnu/zsh /etc/zsh /usr/share/zsh /usr/share/man/man1/zsh.1.gz
Enter fullscreen mode Exit fullscreen mode

Pronto agora que temos o caminho basta executar

sudo usermod -s /usr/bin/zsh $(whoami)
Enter fullscreen mode Exit fullscreen mode

Feito isso, feche o terminal e abra novamente e para ter certeza que está usando o ZSH execute.

echo $SHELL
Enter fullscreen mode Exit fullscreen mode

Sua saída será o caminho do binário do shell padrão, no nosso caso.

/usr/bin/zsh
Enter fullscreen mode Exit fullscreen mode

Nerds Fonts

Antes de seguir com nossa configuração precisamos instalar uma fonte do tipo nerd fonts que nada mais são fonts que possuem ícones incorporados, então vamos fazer o download de uma delas.

Feito isso agora instale as fontes e feche e abra novamente o terminal e em configurações -> padrões -> fonts selecione MesloLGS NF. Nas configurações do vscode escreva terminal.integrated.fontFamily e selecione a mesma fonte.

O terminal integrado do VScode que roda no WSL não vai reconhecer essa font, pois a IDE está rodando no linux e a font está somente no windows, para corrigir isso vamos fazer assim.

Criamos a pasta onde nossa font vão ficar.

 sudo mkdir  /usr/share/fonts/meslolgsnf
Enter fullscreen mode Exit fullscreen mode

Agora copiamos nossas fonts para este diretório, mas para localizar nossas fonts baixadas no windows a partir do wsl fazemos acesso ao diretório /mnt/c que nada mais é do que nosso disco C:/ visto a partir do Linux. Basta agora navegar pelos diretórios até onde fica os arquivos das fonts, no meu caso ficou assim.

  cd /mnt/c/Users/<nome_usuario>/Downloads
Enter fullscreen mode Exit fullscreen mode

Agora copiamos cada uma das fonts pelo comando

   sudo cp MesloLGS\ NF\ Italic.ttf /usr/share/fonts/meslolgsnf
Enter fullscreen mode Exit fullscreen mode

Tudo isso foi necessário para agora instalar o powerlevel10k que é um tema para o shell ZSH e deixar nosso terminal mais bonito e performático quando somado aos plugins.

powerlevel10k

Fazendo uso da instalação manual usamos o comando.

  git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
Enter fullscreen mode Exit fullscreen mode

Feche o terminal e abra novamente, assim você inicia a configuração do tema, siga as instruções e customize seu terminal da forma que mais te agrada. Caso queira mudar o estilo apresentado basta usar o comando.

  p10k configure
Enter fullscreen mode Exit fullscreen mode

e fazer o processo novamente.

plugins zsh

Bonito o terminal já está, mas precisamos deixar performático, pra isso vamos usar os seguintes plugins:

  • zsh-autosuggestions
  • zsh-syntax-highlighting

zsh-autosuggestions

Esse plugin é responsável por usar nosso histórico de comandos para sugerir qual próximo comando você deseja usar e auto completa o comado quando usamos TAB ou seta direita. Para instalar executamos.

 git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
Enter fullscreen mode Exit fullscreen mode

Agora adicionamos os caminho do plugin em nosso arquivo /.zshrc

source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
Enter fullscreen mode Exit fullscreen mode

Feche e abar novamente o terminal para usar o plugin

zsh-syntax-highlighting

Esse plugin é responsável dar realce/cores nos comandos, diretórios e arquivos no sistema no terminal.

sudo git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
Enter fullscreen mode Exit fullscreen mode

Para ativar o plugin em nosso Shell executamos o comando.

 source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Enter fullscreen mode Exit fullscreen mode

E é isso seu ambiente está totalmente pronto! Boa sorte!

Top comments (0)