DEV Community

Wesley Gonçalves
Wesley Gonçalves

Posted on

Configurando Alpine Linux, tmux e neovim no WSL2 - parte 1

Configurando o WSL2 com Alpine Linux

Neste tutorial usaremos a Alpine Linux dentro do WSL2, caso nunca tenha configurado o wsl2 em sua maquina deixo esse outro tutorial Configurando o WSL com o Ubuntu 22.04 + ZSH para que tenha por onde começar, aqui vou considerar que já tenha WSL2 funcionando plenamente em sua maquina.

Escolhi essa distro por querer uma distro diferente da minha principal o Manjaro Linux, que também tenho um tutorial de instalação e experimentar o famoso neovim como ferramenta de desenvolvimento.

Índice

Instalando o Alpine Linux no WSL2

Importante lembar que por padrão o Alpine Linux não é suportado pelo WSL2, por isso usaremos o de um projeto da yuk7 que criou um modelo simples e fácil de ser seguido ela tem projetos para as distros:

Aqui deixo o link com a lista das distros que fazem parte deste projeto usando wsl2 diferentes da base do Linux Ubuntu.

Seguindo as recomendações do link basta baixar o arquivo descompactar onde achar melhor, eu fiz no diretório raiz. Agora dentro da pasta descompactada execute o terminal como Administrador do sistema e execute o seguinte comando

.\ Alpine.exe
Enter fullscreen mode Exit fullscreen mode

Feito isso o Alpine Linux será instalado no WSL2, agora feche o terminal e abrindo novamente você verá o sistema instalado, quando tiver feito isso estará logado como root do sistema e daqui a pouco resolvemos isso.

Instalando o básico

Uma coisa interesante sobre o alpine é que ele vem sem nada praticamente, precisamos instalar tudo e vamos ao comando pra isso, mas antes vou deixar a lista de comandos do alpine para que possa entender como manipular o sistema.

apk add zsh curl wget git htop nano doas neofetch
Enter fullscreen mode Exit fullscreen mode

Nesse pacote de instalações estamos colocando o zsh que será nosso shell padrão do sistema, mas antes disso vamos criar nosso usuário nào root do sistema.

Criando um usuário não root

Precisamos criar o usuário com sua respectiva senha, vamos precisar conceder para ele o uso de comandos de root e para isso temos que instalar e configurar sudo e fazemos isso pelo comando.

apk add sudo 
NEWUSER='<username>' 
adduser -g "${NEWUSER}" $NEWUSER 
echo "$NEWUSER ALL=(ALL) ALL" > /etc/sudoers.d/$NEWUSER && chmod 0440 /etc/sudoers.d/ $NEWUSER
Enter fullscreen mode Exit fullscreen mode

agora adicionamos nosso usuário ao grupo wheel pelo comando

echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel 
adduser NEWUSER wheel
Enter fullscreen mode Exit fullscreen mode

Legal, mas ainda não estamos usando o zsh e toda vez que entramos no sistema estamos como root. Para corrigir isso precisamos primeiro editar nosso arquivo passwd

nano etc/passwd  
Enter fullscreen mode Exit fullscreen mode

do resultado apresentado só é importante a primeira e ultima linha como exemplo:

root:x:0:0:root:/root:/bin/ash
.
.
username:x:1000:1000:wesleyotio:/home/username:/bin/ash
Enter fullscreen mode Exit fullscreen mode

agora só mudamos de /ash pra /zsh e salvamos o arquivo, feche o terminal e abra novamente. O zsh estará em pleno funcionamento. Agora execute o comando:

whoami
Enter fullscreen mode Exit fullscreen mode

se sua resposta for root é pelo fato de que o alpine ainda não está configurado para iniciar a partir de seu usuário criado, para corrigir isso feche o terminal e execute novamente a pasta descompactada do alpine linux como administrador e nela execute o seguinte comando passando o nome do seu usuário

.\ Alpine.exe config --default-user <username>
Enter fullscreen mode Exit fullscreen mode

agora quando iniciamos o sistema o comando whoami deve apresentar o nome de seu usuário.

Nerd Fonts

Antes de deixar nosso terminal bonito como fizemos no Configurando o WSL com o Ubuntu 22.04 + ZSH vamos instalar uma fonte do tipo nerd fonts, aqui deixo os links da que tenho usado para você baixar e instalar em seu sistema.

