DistroWatch.com: Put the fun back into computing. Use Linux, BSD.
The Void distribution was added to the DistroWatch database last month and I've received requests to review this unusual project. According to the Void distribution's website, the project can be described as follows:
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. Currently there are over 4,500 optimized binary packages for the x86, x86_64, ARMv6, ARMv7 architectures; also there's support to build (natively or cross-compiling) from sources any package easily that is available in the XBPS source packages collection.Void is an independent distribution and offers a rolling release approach to package management. There are many Void editions we can download. There are Void images for the BeagleBone and Raspberry Pi computers along with builds for 32-bit and 64-bit x86 machines. In addition, there are spins of Void for specific desktop environments and we can download images for Cinnamon, Enlightenment, MATE and Xfce flavours. I decided to begin my trial with the 64-bit Cinnamon build of Void. The download for the Cinnamon image is 454MB in size.
Booting from Void's "Cinnamon" media brought me to a blank console screen. Pressing the ALT key followed by a function key, such as F1, allowed me to access terminal screens with login prompts. However, a second or two after I switched to a terminal, the screen would go blank again. The pattern of switching to a text-based terminal, only to have it go blank, persisted. In short, I could access text consoles for brief periods of time and login, but the screen always went blank within three seconds, making it impractical to use the system or attempt to install the distribution.
Not yet ready to give up, I downloaded the Void "Base" edition to see if it would offer a different experience. The ISO for the Base edition is 188MB in size. Booting from the live media brings up a text console. This time the screen did not get wiped and I was able to read the instructions printed on the screen. The Void terminal provides a little documentation, offering us the login credentials for the root account and for a regular user account. We are also told how to launch the distribution's system installer and we are given the name of the package manager.
Void's system installer has a text interface that is arranged with a central "hub" menu. From this hub we can visit configuration options in the order of our choosing. The installer walks us through selecting our keyboard's layout, configuring our network interface, selecting the source location of Void's packages, setting our computer's hostname and selecting our language settings. We are also asked to select our time zone from a list and create a new password for the root account. We are further asked to select where Void should install its boot loader. When we get to partitioning our hard drive, the Void system installer launches the cfdisk partition manager. Once the disk has been partitioned we can select file systems for our partitions. I found ext2/3/4, Btrfs and XFS are supported by the installer. Once all the steps have been completed the installer copies its files to our hard drive and prompts us to reboot the computer.
The first time I booted my local copy of Void, the distribution locked up early in the boot process. However, this was the only time I saw Void lock-up. When a reboot was forced, the Void distribution booted cleanly and presented me with a text console and login prompt.
Signing into the root account presents us with a minimal command line interface provided by the Dash shell. We have access to GNU userland utilities and manual pages. The Void operating system is very light, using approximately 24MB of memory. I found my network connection was enabled automatically and, in the background, Void runs an OpenSSH server to allow remote logins. Void is a rolling release distribution so packages will be updated on a regular basis, but at install time I found the operating system ran on version 3.18 of the Linux kernel.
One unusual feature of Void's that has captured attention is the runit service manager. The runit software handles starting and stopping services a little differently than other init software. There is not much documentation on runit on the Void website and the links provided take us to other websites with, again, not much documentation. Following the instructions provided I was able to enable and disable system services such as the secure shell server. I found Void booted very quickly, going from the GRUB boot loader to a login prompt in under five seconds and I suspect part of the reason the distribution boots so quickly is runit's minimal approach.
Once I had a chance to play with the distribution's command line for a while I decided to add some additional software to the system, including a desktop environment. Void ships with a custom package manager called XBPS. There is a brief guide to using XBPS on the Void website and it seemed straight forward enough. I began with performing searches for packages using the xbps-query application. People familiar with Debian's apt-cache program will probably note similarities between apt-cache and xbps-query. I searched for a handful of programs, including the GNU compiler, Xfce, various login managers and the Xorg display server with none of these searches returning any results. I did note packages already installed, such as Bash and Dash, would show up in search results. At first I thought, and xbps-query seemed to confirm, that no remote repositories were enabled. However, a quick check through the XBPS configuration files showed there was a repository already set up. I tired manually adding a repository to xbps-query's command line, as shown in the XBPS manual and, again, no searches for new software returned any results.
Eventually, I gave up trying to find new applications and attempted to install all available software upgrades. This is done using the xbps-install program which appears to be similar in form and function to Debian's apt-get utility. Once xbps-install had downloaded the waiting package upgrades, 68MB of software in total, xbps-query started returning results for searches, I suspect because xbps-install updates the local package database. Still, xbps-query seemed to only be able to find some command line programs and not any desktop-related software. To find out what was available in Void's repository I had to visit their website and search for packages there. Using the Void website I tracked down the Clang compiler, Xorg packages, a login manager and two desktop environments (Xfce and Cinnamon). Sometimes while installing new packages the xbps-install package manager reported it was unable to find dependencies, but I found re-running the same install command a second time always fixed the problem.
After installing the Xorg software, additional video drivers, a login manager and desktop environments (along with enabling the desired services) I was unable to get Void to launch a graphical user interface. There is a small portion of the Void documentation which talks about enabling X, but I was unable to get a working desktop following the provided instructions.
With my hopes of running Void as a desktop operating system crushed for a second time, I turned my attention to experimenting with the command line interface. I found I was able to create and use regular user accounts, enable some network services and use the compiler. Unfortunately, I was not able to play audio files as Void was unable to make use of my sound card, whether the distribution was running on physical hardware or in a virtual machine. Void was very light on resources, rarely using more than 70MB of memory. When running in a virtual environment, Void barely used any of the host computer's CPU resources. During the week I occasionally downloaded additional software updates, about 50MB or so in total.
Perhaps much of my poor luck with Void was a result of hardware incompatibilities, it certainly seemed that way when I was trying to use the Cinnamon edition of the distribution. However, whether due to software bugs or drivers or hardware, my time with Void was unfruitful. The distribution's Cinnamon edition did not work for me in any practical sense and the Base edition, while it installed, offered only minimal functionality. The functionality that was provided was sometimes flawed. For example, the xbps-install program worked well for me, but xbps-query regularly failed to locate software, even when given the exact name of a package I wanted (and had located through the project's website). I could install multimedia programs, but audio didn't work. I could install X, but did not get a working graphical interface.
The main reason I tried Void was to get a look at the runit init software in action. Void starts up faster than perhaps any other Linux distribution I have worked with, so runit would appear to have its good points. I was able to enable and disable services without any trouble, so that is another point in runit's favour. I was not able to find much documentation about runit on Void's website, but a little looking through the local manual pages turned up information on how to start, stop and check on the status of background services. At this point I am very much a beginner when it comes to using runit, but I like what I have seen thus far. The runit software appears to be very lightweight (using only 1MB of memory compared to Upstart's 33MB and systemd's 185MB*), the service management commands have simple syntax and the runit scripts for managing services appear to all be just two or three lines of text apiece. This may be the most straight forward approach to managing services I have encountered, at least based on the experimenting I've done so far with Void.
A minor point I'd like to bring up is the use of Dash as the default shell. Dash is great for bringing operating systems on-line as it is designed to be fast and lightweight, but as an interactive user shell Dash leaves a lot to be desired. Bash is available on the distribution and I think it would have made more sense to have made Bash the default shell for the root account.
In the end, I appreciate what Void's developers are trying to do. I like the runit service manager and I'm open to new approaches to package management. However, at this time I think Void would benefit from more documentation to assist new users and bug testing to smooth out the user experience.
* * * * *Hardware used in this review
My physical test equipment for this review was a desktop HP Pavilon p6 Series with the following specifications:
- Processor: Dual-core 2.8GHz AMD A4-3420 APU
- Storage: 500GB Hitachi hard drive
- Memory: 6GB of RAM
- Networking: Realtek RTL8111 wired network card
- Display: AMD Radeon HD 6410D video card
* The memory statistics provided come from running the top command and checking the virtual memory usage of PID 1 on Void 20150221 (runit), Ubuntu 14.04 (Upstart) and Korora 21 (systemd).