Checking out Void Linux
Author: -fab- <fab@redterminal.org>
License: CC BY-SA 4.0
Published on: Mon, 07 Nov 2022 12:46:52 +0100
Last updated: Mon, 07 Nov 2022 12:46:52 +0100
Void Linux is a Linux distribution that is built completely from scratch, so it's not based on some other distribution like Debian GNU/Linux or Arch Linux. I'm testing the "musl libc" edition here because this is one of the more outstanding features of the distro among others. It utilizes the runit init system instead of systemd, which is fast and simple. The update strategy is the "stable rolling release" model. The packages are more well tested and a little behind the bleeding edge packages you get with something like Arch Linux.
Void Linux Homepage (www)
Installation Options
There are ISO images or rootfs tarballs for x86_64, i686 and ARM available, each of these supporting glibc or musl (except i686 which only supports glibc). Specific Raspberry Pi images do exist too. For x86_64 and i686 there are two variants: base and xfce.
My Installation
To install Void Linux I used the live ISO from the download page and picked the musl XFCE version. I haven't installed the desktop environment. Instead I installed the minimal system from the remote repositories and built up the system from there with the I3 window manager.
The complete OS (without /home) is around 6.3GB on hard disk. From these are 2.5GB only (nerd) fonts (explicitly installed) and 1.4GB are the package cache. So the bare system is around ~2.4GB. Surely you can get a lot lower by checking which packages to install more carefully.
After some fiddling I now have 649 packages installed, 65 of them explicitly.
The system has ~300MB RAM usage directly after booting into I3. With qutebrowser and some terminals open I rarely have more than ~700MB-800MB RAM usage.
The kernel is the standard linux kernel 5.19.16 at the time of writing. An LTS version of the kernel is also available which is the version 5.10.x series.
musl libc
The musl libc library is very lightweight unlike the fat glibc. It has a very minimal and strict approach to correctness and standard compliance. It makes the system very lean and fast and is perfect for small embedded systems or older hardware.
https://musl.libc.org/
The downside of musl is the lack of some features causing some software not being available in the Void Linux repositories due to their dependency on glibc. In particular the proprietary NVIDIA driver is not compatible with musl.
Most other programs which depend on glibc can be added using flatpak if you don't mind that as going against the minimalist approach of a distro like Void Linux. Snaps are completely dependent on glibc (and systemd) and therefore they're not available at all. It's also possible to run glibc apps in a chroot environment, but I didn't check that out.
With musl there is no locales support, so most terminal based applications will be English and won't be translated to your favorite language.
xbps Package Manager and repositories
The xbps package manager is an inhouse creation of the Void Linux developers. It's really very fast and resolves all dependencies by itself while installing/updating/removing packages. It's speed is comparable with Alpine Linux' apk package manager although xbps uses separate steps to download, unpack and configure the packages. xbps is also available in the AUR and some other distros. One goal of it is to be as portable as possible.
You can install and update software with "xbps-install" as well as query the repositories with "xbps-query". To remove packages you use "xbps-remove". "xbps-reconfigure" is used to change the package configuration. There are some other tools in the xbps package for example for creating packages.
I had to switch the default pinentry to pinentry-gtk which is done with the "xbps-alternatives --set pinentry-gtk" command. This is similar to Debian's "update-alternatives".
Some other tools for package maintenance are in the separate "xtools" package, such as "xcheckrestart". It is used to restart services after they are updated. This isn't done automatically by xbps-install.
Because Void Linux is build completely as an independent linux distribution, it uses its own package repositories. It follows the rolling release distribution model, so you get updates frequently, although the packages are more tested than the bleeding edge Arch Linux packages.
The repos for the musl edition count 13150 packages at the time of writing this.
xbps on GitHub (www)
runit
Void Linux comes with the runit init system. That makes a musl version of Void Linux possible because musl is incompatible with systemd. I needed to get used to it at first (never used it before), but after a while it feels consistent and elegant. It's fast, low on resources and simple. The commands are of course different from OpenRC or systemd and runit uses symbolic links to register services. After all it's only for starting/stopping services like OpenRC. Systemd of course does a lot of other things too.
I had some problems installing syncthing as a user service at first, but after a bit of searching the docs I managed to set it up. It's a little bit hacky at first because you need to set up a special system service for each user you want to have services running for. But after a while it feels consistent and thought out.
The whole system feels fast and snappy - The boot process from grub to lightdm takes less than 15 seconds on my Thinkpad T460s.
Conclusion
Void Linux musl edition is perfectly suited for low end and older hardware. The available number of packages is a little bit small so you can't have everything. But if you want to build up an unbloated minimal system then Void Linux is to consider.
I wouldn't recommend it for new Linux users but if you have at least some experience with the command line you should be fine with the installation guide.
I had a lot of fun experimenting with this operating system - Using it as my daily driver is definitely possible.
All in all - have fun!
-fab-
--
Back to index
Homepage