Void Linux - a great and unique Linux distribution

Published on 2018-03-30. Modified on 2023-10-30.

Void Linux is a great rolling release and independent general purpose Linux distribution that uses the X Binary Package System (XBPS) package manager, which was designed and implemented from scratch. It uses runit as the init system and service supervisor, which is a simple and very effective approach to initialize the system with reliable service supervision contrary to something heavy and bloated like systemd. Void Linux supports both the musl and GNU libc implementations, patching incompatible software when necessary.

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 an installation image with a pre-installed and fully functional Xfce Desktop Environment which is a lightweight desktop environment for UNIX-like operating systems that aims to be fast and low on system resources, while still being visually appealing and user friendly.

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

Void Linux is a rolling release distribution, which means that a system running Void is kept routinely up-to-date with binary updates. Void Linux focuses on stability, rather than on being bleeding-edge. 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 script from an existing package and use that as a template and then have xbps-src build and compile the binary package for you. If you want, you can submit your script on GitHub as a pull request, and if it fulfills the Void requirements, it may 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 the OpenSSH server, 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 the 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).

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 hardware.

I prefer to install and setup Void manually and 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 I have been running it on one of my workstations for some months now.