Void Linux: Experimentando o Vazio

󰃭 16 May 2026 (updated: 16 May 2026 )

Eu uso o Arch Linux há vários meses e até que gosto muito da experiência de usar ele. Mas, eu acabei topando com outra distro bem interessante: O Void Linux. O Void, assim como o Arch, é uma distro Linux independente, minimalista e de atualizações contínuas.

Mas claro, há diferenças. Enquanto o Arch é bleeding edge1, o Void foca mais em estabilidade. Enquanto o Arch utiliza o SystemD; dito por muitos como “inchado” e complexo2; o Void utiliza o Runit, que é mais simples.

E desde que comecei a minha migração no Linux, eu apenas usei distribuições com o SystemD, e com isso, resolvi explorar outros mares, para ver se o SystemD é realmente tudo isso mesmo, mas posso dizer que as coisas ficaram bem interessantes.

Instalando o Void Linux

O Void tem três modos de instalação: Iniciar na ISO e executar o Instalador, Usar uma instalação do Void e instalar via chroot ou Baixar um TARBALL, descompactar na partição e entrar nela via chroot. Decidi pela terceira opção.

E para instalar o Void, me aproveitei da partição onde o meu EndeavourOS estava instalado, e como não uso o EndeavourOS há meses, decidi excluir ele para poder testar o Void. Sendo assim, eu formatei a partição do EndeavourOS para deixar ela limpa e comecei o processo de instalação.

Assim, comecei montando a partição para o diretório /mnt

mount /dev/nvme0n1p1 /mnt/
mkdir -p /mnt/boot/efi/
mount /dev/nvme0n1p3 /mnt/boot/efi/

E depois, baixei o TARBALL do Void. E é surpreendente ver como o TARBALL é minúsculo. Uns 40 MB.

tar xvf void-x86_64-ROOTFS-20250202.tar.xz -C /mnt

Com isso, foi a hora de fazer o chroot. Esse é um passo meio chatinho, e que teria que dar alguns comandos para montar outros diretórios para que algumas coisas importantes funcionem. Porém, o Arch tem o arch-chroot que é um script que facilita muito esse processo que está disponível no pacote arch-install-scripts. Sendo assim, entrei na partição do Void…

arch-chroot /mnt

Porém, não tinha acesso à Internet. Assim, tive que sair do chroot, copiar o arquivo /etc/resolv.conf

cp /etc/resolv.conf /mnt/etc

… entrar novamente no chroot e assim, começar a instalar o Void. A primeira coisa a ser feita, é atualizar o xbps, o gerenciador de pacotes do Void.

xbps-install  -Su xbps

Depois, fazer uma grande atualização dos pacotes que estão instalados naquele TARBALL…

xbps-install  -u

E finalmente, instalar o restante do sistema. Aqui, optei por instalar o xtools, que é um pacote com várias ferramentas do Void, e o nano, que é um dos meus editores de texto favoritos. Também instalei o git. Isso será muito importante mais tarde.

xbps-install  base-system xtools nano git

E com tudo instalado, foi a hora de montar o /etc/fstab, que é basicamente o arquivo que indica ao sistema quais partições montar na inicialização.

xgenfstab -U /mnt > /mnt/etc/fstab

E esse foi o resultado:

# Generated by xgenfstab(1).
#
# See fstab(5).
#
# <file system>       	<dir>         	<type>    	<options> 	<dump> <pass>
UUID=e00af9fe-93f3-4c4a-bbdd-05bceff91e0c	/              	ext4      	rw        	0 1
UUID=0b3378e4-fb3c-4445-96e9-aa1ae784c40a	none           	swap      	defaults  	0 0
tmpfs               	/tmp           	tmpfs     	defaults,nosuid,nodev	0 0

Mas ainda faltava uma coisa… A /home. Sendo assim, abri o nano

nano /etc/fstab 

… peguei a linha da /home do /etc/fstab da minha instalação do Arch, e adicionei ao Void, ficando assim:

# Generated by xgenfstab(1).
#
# See fstab(5).
#
# <file system>       	<dir>         	<type>    	<options> 	<dump> <pass>
UUID=e00af9fe-93f3-4c4a-bbdd-05bceff91e0c	/              	ext4      	rw        	0 1
UUID=56196364-a329-480c-9f30-49982d0a2ad0	/home     	ext4      	rw,relatime	0 2
UUID=0b3378e4-fb3c-4445-96e9-aa1ae784c40a	none           	swap      	defaults  	0 0
tmpfs               	/tmp           	tmpfs     	defaults,nosuid,nodev	0 0