Feito isso agora abra novamente o terminal e em configurações -> padrões -> fonts selecione MesloLGS NF .

powerlevel10k

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. Eu sugiro que use a instalação manual que tem certeza de funcionar.
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 e para 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 proximo comando você deseja usar e autocompleta 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

Docker

Agora vamos pra instalação que deu mais trabalho para realizar, vale lembrar que estou usando WSL2 com docker nativo rodando na própria distro linux. Então caso seja usuário do docker desktop acho que este passo não seja necessário. Esses dois artigos aqui me ajudaram muito nessa configuração.

Inicialmente atualizamos o sistema pelo comando

sudo apk upgrade -U
Enter fullscreen mode Exit fullscreen mode

agora instalamos o docker

sudo apk add docker
Enter fullscreen mode Exit fullscreen mode

feito isso vamos adicionar nosso usuário ao grupo docker para não ser necessário usar sudo docker toda vez que quisermos usa-lo

sudo addgroup $USER docker  
Enter fullscreen mode Exit fullscreen mode

precisamos definir um ID para nosso grupo docker que deve ser um valor acima de 1000 e menor que 65534, para ver quais ids já estão atribuídos a grupos use o comando.

getent group | cut -d: -f3 | grep -E '^[0-9]{4}' | sort -g
Enter fullscreen mode Exit fullscreen mode

escolhido o ID agora podemos atribuir ao grupo docker de duas maneiras usando o comando.

sudo sed -i -e 's/^\(docker:x\):[^:]\+/\1:<ID>/' /etc/group
Enter fullscreen mode Exit fullscreen mode

ou caso tenha instalado o shadow

sudo apk add shadow
sudo groupmod -g <ID> docker
Enter fullscreen mode Exit fullscreen mode

Pronto temos o docker instalado em sua distro

Iniciando o docker

No alpine Linux foi bem tenso até encontrar uma configuração que fizesse isso funcionar corretamente, foi aí que encontrei o comando que adiciona o serviço do docker a execução padrão

rc-update add docker default
Enter fullscreen mode Exit fullscreen mode

Agora para iniciar o docker temos que fazer o comando

sudo openrc default
Enter fullscreen mode Exit fullscreen mode

para finalizar a execução do docker usamos o mesmo comando do ubuntu

 sudo service docker stop
Enter fullscreen mode Exit fullscreen mode

se desejar iniciar novamente usamos o mesmo comando do ubuntu também

 sudo service docker start
Enter fullscreen mode Exit fullscreen mode

o problema é que para executar o serviço pela primeira vez somos obrigados a usar o sudo openrc default a solução para esse impasse é usar ALIAS

ALIAS

Alias são apelidos que damos aos nossos comando de terminal com objetivo de torna-los mais simples e para isso precisamos editar o nosso arquivo .zshrc ou criar um arquivo .zshrc_aliases em separado somente com seus alias. Vou optar pela segunda opção pois em uma nova instalação do sistema teremos somente que referenciar o arquivo novamente.

Iniciemos editando nosso arquivo .zshrc

sudo  nano ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

nesse arquivo vamos adicionar o caminho, caso exista, para nosso arquivo de aliases

if [ -f ~/.zshrc_aliases ]; then
      . ~/.zshrc_aliases
fi
Enter fullscreen mode Exit fullscreen mode

agora vamos criar nosso aquivo de aliases e adicionar nossos apelidos

sudo nano ~/.zshrc_aliases
Enter fullscreen mode Exit fullscreen mode

Meu arquivo ficou assim, defini docker-init para toda vez que iniciar os sistema e precisar ligar o docker

#Config for Docker
alias docker-init='sudo openrc default'
alias docker-start='sudo service docker start'
alias docker-stop='sudo service docker stop'
Enter fullscreen mode Exit fullscreen mode

agora para garantir o funcionamento usamos o comando source para recarregar nossos arquivos

source ~/.zshrc_aliases
source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

para realizar a testagem basta executar

docker-init
docker run --rm hello-world
Enter fullscreen mode Exit fullscreen mode

Se sua saída obtiver o Hello from dorcker! sua configuração está completa. Na parte 2 realizaremos a configuração do Tmux e neovim

Top comments (0)