Void Linux - (What could become) a great and unique Linux distribution

Posted on 2018-03-30

Update 2018-04-19: The design and philosophy about Void Linux is really great and the system as a whole is really great too. However, the project has no clear guidelines or ruleset about anything and each developer seems to accept or reject pull requests on his own whims. There is a serious lack of public information about who's doing what, and there are no project goals. Also because of a lack of maintainers, many packages has been orphaned and needs both important bug fixes and important security fixes, and as such you need to be careful about what you install. All these problems are only natural in the beginning of a small project. However, according to some of the developers, they are quite content with status quo, and they prefer that it stays that way. According to them, the Void Linux distribution isn't intended to grow, it's a distribution only for the developers themselves - and this is quite alright of course, but they should atleast inform people about that on their website, which they don't.

I have been using GNU/Linux since about 1999, and FreeBSD and OpenBSD since about 2004, both professionally and personally, and I spend time with Linux and BSD every single day. OpenBSD and Debian has been my favorite solutions for both servers and desktops since I started using UNIX-like OS's because these solutions provide stability, reliability, and security (only OpenBSD).

Once a year or every second year I like to test different independent operating systems to see what's new, and Arch Linux got added to the "toolbox" about two years ago, and it has almost entirely taken Debians place on every server, desktop, and laptop box. Only really "mission critical" production servers still run Debian due to the stable freeze that only gets security and bug fixes backported.

Debian shines in "mission critical" setups where you need Linux because you wont get any supprises, yet you will still get security and bug fixes. You can also run Arch on "mission critical" boxes, but you need to be very careful if you do because Arch Linux uses a rolling release model with "bleeding edge" software from upstream. It's not so much the risk of adding new bugs that poses a problem as much as it is when upstream changes configuration settings, removes features your setup depends upon, change API's, etc., this is when things start to break and you have serious problems. However, a rolling release with bleeding edge software has many benefits too. It gets all the security and bug fixes quickly and new features are added right away.

Before Arch I never found any reason to swich Debian out for something else, except for the occasional use of Alpine Linux for enhanced security where OpenBSD couldn't be used. I have never "distro hoped". Whenever I compared the Linux distributions I tested to Debian I found them to be either prone to errors, poorly designed, GUI based, lacking system administrator control, or extremely bloated. Besides, Debian can work as a rolling release too, you just need to run the "testing" version, and as such you get more bleeding edge software suitable to run on both desktop and laptop boxes.

However, even the "testing" version of Debian really isn't bleeding edge compared to upstream, rather packages are mostly several versions behind upstream. Also Debian has a very strict policy on how to get new packages into their repositories, a policy that is both ridig and annoying.

Debian is extremely well working if you like the default settings in the system, but if you like to change things you'll mostly get into trouble. The reason for this is that the Debian developers has designed "The Debian Way" of doing things. The Debian Way suits a very stable and predictable system extremely well, but it is at the cost of flexibility, and to some extend control. The Debian Way often completely changes the way packages are setup from upstream, and sometimes even functionality gets changed with Debian specific patches.

Arch Linux on the other hand follows a completly different philosophy. Mainly KISS and "a get out of the way" setup. You have to manually install and setup Arch and the applications you need. Also Arch doesn't change upstream settings which means that the documentation from upstream can be used without any changes, something that is mostly impossible on Debian. This makes Arch very suitable for setups where you want to be completely in control with a large amount of freedom. However, you also need to fully understand what you're doing, which ofcourse is exactly how a real system administrator want's it to be.

The KISS principle (backronymed to "Keep It Simple, Stupid") states that design simplicity should be a key goal and unnecessary complexity avoided. It serves as a useful principle in a wide array of disciplines, such as software development, animation, journalism, photography, engineering, and strategic planning. Common variants of the acronym include: "Keep It Sweet and Simple", and "Keep It Short and Simple".

Lately I have been testing another independent Linux distribution that follows the same KISS philosophy and it is also a rolling release distribution, however it is very different from Arch.

Void Linux

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

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 installer 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 and shouldn't be compared.

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 and helpful community, the project is slowly growing its user base, and I think that in time Void Linux will become a very popular Linux distribution.

Facts about Void Linux:

  • It follows the UNIX philosophy: Small is beautiful, make each program do one thing well.
  • Very fast boot time due to runit.
  • Very simple to maintain and administer due to runit.
  • A very flexibel service system in which you have many options to choose from and many ways to tailor services to your specific needs (unlike with systemd).
  • Always up to date because it is a rolling release distribution.
  • Solid and stable.
  • A very fast package manager (faster than both pacman and apt).
  • A separate "non-free" repository for "non-free" packages (except for binary firmware blobs).
  • I growing set of packages.
  • A BSD ports like system.
  • Very light weight (if you need it to be).
  • Has an installer (if you prefer that, but it can be installed manually too).
  • A helpful community.

A couple of years ago Arch replaced Debian on my main working stations, now Void has replaced Arch! And I suspect Void will replace Arch on every machine I administer.

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 ofcourse 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".

If you have any comments or corrections feel free to email them to me.