E assim prossegui na instalação. Defini o nome da máquina como tocaVoid, seguindo a tendência que coloquei em meu Arch, em que a máquina se chama tocaArch.

```bash
echo "tocaVoid" > /etc/hostname

E depois, fui mexer nos Locales. Eu não precisava, pois o Void já vem com o en_US ativado, e como eu iria usar o sistema em Inglês, não teria problemas. Mas por desencargo de consciência, decidi editar o /etc/default/libc-locales para descomentar a linha do pt_BR

nano /etc/default/libc-locales

E depois reconfigurar os Locales com o xbps-reconfigure.

xbps-reconfigure -f glibc-locales

Com isso, veio a hora de criar o usuário. Eu sei, talvez eu não precisasse colocar todos esses grupos, mas decidi o fazer por desencargo de consciência.

adduser -G cdrom,optical,kvm,users,xbuilder,whell,floppy,audio,video rapoelho

Usuário criado, é hora de instalar o Grub. Precisei primeiramente montar o efivarfs, instalar o Grub para sistemas EFI, que seria o pacote grub-x86_64-efi e por fim, instalar o Grub em si.

mount -t efivarfs none /sys/firmware/efi/efivars
xbps-install -S grub-x86_64-efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Void"

E para finalizar essa primeira parte, verificar se tudo foi instalado corretamente.

xbps-reconfigure -fa

Instalando o newlook

Depois, é a hora de instalar o newlook, a minha configuração do XFCE. Assim como o nippybox, a instalação do newlook é bem fácil. Basta entrar com esses comandos, que tudo será instalado.

cd /tmp
git clone https://github.com/rapoelho/newlook
cd newlook
chmod +x nl-void 
./nl-void chroot

E como eu estava instalando o Void via chroot, tive que usar essa flag no Script para poder instalar os serviços nos locais corretos. E por fim, tive que definir a senha do meu usuário, que eu tinha esquecido de fazer antes.

passwd rapoelho

Mas ainda iria demorar um pouco para iniciar o Void pela primeira vez e terminar as configurações, afinal, eu ainda estava em meu Arch Linux com um belo uptime.

Iniciando no Void pela Primeira Vez

E depois de vários dias, quando o meu Arch chegou a mais de 50 dias de Uptime, o meu notebook deu pau na Rede.

É, a Placa WiFi parou de funcionar, e com isso desliguei o notebook por um tempo e liguei ele de volta, mas no Void. Loguei com a senha que eu tinha definido e aqui estava, o Void em toda a sua glória.

Fui executar um pequeno script de pós instalação, e… Flathub não estava configurado. Foi abrir o Firefox, e o Void não estava conseguindo navegar na Internet. Bem estranho. Tentei adicionar o 1.1.1.1 no /etc/resolv.conf e… eu tinha esquecido de adicionar o meu usuário no /etc/sudoers. facepaw

Reiniciei no Arch, e lá consegui a solução: Apagar o /etc/resolv.conf, copiar o arquivo padrão do Network Manager e desligar e ligar novamente a rede. Aproveitei, alterei o /etc/sudoers do Void para incluir o meu usuário no sudo. E já no Void, apliquei os comandos…

sudo rm /etc/resolv.conf
sudo ln -s /run/NetworkManager/resolv.conf /etc/resolv.conf
sudo nmcli networking off
sudo nmcli networking on

… e a Internet voltou a funcionar!

Instalando meus Flatpaks

Para configurar o Flatpak, dei esse comando aqui, que adiciona os “repositórios” do Flatpak ao sistema, para poder instalar os aplicativos…

flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

… e depois, dei esse comando aqui para instalar tudo o que eu tinha pra instalar.

flatpak install flathub org.onlyoffice.desktopeditors md.obsidian.Obsidian org.kde.krita org.kde.kdenlive io.mrarm.mcpelauncher com.valvesoftware.Steam org.kde.gwenview org.telegram.desktop com.discordapp.Discord com.obsproject.Studio

E assim, instalei as coisas que, pra mim, são essenciais: OnlyOffice, Obsidian, Krita, Kdenlive, Gwenview, Telegram, Discord e o OBS. Além do Minecraft Bedrock e da Steam, afinal ninguém é de ferro, né?

Outra coisa que notei depois, algum tempo depois, é que os Flatpaks não estavam conseguindo abrir o Gerenciador de Arquivos do sistema. E vi que estava faltando dois pacotes no sistema: xdg-desktop-portal e xdg-desktop-portal-gtk

E depois que instalei, isso começou a funcionar.

Instalando a Impressora

Com isso, fui para a instalação e configuração da Impressora. Ao contrário do Arch, em que o Driver da minha Epson está disponível apenas no AUR, no Void o pacote está disponível nos repositórios. Com isso, com um simples…

sudo xbps-install epson-inkjet-printer-escpr

Eu poderia instalar o Driver da minha Impressora, certo? Então… deu um erro por causa de uma dependência…

… assim, eu instalei essa dependência…

sudo xbps-install -S libpoppler

… e assim, consegui instalar o Driver da Epson.

Também, aproveitei e instalei o system-config-printer para configurar a impressora mais facilmente. E também tive que instalar um segundo pacote, para poder usar o system-config-printer com o meu usuário.

sudo xbps-install system-config-printer cups-pk-helper

E com isso, consegui instalar a Impressora!

Houston, we have a problem

Mas ao imprimir a página de testes, mais um pequeno erro:

Vi que faltavam mais alguns pacotes e instalei eles. Mas antes, tive que habilitar o repositório non-free

sudo xbps-install void-repo-nonfree

E assim, instalar os pacotes faltantes.

sudo xbps-install -S cups-filters foomatic-db foomatic-db-nonfree gutenprint

Depois, reiniciei o cupsd com esse comando:

sudo sv restart cupsd

E a impressora passou a funcionar perfeitamente. A única ressalva era o cliente Web do CUPS, que ainda não estava funcionando na parte administrativa.

Mas isso foi resolvido. Primeiramente, olhando quais são os grupos que fazem o CUPS funcionar, vi que faltava um deles: o lpadmin

… assim, adicionei o meu usuário ao grupo e reiniciei o CUPS.

sudo usermod -aG lpadmin $USER
sudo sv restart cupsd

E o CUPS passou a funcionar perfeitamente!

Instalando o Hugo

Outra coisa muito importante para o meu Fluxo de Trabalho é o Hugo, que é o Gerador de Site Estático que uso para o made by romeo e a Toca do Rapoelho. Outro comando que eu uso bastante é o rclone, que serve para sincronizar a pasta de Trabalho com a de Produção. Sendo assim, com um…

sudo xbps-install hugo rclone

… instalei o Hugo e o RClone de forma fácil, simples e rápida. Assim, terminei essa parte bem facilmente.

Instalando o Onedrive

Sim, mesmo usando Linux eu ainda uso o Onedrive até hoje. Afinal, é meio difícil largar um serviço que você usa há mais de uma década, certo? Sendo assim, instalei a dupla Onedrive for Linux e OnedriveGUI.

Primeiramente, com esse comando para instalar tanto o python3-pyside6 como Onedrive para Linux…

sudo xbps-install python3-pyside6 onedrive

Mas, ao tentar executar o OnedriveGUI, não deu lá muito certo. Infelizmente. Mas e o AppImage? Também não deu lá muito certo, afinal o OnedriveGUI exige que o onedrive esteja no mínimo, na versão 2.5.6, o que nos repositórios do Void, está na versão 2.4.25.

Se não iria dar com a versão gráfica, eu iria tentar com o Onedrive por linha de comando. E tentei, mas dava esse erro.

ERROR: Microsoft OneDrive API returned an error with the following message:
  Error Message:    HTTP request returned status code 400 ()
  Error Reason:     AADSTS70000: The provided value for the 'code' parameter is not valid. Trace ID: f23511a6-84ad-48b3-ba6d-721a3c493b01 Correlation ID: a86ea378-b66a-4a56-813f-ec814e947ecd Timestamp: 2026-05-12 23:26:42Z

Application has not been successfully authorised. Please check your URI response entry and try again.

Com isso, finalmente desisti do Onedrive. Havia pensado no Distrobox, mas eu teria o mesmo problema de conseguir passar pela configuração do Onedrive, sendo assim decidi jogar a toalha…

Usando o RClone para sincronizar o Onedrive

… até ouvir falar que o rclone poderia fazer o mesmo. Assim, eu tentei novamente. Dessa vez, com um…

rclone config

Comecei a configurar o Onedrive. Como eu não tenho nenhum arquivo , então é exibida essa listinha de opções, para criar uma nova configuração, ou uma senha ou para sair. Sendo assim, escolhi a opção para criar uma nova configuração.

No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

Com isso, coloquei um nome para essa nova configuração…

Enter name for new remote.
name> Onedrive

… depois, foi a hora de escolher qual é a opção que eu quero para o RClone. E ao menos, por aqui era a 42.

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.

(...)
42 / Microsoft OneDrive
   \ (onedrive)
(...)

Storage> 42

Depois foram as opções do OAuth. Sendo assim, eu deixei em branco…

OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id>

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>

… com isso, vieram as opções de Região, onde eu apenas aceitei a opção padrão.

Option region.
Choose national cloud region for OneDrive.
Choose a number from below, or type in your own value of type string.
Press Enter for the default (global).
 1 / Microsoft Cloud Global
   \ (global)
 2 / Microsoft Cloud for US Government
   \ (us)
 3 / Microsoft Cloud Germany (deprecated - try global region first).
   \ (de)
 4 / Azure and Office 365 operated by Vnet Group in China
   \ (cn)
region>

Depois, foram a opção de “ID do Diretório”. Bom, só apertei Enter para prosseguir.

Option tenant.
ID of the service principal's tenant. Also called its directory ID.
Set this if using
- Client Credential flow
Enter a value. Press Enter to leave empty.
tenant>

E por fim, o RClone pede para escolher se queremos ou não editar as configurações avançadas. Como eu não quero, já fui no “Não”.

Edit advanced config?
y) Yes
n) No (default)
y/n> n

E por fim, é a Autenticação para o RClone. Aqui ele pede para abrir o navegador para fazer o Login com o Onedrive.

Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.

y) Yes (default)
n) No
y/n> y

Depois foi logar no Onedrive…

… e sucesso!

2026/05/12 21:07:42 NOTICE: Make sure your Redirect URL is set to "http://localhost:53682/" in your custom config.
2026/05/12 21:07:42 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=<ID REDACTED>
2026/05/12 21:07:42 NOTICE: Log in and authorize rclone for access
2026/05/12 21:07:42 NOTICE: Waiting for code...
2026/05/12 21:08:14 NOTICE: Got code
Option config_type.

Após isso, é escolher o tipo de conexão. Como uso o Onedrive Pessoal, a opção certa é a 1.

Type of connection
Choose a number from below, or type in an existing value of type string.
Press Enter for the default (onedrive).
 1 / OneDrive Personal or Business
   \ (onedrive)
 2 / Root Sharepoint site
   \ (sharepoint)
   / Sharepoint site name or URL
 3 | E.g. mysite or https://contoso.sharepoint.com/sites/mysite
   \ (url)
 4 / Search for a Sharepoint site
   \ (search)
 5 / Type in driveID (advanced)
   \ (driveid)
 6 / Type in SiteID (advanced)
   \ (siteid)
   / Sharepoint server-relative path (advanced)
 7 | E.g. /teams/hr
   \ (path)
config_type> 1

Depois o RClone detecta os Drives que você tem no Onedrive. E decidi ir pela opção padrão…

Select drive you want to use
Choose a number from below, or type in your own value of type string.
Press Enter for the default (<ID REDACTED>).

… e depois disso, ele detecta a raiz do Drive que você escolheu…

Drive OK?

Found drive "root" of type "personal"
URL: https://onedrive.live.com?cid=<ID REDACTED>
y) Yes (default)
n) No
y/n>

… e assim, a configuração termina.

Configuration complete.
Options:
- type: onedrive

(...)

Keep this "Onedrive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Current remotes:

Name                 Type
====                 ====
Onedrive             onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>

E com isso, ao dar esse comando…

rclone bisync Onedrive: Onedrive --create-empty-src-dirs --compare size,modtime,checksum --slow-hash-sync-only --resilient -MvP --drive-skip-gdocs --fix-case --resync --exclude "/Cofre Pessoal/**"

… tudo simplesmente funcionou!

2026/05/12 21:48:29 NOTICE: "Onedrive" refers to a local folder, use "Onedrive:" to refer to your remote or "./Onedrive" to hide this warning
2026/05/12 21:48:29 NOTICE: OneDrive root '': will use quickxor for same-side diffs on Path1 only
2026/05/12 21:48:29 INFO  : Slow hash detected on Path2. Will ignore checksum due to slow-hash settings
2026/05/12 21:48:29 NOTICE: Ignoring checksums during --resync as --slow-hash-sync-only is set.
2026/05/12 21:48:29 INFO  : Bisyncing with Comparison Settings:
{
	"Modtime": true,
	"Size": true,
	"Checksum": true,
	"HashType1": 4096,
	"HashType2": 0,
	"NoSlowHash": false,
	"SlowHashSyncOnly": true,
	"SlowHashDetected": true,
	"DownloadHash": false
}
2026/05/12 21:48:29 INFO  : Synching Path1 "Onedrive:/" with Path2 "/home/rapoelho/Onedrive/"
2026/05/12 21:48:29 INFO  : Copying Path2 files to Path1
2026/05/12 21:48:29 INFO  : - Path2    Resync is copying files to         - Path1

(...)

2026/05/12 22:02:35 INFO  : Resync updating listings
2026/05/12 22:02:37 INFO  : Validating listings for Path1 "Onedrive:/" vs Path2 "/home/rapoelho/Onedrive/"
2026/05/12 22:02:37 INFO  : Bisync successful
Transferred:   	   10.251 GiB / 10.251 GiB, 100%, 13.988 MiB/s, ETA 0s
Checks:             39686 / 39686, 100%, Listed 80572
Transferred:           33 / 33, 100%
Elapsed time:      14m7.8s
2026/05/12 22:02:37 INFO  :
Transferred:   	   10.251 GiB / 10.251 GiB, 100%, 13.988 MiB/s, ETA 0s
Checks:             39686 / 39686, 100%, Listed 80572
Transferred:           33 / 33, 100%
Elapsed time:      14m7.8s

E simplesmente funcionou. Acho que o Onedrive é um dos programas que definitivamente irei riscar da minha lista de Pós Instalação. O RSync se mostrou bem mais funcional. Com um “simples”…

rclone bisync Onedrive: Onedrive --create-empty-src-dirs --compare size,modtime,checksum --slow-hash-sync-only --resilient -MvP --drive-skip-gdocs --fix-case --exclude "/Cofre Pessoal/**"

… posso sincronizar o meu Onedrive quando eu quiser, e nas duas vias: Local e Remotamente. E isso é realmente muito bom.

Depois do Começo…

Bem, posso dizer que estou realmente gostando da experiência de se usar o Void Linux. Apesar da curva de aprendizado, essa é uma distro que está sendo bem agradável de se usar, justamente por ela ser simples e eu apreciar coisas mais simples, além de “Embrace the Void” soar bem mais legal do que “I use Arch, btw”.

Tenho a sensação de que o Void é o que o Arch Linux deveria ser, principalmente naquele conceito do “Mantenha isso simples, estúpido”. O Void mantém um Init bem simples e que faz o que um Init deveria fazer. Nada a mais, nada a menos.

Além de ter um gerenciador de pacotes simples de entender, mas bem poderoso e de ser um “Rolling Release mais lento”, sendo mais estável, e podendo fazer atualizações de instalações que estão há tempos sem atualizar há meses sem grandes problemas. Ao menos nesses primeiros dias, eu não sinto que eu tenho que ficar dando manutenção no sistema, o que tenho que fazer é… apenas deixar o Sistema fazer o seu trabalho.

Provavelmente, assim eu termino o meu Distrohopping e talvez, eu tenha encontrado a minha distro perfeita.


  1. Distribuições Bleeding Edge são aquelas que sempre oferecem softwares nas versões mais recentes possíveis. ↩︎

  2. E realmente o SystemD parece ser uma verdadeira bagunça ↩︎


Mais publicações como esta

Criando um Seletor de Wallpapers com o Rofi

󰃭 08 May 2026 (updated: 08 May 2026 ) | #linux #openbox #rofi

Estava querendo fazer algo legal no Openbox: Um seletor de Wallpaper, só que usando o Rofi. Com isso, fui em busca de uma base para fazer isso, até que encontrei um Script que foi feito por Ilya Senatorov. E era um Script que, pra mim, estava no caminho certo. Mas que precisava de algumas modificações. Entre elas:

  • Detectar Wallpapers na pasta /usr/share/backgrounds e na pasta do usuário (seja em ~/Imagens/Wallpapers ou em ~/Imagens/wallpapers);
  • Exibir as Miniaturas e apenas o nome do Arquivo;
  • Ter opções para colocar a imagem escolhida como Wallpaper (seja Colorizando ou não) ou na Tela de Bloqueio.

Com isso, comecei a construir o Rofi Wal para uso no Nippybox.

Continuar a ler 


New Look: Testando o consumo de RAM do Alpine, Arch e Void com XFCE

󰃭 08 Mar 2026 (updated: 08 Mar 2026 ) | #alpine #arch #newlook #void #xfce

Eu estou fazendo um novo projeto, para ser mais um ambiente personalizado como é o Nippybox, que é o New Look e acabei me empolgando bastante e estendi esse projeto para mais duas distros: O Void e o Arch Linux.

Com isso, decidi fazer os testes para ver como o New Look se sairia no Inspiron, o meu notebook antigo que já está com uma década de uso, e no meu Thinkpad, que é o meu Daily Driver.

Continuar a ler 