Void 20191109Void is a rolling release Linux distribution. The project offers a number of features which are uncommon in the Linux community, including a custom package manager (XBPS), two flavours of C library (the GNU C Library, glibc, and musl libc), and a custom init implementation called runit. If this were not enough to make the project interesting, the distribution can run on multiple architectures, including 32-bit (x86), 64-bit (x86_64), and several ARM boards, including the Raspberry Pi and BeagleBone.
Void is also the future base for Project Trident, which is migrating from TrueOS to Void, partially for more up to date hardware support. The Void project is available in a minimal, command line edition and six desktop editions: Enlightenment, Cinnamon, LXDE, LXQt, MATE, and Xfce. This, along with each edition being available in two C library flavours and multiple CPU architectures means the hardest part when getting started with Void is picking which option to download. I went with the 64-bit Xfce edition with the musl library. This edition was 757MB in size.
Booting from the live media brings up a menu asking if we would like to load the live desktop or transfer the operating system into RAM for improved performance and then load the live desktop. Either way, in short order the Xfce 4.14 desktop appears. The desktop's panel with an application menu, task switcher, and system tray appears across the top edge of the screen. A quick-launch panel appears centred along the bottom of the screen. Immediately after the desktop loads a pop-up message appears letting us know "Xfce PolicyKit Agent" has encountered an error. No further information is provided and all we can do is close this window. This PolicyKit error appears every time we sign in, both when running the live environment and when the operating system has been installed on the hard drive.
Void 20191109 -- The Xfce application menu and Thunar file manager (full image size: 146kB, resolution: 1280x1024 pixels)
Sometimes while I was running the live session the screensaver would kick in and prompt me for a password when I came back to my desk. The password to unlock the system is "voidlinux" which is shared on the distribution's download page. I recommend looking over the project's website, especially the download page, as there are a lot of tips and important pieces of information offered there. For example, there is no launcher for the Void system installer in the application menu. The download page tells us we can launch the installer using the command "sudo void-installer" from a command line.
Running the Void system installer opens a series of text-based menus. While we can go through the installer's options in the order of our choosing, I found it straight forward to go through the list from top to bottom. We are asked to pick our keyboard's layout from a list. Then enable a network interface and, optionally, enable DHCP to automatically get an IP address. We are then asked if we would like to install software packages from a local source (the DVD or USB thumb drive) or over the network. The Void website warns us we should use the local install media as the source when setting up a desktop environment. Though a reason is not given, I accepted the advice.
We are then asked to make up a hostname for our computer and pick our timezone from a list of options. We can then make up a password for the root account and create a username and password for our regular user account. We are then asked to pick a location for the system's bootloader.
Next the installer launches the menu-driven cfdisk partition manager to help us organize the hard drive. After the partitioning tool exits we are asked to assign filesystems to available partitions. The installer offers to format partitions with Btrfs, ext2/3/4, f2fs, and XFS. I decided to go with Btrfs in the hope of working with snapshots to safeguard the distribution's rolling release nature. The menu for assigning filesystems does not update to show when an area of the disk has been marked to be formatted. This makes it look like partitions will not be formatted, but otherwise the installer was pretty straight forward to navigate. Once we are done, the installer copies its files to the hard drive and offers to reboot the system.
While Void's installer feels like a throwback to the 90s in its style and resembles the installers of BSDs and Slackware in its approach, it works quickly and experienced users should have no problem navigating its options.
My new copy of Void booted to a graphical login screen where I could sign into the Xfce 4.14 desktop. When running in VirtualBox the initial screen resolution was unusually low, but could be adjusted in the Xfce settings panel without requiring any extra modules to be installed. When running on my workstation, Xfce used my display's full resolution.
The Xfce desktop was, as usual, very responsive and tended to stay out of the way. The default theme is a bit bright (and bland) for my taste, but it is easy enough to customize the desktop's appearance through the settings panel. I also found the quick-launch bar at the bottom of the screen took up real estate without providing me much benefit and it was easy to remove this second panel by right-clicking on it and removing it from the desktop settings.
There were a few issues with programs missing that the desktop expected to be available. For instance, the application menu has a launcher for a mail reader, but there is no e-mail client installed by default. In a similar vein, pressing the PrintScreen key caused an error as Xfce's screenshot tool could not be launched. In other words, the short-cut had been defined, but the screenshot utility was not installed. These missing pieces are easy to remedy, but give a rough early impression.
I began by trying out Void in VirtualBox and, apart from starting with a low desktop resolution, the distribution appeared to be working well. The system was responsive and running smoothly. When I switched over to the desktop machine I found Void could not boot in UEFI mode and could only be started in Legacy BIOS mode. Whenever I tried to launch the distribution with UEFI enabled the system would reboot and send me back to the boot loader screen.
When run in BIOS mode, Void performed smoothly on my workstation and Xfce offered top-notch performance. However, when running on either virtual or real hardware there was one serious problem: Void could not produce sound. When attempting to play music or videos, the distribution was silent. No audio mixer is included with the desktop environment so I installed both PulseAudio and ALSA, along with volume mixing tools. While the mixers confirmed desktop applications, like VLC and Firefox, were producing audio, none was ever sent to the computer's speakers, regardless of the output device or volume settings.
Void is a relatively light distribution out of the box. The Xfce edition used just 2.5GB of disk space for a fresh install and consumed about 240MB of RAM. This puts it on the lower end of the scale compared with most desktop distributions I have used over the past year.
When I first started using Void I noticed I could not power off the computer from the login screen. I had to sign in and then shutdown the system from the application or user menus. Early on I was able shutdown or restart the operating system from within the desktop environment. However, after the first wave of package upgrades, I could no longer shutdown the system using Xfce's menu options which had become disabled. To power off or restart the machine I had to open a terminal and type the appropriate shutdown command manually.
Void 20191109 -- Exploring a dark theme and running Firefox (full image size: 136kB, resolution: 1280x1024 pixels)
Void does not ship with many desktop applications. We are given the Firefox web browser, an image viewer and the Parole Media Player. The Thunar file manager is included along with a file renaming utility and the Xfce settings panel. These tools generally worked well, with the exception of Parole which would crash while trying to play a video and throw errors when playing audio files which indicate there is a problem with the player's backend not working. I swapped out Parole for VLC and found video files would display, but no media files would result in sound being produced.
Void does not ship with compilers or Java. At the time of writing this rolling release distribution ships with version 5.3 of the Linux kernel, though newer versions should regularly be made available. In the background the OpenSSH service runs, providing remote access. I was disappointed to discover Void's secure shell service allows remote root logins by default, a security concern that most other distributions disable out of the box.
One of Void's main claims to fame is its runit init software. The runit software is very simple, minimalist and light. It manages services a little differently than other init implementations and the details are well explained in the project's manual pages. It took me a little while to get used to how to start and stop services with runit, but once I got the hang of it I appreciated the flexibility. For instance, I like that the runit service manager will optionally either run a service just once, or start it and then monitor a service, restarting it if the service crashes.
I ran a few simple tests with runit on Void and compared it against SysV init running on MX Linux and systemd running on KaOS. These were crudely done tests, but I found it worth noting that SysV init and systemd booted and shutdown their operating systems in approximately the same amount of time. The runit implementation took half the time to boot Void and was faster shutting down. Its PID 1 process also used about 1% of the memory of SysV init, or less than half a per cent of systemd's memory usage. (These statistics are the same whether I was measuring virtual memory or resident memory).
Another of Void's special features is its XBPS package manager. While XBPS offers a lot of features, including mixing binary and source packages, I mostly focused on three main components: xbps-install for installing and upgrading packages, xbps-remove for deleting software, and xbps-query for finding packages in the repositories. There is no default graphical package manager for Void.
The XBPS utilities work well and very quickly, which is nice because Void's minimal nature meant I had to track down a lot of extra software. The syntax of the commands is sometimes a bit cryptic, but the tools worked and I encountered no problems while using them.
The first day of my trial there were about 200 updates, 400MB in size, waiting to be installed. Void does not notify the user when new packages become available, we are expected to check periodically.
One aspect of XBPS I appreciate is that we can find and install new repositories, such as community or non-free repositories, as though they were packages. For example, we can search for packages named "void-repo" and get a list of non-standard repositories the package manager recognizes. We can then install a repository package such as void-repo-nonfree to get access to software published under restrictive licenses.
Void 20191109 -- Adding new repositories with XBPS (full image size: 142kB, resolution: 1280x1024 pixels)
Void is quite an unusual project with a wide range of interesting features, such as multiple C libraries, many editions, support for lots of ARM devices, its own package manager, and its own init software. If you ever find yourself thinking that Linux distributions all feel too similar, Void will likely cure you of that feeling.
Being unique brings its own set of challenges. It means there is a learning curve for newcomers as there is a new package manager, a new service manager, and new approaches to understand. Void looks and acts a lot like other Linux distributions on the surface, but when you start poking at the details all sorts of differences become visible.
While I like Void's minimalist, unusual, and super fast nature, there are some drawbacks. Having a desktop distribution which cannot produce sound or boot on UEFI computers is a hard sell and a combination of problems which made Void impractical for me to use or recommend. There were a number of other, smaller issues too, like the persistent PolicyKit error that appeared at each login and the inability to shutdown the computer through the graphical interface after the first wave of updates. In short, I think Void is exploring a lot of interesting ideas, but it feels as though the project is spread thin and some issues are definitely leaking through the cracks.
This is a project that has a design I greatly appreciate and would like to explore further, but the quirks in the interface and problems with things like audio mean that I will have to keep appreciating Void from afar. I do wish more projects considered runit seriously though, it is a gem of an init system, very light, easy to understand, and flexible. I would be happy to see it adopted elsewhere.
* * * * *
Hardware used in this review
My physical test equipment for this review was a desktop HP Pavilon p6 Series with the following specifications: