Void Linux - a great and unique Linux distribution

Published on 2018-03-30. Modified on 2020-03-02.

Void Linux is a great rolling release and independent Linux distribution that uses the X Binary Package System (XBPS) package manager, which was designed and implemented from scratch, and the runit init system. Excluding binary kernel blobs, a base install is composed entirely of free software, but users can access an official non-free repository to install proprietary software.

Void Linux - was created in 2008 by Juan Romero Pardines, a former maintainer of NetBSD, as an independent distribution to have a test-bed for xbps, a native system package manager, written from scratch with a 2-clause BSD license, and xbps-src a xbps package builder, also written from scratch with a 2-clause BSD license. Void Linux uses runit as its init system instead of systemd, and this is something you'll notice right away, it is very well designed, very simple and easy to use, and it makes Void Linux boot really fast. Other elements of Void Linux also resembles the well designed BSD systems - perhaps because of Juan Romero Pardines background in NetBSD.

runit is an init scheme for Unix-like operating systems that initializes, supervises, and ends processes. runit is a reimplementation of the daemontools process supervision toolkit that runs on the Linux, Mac OS X, BSD, and Solaris operating systems. Runit is an init daemon. It is the first process started during booting, and continues running until the system is shut down. It features parallelization of the start up of system services, which can speed up the boot time of the operating system.

Services are enabled by simply linking them into the /var/service service directory:

# ln -s /etc/sv/foo /var/service/

To disable them again you just remove the link:

# rm /var/service/foo

Services can be controlled with the sv command and the following commands are available and can be used like:

# sv [up|down|status] foo

Where you use "up" to start, "down" to stop, and "status" to view the condition of a service. You can also use commands like "once", "pause", "cont", "hup", "alarm", "interrupt", "quit", "kill" to send corresponding signals, and "start", "stop", "reload" and "restart" exists for LSB init compatibility.

You can install Void Linux manually, like you do with Arch Linux, but Void also has a small install script that helps you setup a minimal base system. A minimal setup is provided for extensive control and you need to install all the services and applications you need manually, even logging, which is really great. However, if you prefer, Void also provides installation images with pre-installed and fully functional desktop solutions such as Gnome, KDE, and Xfce4.

Void Linux is the first Linux distribution to incorporate LibreSSL from OpenBSD, rather than OpenSSL, as the system cryptography library by default. It is also unique among distributions in that separate installation media using both glibc and musl are available.

Void Linux is also using a rolling release nature, which means that a system running Void is kept up-to-date with binary updates carrying the newest release. However, source packages are maintained on GitHub and can be compiled using a supplied script for xbps-src. The build process is not tied to the current system and as such builds targeting foreign architectures can be run, too. If you know anything about the ports system from FreeBSD, NetBSD, or OpenBSD, you'll feel right at home in xbps-src.

xbps-src makes it really easy to build your own packages and if you find a package missing from the Void package repository, you can duplicate a "template" script from an existing package and have xbps-src build and compile the binary package for you. If you then want to, you can submit your package on GitHub as a pull request, and if it fullfils the Void requirements, it will be added to the official Void repository.

With the basic installer Void Linux is very clean and you have to set everything up yourself. This gives you a lot of power and knowledge about how your system is working. When you install a service, like say cups or dnsmasq, it isn't automatically activated, you have to manually enable and active all services.

Void Linux often gets compared to Arch Linux, perhaps because of the similarities in philosophy between these two systems, but they have very little in common in reality.

Void Linux is unique with its implementation of runit as the init system, xbps as its package manager, xbps-src as an original BSD ports system for Linux, GitHub as the xbps-src template file repository, following the Unix philosophy to the letter, providing many different solutions rather than just one (like for logging and cron for example), and the project has a very helpful community both on their forum and on IRC.

Currently the Void Linux project isn't that big and the project is in need of both developers, maintainers, and people to help write quality documentation, but due to its very well designed system, the project is slowly growing its user base.

Facts about Void Linux:

I have setup Xorg with i3 (as I prefer a tilling window manager) and all the other applications I normally use, and everything has been running very well. Void is super fast at both booting and shutting down and the small memory print it leaves on the system makes it very suitable on even very low end and old hardware - unless of course you decide to install something like KDE or Gnome as your desktop system.

I have tested the Void installer script, but I prefer to install and setup Void manually, which is why I have made the tutorial Real full disk encryption using GRUB on Void Linux for BIOS.

I liked Void Linux from the very moment I tried the distribution and it has replaced Arch Linux on my main workstation for some months now. One of the main reasons for Void Linux being so good, in my humble opinion, is due to its similarity with the BSD operating system family. Another reason is because of some of the great design decisions that the developers has made, such as using a ports like system, not using systemd, and keeping things in great harmony with the Unix philosophy.

If you consider giving Void Linux a run please consider that the project is run by a small and very busy team. Void packages are not always updated in a timely manner, which is one thing you need to be aware of. Help out if you can, be patient and study the documentation.