Void Linux - the Strangely Overlooked Distribution
By Andrew Powell, published 28/05/2017 in Overviews
Ahh, Void Linux. You may or may not have heard of it. If you have, more than likely it was by word of mouth, so to speak, from internet comments on a forum, YouTube video or in passing on Reddit. But this little distro rarely gets any press or recognition otherwise. Perhaps it's time that changes, as Void Linux is an interesting distro in its own right and a good alternative to something like Arch Linux. It also has a no-systemd approach.
I am an Arch Linux user primarily myself and also someone that has liked to dabble in the distros that embrace a KISS kind of philosophy or have certain BSD-like traits. As it turns out, Void Linux fits this bill. With that in mind, I took Void Linux for a bit of a spin on my ASUS N550J laptop.
Firstly though, what is Void Linux exactly and what makes it different?
What Void is
The Void website describes the distro as thus:
Void is a general purpose operating system, based on the monolithic Linux® kernel. Its package system allows you to quickly install, update and remove software; software is provided in binary packages or can be built directly from sources with the help of the XBPS source packages collection.
It is available for the Intel x86®, ARM® and MIPS® processor architectures; Software packages can be built natively or cross compiling through the XBPS source packages collection.
As you can see, Void isn't a distro that toots it own horn very loudly. You won't find any flashy fullscreen images or fading in modals that look like something from an Apple advertisement, or anything that really screams "install me!!". Void keeps things low key and perhaps that's one of the reasons it doesn't seem to attract much notice.
Void is an independant GNU/Linux distribution, developed entirely by a relatively small group of (hardworking) volunteers and the build system, including package manager, is built entirely from scratch. It's also rolling release, and perhaps of particular note, is it completely avoids systemd.
For some, this means nothing. For others, it can mean a great deal. While the non-systemd fork of Debian in Devuan just recently released to some fanfare, Void Linux has been quietly humming along systemd-free for a few years now. Instead it uses runit, a quite simple and lightweight cross-platform Unix init system and service supervisor.
Then there's the system package manager, written from scratch as we mentioned, called xbps. The site makes particular mention that it's licensed with a 2 clause BSD license. This also includes xbps-src, which handles actual package building and does so inside it's own containers using Linux namespaces, isolating processes and bind mounts, as well as being able to cross-compile for other machines.
If that last paragraph makes you go googly-eyed, don't worry - in a nut shell, basically Void has a couple of neat and interestingly engineered tricks up its sleeve which has been enough to impress some of the users which has helped its spread by word of mouth.
Entering the Void
Well, I can appreciate anything that uses a name like "Void" or refers to entering a Void. I don't know, sounds kinda cool, doesn't it?
Anyway, I downloaded the latest release ISO from the project's download page, choosing the x86_64 variant of course. There are also options for ISOs that actually include desktops like XFCE, Cinnamon, MATE etc. I opted just for the small base ISO, which is around 275MB in size.
Now, first things first. If you're not comfortable installing something like Arch, Slackware, Debian or anything that often uses a CLI or ncurses style installer, you won't be comfortable with Void. But chances are, if you're interested in trying Void, you'll be well familiar with all of these sorts of things. That's likely the way Void is intended and why it's fairly low-key - no noobs allowed, sorry.
Installing Void from a USB stick was a breeze. The project does have a small wiki with instructions on getting started that guides you along, but as I said, if you're using Void you'll likely know what you're doing anyway.
That said, the ncurses installer that Void includes was simple and easy to use for a decently experienced Linux user such as myself, and it kind of reminded me of Slackware or maybe even FreeBSD.
Once installed and rebooting (Void handles UEFI and Grub 2 installation just fine, by the way), we come to a CLI at TTY 1, just as you might expect after installing something like Arch. From here, the distro is your virtual oyster. Install a graphical interface and use it as your desktop OS. Or don't. You could use it as a server or something as well. Void describes itself as a general purpose GNU/Linux distribution and I suppose that's ultimately what it truly is. Regardless, the wiki has a neat Post Installation guide if you need any tips or a nudge in the right direction.
Setting up my WiFi was no harder than any other Linux distribution. I installed Void while plugged into an ethernet connection to keep things fast and simple, but I could have configured my WiFi in the installer if I wished, more than likely. Reason being, as detailed in a recent article on my particular USB dongle, most of my wireless configuration is done the manual way using wpa_supplicant and dhcpcd as NetworkManager never plays nicely with my dongle. The good thing about minimal "building block" style distros such as Void is that NetworkManager doesn't get installed out of the box, unless you want it to, so I never had to deal with it in the first place.
So, like Arch, I went about installing Xorg packages and a desktop environment. The desktop of choice? GNOME, of course. I know, what a madman!
But this is an interesting thing about Void Linux. It has a fully up-to-date, fully functioning GNOME 3.24 in the repos. This would surprise some people as GNOME is thought to be fairly tightly coupled with systemd, but apparently the Void maintainers/packagers found this isn't entirely true. GNOME usually requires systemd-logind to function properly, but it can deal with substitutes, which is what has been done in Void. GNOME on Void instead uses elogind, as the GNOME maintainer from Void explains here.
Installing things with xbps is simple enough, and actually quite similar to Arch Linux's Pacman, although I personally have a bad habit of typing the command wrong, i.e xpbs instead of xbps.
Installing:
xbps-install -S package_name
Removing:
xbps-remove package_name
Searching:
xbps-query -Rs package_name
To fully sync and update the system:
xbps-install -Su
And so on. See the xbps wiki entry for more information.
Once GNOME was installed (xbps-install -S gnome
), activating GDM (and dbus) was on the cards to get us a nice display manager. Doing so with Void's runit init system is basically this:
ln -sr /etc/sv/{gdm,dbus} /var/service
That's the basic way you activate services with runit. Whereas in systemd you might be used to executing something like systemctl enable gdm.service
or similar, with runit activating services is simply a matter of symlinking the required service from the /etc/sv/
directory to /var/service
. Done. In the above example, we're using the power of the shell to activate both gdm and dbus in the one command.
Disabling a service is therefore as simple as removing the symlink in /var/service
.
rm /var/service/gdm
As you can see, Void likes to take the whole Unix-everything-as-a-file thing quite seriously. It's kind of more Arch-y than even Arch these days, given Arch no longer uses SysVinit.
Continuing with runit for a moment, once a service is activated, starting and stopping a managed service is done with a handy helper program called sv, which let's you call one of start/stop/status. Eg:
sv stop gdm
And that's it. The interesting thing is, and I'm no systemd hater by the way, but runit is actually seriously fast. My laptop has a quite literally dying, clunky, clicking hard drive (it seems to handle new installs okay though, probably because it installs to new undamaged sectors or something) and boot speed is every bit as fast, if not faster, than a new install of Arch Linux with systemd. Maybe systemd takes advantage of SSDs more, I don't know, but one thing for sure: speed isn't any problem with runit. At least, not with the amount of services I use.
Anyway, after commenting out the EnableWayland=false
line in /etc/gdm/custom.conf
so that Wayland would work by default, I launched GDM and logged into my new GNOME.
Screenies?
Alright, if you insist. But here's the thing: Void Linux isn't exactly a distro that offers much in the way of screenshot-able stuff. Anything you install will be just vanilla packages and standard themed if we're talking desktops. Just as you would expect after installing Arch Linux or a *BSD variant.
Still, here's my GNOME/Wayland desktop on Void after a bit of quick theming and a couple extensions:
And here is the output of GNOME Disks utility which I couldn't help but smile at:
Yep, the HDD is on the way out alright. Oops. Thankfully, for now, Void is running fine though, until we hit the bad areas of the drive, anyway...
And here is Steam, running on Void with no issues. Like Arch (or most distros), you have to enable and install the 32bit libs for a 64bit system.
Unlike Arch, you do also have to enable the non-free repo which isn't enabled out of the box, in order to get non-free apps like Steam. Void is probably a bit more freedom-oriented out of the box, including only free software in the standard repos, but at the same time, it's not hard to get the non-free stuff either.
My laptop is also an Optimus machine, but thankfully as Void runs a modern 4.10.x kernel and Mesa 17, etc, PRIME works out of the box. With Nouveau drivers installed as well as the Intel drivers, the dedicated NVIDIA 850M GPU spends most of its time powered down, but running an app with the environment switch DRI_PRIME=1
allows offloading to the GPU, which I tested in a couple of Steam games, which worked flawlessly.
Bumblebee is in the Void repos, but to be honest, it looks like a pain-in-the-you-know-what to setup and Bumblebee is getting quite old and unmaintained now as far as I know. Anyway, for basic usage and ease of maintenance, PRIME with Nouveau works quite well.
Summary
To finish up this look at Void, which is by no means meant to be a proper review, but rather just to touch on the distribution and maybe help interested users in discovering it, we'll list the TL;DR version of what Void is:
- Independent distribution, entirely volunteer run
- runit system service manager by default (no systemd)
- xbps system package manager, simple ports-like system akin to the *BSDs or the Arch Build System
- Fresh, constantly updated software thanks to rolling release
- Uses LibreSSL by default instead of OpenSSL
- A real hands on but KISS approach to system management, akin to Arch/*BSDS etc.
All in all, if you're looking for a new distribution to try out that has some similarities to Arch Linux and/or a more *BSD feel to it, Void is probably well worth trying out.
Various comments around the internet seem to suggest that Void is actually very, very stable despite being a rolling release OS with very new packages constantly hitting the repos. So far, that seems to be the case, at least until my HDD goes bang!
I've only had limited time with Void so far, but it hasn't put a foot wrong. The repos aren't stuffed full of software, but I found the usual suspects easily, such as Kodi (17), GIMP, LibreOffice, Steam, MPV and the like. If you don't mind compiling some programs, xbps-src should facilitate you and allow you to easily create build scripts, similar to the ABS in Arch. Or just do a regular old compile and make install
as I did with the GNOME MPV program (which is one program that wasn't in the repos), for example. xbps is also extremely fast, again, just like Pacman on Arch.
One thing that Void doesn't have is extensive documentation, but thankfully there are sources like the legendary Arch Wiki which will still have a lot of relevant information for distros like Void.
Have you tried Void? What did you think of it? Or perhaps there's another similar distribution you might want to mention? Let us know in the comments!