Void Linux
Independent, rolling release, no systemd. A clean-room distro that does things its own way.
Overview
| Based on | Independent (built from scratch) |
| Package manager | XBPS (X Binary Package System) |
| Package format | .xbps |
| Release model | Rolling release |
| Default DE | None (base install) or XFCE (live ISO option) |
| Init system | runit |
| Website | voidlinux.org |
Why Void Linux?
- No systemd - Uses runit as its init system and service supervisor. Simpler, faster boot, and easier to understand.
- Truly independent - Not based on any other distro. Built from scratch with its own package manager, build system, and infrastructure.
- XBPS - A fast, modern package manager. Supports partial updates, can install packages from multiple repos, and handles transactions atomically.
- musl libc option - One of the few distros offering musl as an alternative to glibc. Smaller binaries, stricter standards compliance.
- Rolling but stable - Continuous updates without the breakage sometimes seen in other rolling distros
- Minimal by design - The base install is tiny. Build exactly the system you want.
- xbps-src - A ports-like build system for creating packages from source, similar to the AUR but integrated
Package Management
Void uses XBPS, a fast and powerful package manager with a clean command-line interface.
# Sync repos and update everything
sudo xbps-install -Su
# Install packages
sudo xbps-install -S firefox git neovim
# Search for a package
xbps-query -Rs "text editor"
# Show package info
xbps-query -R firefox
# Remove a package
sudo xbps-remove firefox
# Remove a package and its orphaned dependencies
sudo xbps-remove -R firefox
# Remove orphaned packages
sudo xbps-remove -o
# List installed packages
xbps-query -l
# Find which package owns a file
xbps-query -o /usr/bin/git
# Show files installed by a package
xbps-query -f firefox
Building from Source (xbps-src)
# Clone the void-packages repo
git clone https://github.com/void-linux/void-packages.git
cd void-packages
# Bootstrap the build environment
./xbps-src binary-bootstrap
# Build a package
./xbps-src pkg package-name
# Install the built package
sudo xbps-install --repository hostdir/binpkgs package-name
# Create a custom package template in srcpkgs/
glibc vs musl: Void offers two variants. The glibc version has maximum software compatibility (choose this if unsure). The musl version uses a lightweight C library that produces smaller binaries but may have compatibility issues with some proprietary software (Steam, Discord, etc.).
runit Service Management
# runit services live in /etc/sv/ (available) and /var/service/ (enabled)
# Enable a service (create a symlink)
sudo ln -s /etc/sv/sshd /var/service/
# Disable a service (remove the symlink)
sudo rm /var/service/sshd
# Check service status
sudo sv status sshd
# Start / stop / restart a service
sudo sv start sshd
sudo sv stop sshd
sudo sv restart sshd
# List all enabled services
ls /var/service/
# List all available services
ls /etc/sv/
Tips
- Use the glibc variant unless you have a specific reason to use musl
- runit is simple: services are enabled by symlinking
/etc/sv/service-nameto/var/service/. Nosystemctlneeded. - The Void Handbook (docs.voidlinux.org) is well-written and should be your first reference
- Void supports Flatpak for desktop apps that aren't in the repos:
sudo xbps-install -S flatpak - Use
xbps-install -Suregularly. As a rolling release, staying current prevents issues. - For non-free software (NVIDIA drivers, firmware), enable the nonfree repo:
sudo xbps-install -S void-repo-nonfree - Void has excellent cross-compilation support via xbps-src for ARM and other architectures