Many Linux distributions are based on established variants of the free Linux operating system and therefore incorporate proven technology. Increasingly, however, independent Linux derivatives are being developed. These are cropping up mostly for users looking to put slim systems on older hardware. The very young Void Linux [1] hails from Spain, and its second version was just recently released. This distribution is intended as an all-around solution for a broad range of hardware platforms. In addition to its resource-frugal design, "The Void" distinguishes itself with a multitude of newly developed core components that extend into the package management and even the init system.
Void Linux comes in variants for conventional computer systems with 32-bit and 64-bit architectures and for ARM-based computers like the Raspberry Pi. The developers have accommodated the older, ARMv6 design [2] for the ARM distribution. As a result, even first-generation Rasp Pis run easily with Void.
The minimal hardware required for Intel-based systems would be a Pentium 4 computer with just 96MB working memory and 350MB disk space. The RAM and disk space requirements do not increase for 64-bit computers. However, the developers recommend 256MB or 512MB working memory for graphical desktops.
The desktop selection is also diverse. There are images that have Cinnamon, Enlightenment, LXDE, LXQt, Maté, and Xfce as their user interface. Additionally, the Void project offers images for downloading that do not have preset desktop environments. All of these images take up less than 600MB of space, making them easily burnable to blank CDs and appropriate for PCs with CD drives.
Really Fast
Void Linux boots very quickly into a live system. The boot manager offers the option of copying the entire operating system into working memory. It is a good idea to do this when working on very old 32-bit PCs with slow optical drives and outmoded, first-generation USB connections that prevent fast starts. Once an option is selected, the system will quickly boot to a straightforward graphical interface (Figure 1).
Figure 1: Void Linux starts amazingly fast even on a Cinnamon desktop.
Because of the presence of resource-frugal user interfaces, Void requires relatively little memory. A test system using an LXQt desktop and 256MB main memory started up using only 110MB of memory. The heftier Cinnamon desktop also started on the same computer; however, the desktop worked very sluggishly and taxed working memory to the maximum.
The Cinnamon environment was much livelier during another test performed on a single-core processor computer with 512MB RAM. Memory use totaled about 190MB, including caches. Therefore, it is probably a good idea to operate interfaces like Cinnamon, Xfce, and Maté on machines with at least 512MB of working memory.
Void Linux also avoids excessive use of resources in bulk memory. Our LXQt installation made do with 950MB on the hard disk in the standard installation. Cinnamon, on the other hand, took up 1.2GB of space.
All Different
As would be expected with large variations in image sizes, the available software inventory in the live versions differs accordingly. For example, LXQt uses the slim QupZilla as a web browser. Other environments use Firefox. The management tools also differ depending on the desktop. Some of these are free-standing tools. Others come from an integrated graphical program that bundles all of the settings into a uniform interface (Figure 2).
Figure 2: Cinnamon makes it easy to adjust the desktop graphically.
In general, the Void variants come with considerably fewer software applications than other distributions. This spartan equipment is due to the limited size of the ISO images, because they are meant to be stored on a single CD. This means that absolutely no space remains for the large components like LibreOffice or Gimp. Even so, it is possible to generate an internet connection in each version of the operating system and load software from the repositories.
By default, the individual variants feature merely two submenus, Accessories
and Internet
. Each only lists a few applications. For instance, the Internet
submenu, without exception, only contains one web browser. The Accessories
submenu is restricted to a few management programs like file managers and image viewers. However, Void comes equipped with configuration programs specific to each desktop. This makes it possible to select system-specific settings and adjust the desktop without having to load additional software from the Internet.
Core Components
The core components of the operating system found on the ISO images are reasonably up to date. For example, Void Linux works with kernel 4.2.6, the GNU libraries come in version 2.22, the print system CUPS stands at version 2.1.3, and the window manager Openbox comes in version 3.6.1. For the most part, the applications also have version numbers that indicate that they are current. Gimp starts up in version 2.8.16. There is version 3.0.1 of the text editor AbiWord. Firefox comes in version 44.0. Even the desktops themselves, such as Maté, Xfce, and the Gnome shell, appear in current versions.
Void Linux comes with many improvements, but these show themselves only upon closer inspection. For example, the developers have decided to use the runit init scheme instead of SysV init, Upstart, or systemd. Runit was built simply, has just three levels, and has also been optimized to run at especially high speeds. It uses its own very straightforward syntax. This type of construction lets even the beginning user start, administer, and stop services and processes [3]. Runit organizes individual run levels differently from the typical init systems. The script for the first level initializes the system; then services and processes start on the second level. The script at the third level terminates running processes and shuts down the system.
The Void-specific package administration is the X Binary Package System (xbps). According to information provided by the project, xbps already contains more than 6,000 packages. Originally, this tool was developed as a package manager for NetBSD, and it has some distinctive features. For example, it is easy to localize precompiled packages via a search dialog on the website for the Void project [4].
Like other professional package managers, xbps automatically resolves dependencies during new software installation, and it has several repositories. There the user will find special sub-repositories for developers and for software that is proprietary or that falls under a non-open license. With the help of an advanced syntax, it is possible to easily use the xbps command line for updating individual programs or the entire system. Downgrades are also easy. The project page contains detailed documentation for this tool together with helpful examples [5].
Rolling
Unlike statically updated distributions, such as the classic Debian and its derivative Ubuntu, Void Linux operates as a rolling-release system. Thus, it is continuously updated. The developers use the cloud-based tool Travis CI for integration tests to make sure that the Void repositories remain consistent following updates and extensions.
The user can create source code binary packages with the help of xbps-src
, a tool which is part of the package administrator. The xbps-src
tool works with containers and without root rights due to isolation of the individual processes. When used as a cross-compiler, this tool is also capable of creating binary packages for other supported architectures regardless of the chosen host platform.
Installation
At this point, Void Linux still does not have a graphical installer that would allow the user to put the operating system on bulk storage via simple mouse clicks. The installation routine is still command line driven. The user uses it for quickly putting the system on the hard drive or an SSD.
To launch the installation routine, the user opens a terminal in a live system and acquires administrative rights with the help of su
and the password voidlinux
. At the prompt, the user then calls the command void-installer
. Depending on the user's native language you should be aware that the operating system utilizes an American English keyboard layout.
The installation routine opens an Ncurses interface, which lets the user create a ready-to-function system via a small number of settings dialogs (Figure 3). The dialog for defining a root password is somewhat out of the ordinary in that the password that gets entered is not visible in either text or by means of asterisks. The user can manually designate a file when partitioning. Modern versions such as btrfs
and f2fs
are made available.
Figure 3: The Void Linux installer is visually simple and clean, and it works well.
Software
Void also uses the command line to install new software packages. Even though the xbps package administrator has very advanced functions, basic software management operations can be accomplished with only four commands. If it makes sense, the user can combine the predefined parameters and thus save time and effort.
The commands from Listing 1 are entered into the terminal in order to activate the main archive. The archive date
should be entered using the format YYYY-MM-DD
. Void automatically retrieves various files for the integration of sub-repositories when the information is subsequently loaded. The corresponding sub-archives are activated using the xbps-install <Repo>
command.
Activating the Main Archive
01 # xbps-query --repository=http://archive.voidlinux.eu/glibc/Archive date/current -Mis \*
02 # xbps-install void-repo-nonfree-7_1
03 # xbps-query -l | more
04 # xbps-install -Sf Package
Line 2 makes the sub-repository with non-open software available. Following the security query, the system will install the appropriate repository. The user should be aware that administration rights are required for this work; otherwise, the process will fail. Data synchronization should be executed with the help of the xbps-install -S
command. This maintains the consistency of the system.
Line 3 will allow the user to view the program inventory in the software source. The xbps-query tool lists the packages in alphabetical order by the page (Figure 4). The installation of new packages can also be accomplished via a single command. Equipped with administration rights, the user enters xbps-install <Package>
in the terminal. Using the same command together with the added parameter -S
lets the user target individual packages for updating. The switch functions even when the specified package has not yet been installed.
Figure 4: The Void Linux software archive proves to be well equipped.
Line 4 is used to install either an older version or a specific version of a software package. Updating the entire Void installation requires that the user enter the xbps-install -Su
command.
Applications can be removed with the xbps-remove
command. This works analogously to the addition of new packages. The command also recognizes several important parameters for maintaining the consistency of the system. The simplest removal method involves applying the xbps-remove <package>
command to specified software. If the user additionally wants to resolve all of the basic dependencies, the -R
option should be added. The temporary storage created by the package administration is removed via the xbps-remove -O
command.
The developers have also given thought to so-called data orphans. Data orphans are vestiges of software that have already been deleted, and they are not needed for any purpose. Over time, these orphans can take up a lot of memory and should be removed. The command xbps-remove -o
takes care of this problem.
The package manager installs packages in two basic steps. First, the manager decompresses the package archive. Next, the binary files are integrated in the system and configured. After an update, individual packages may need to be reconfigured. This is done via the invocation xbps-reconfigure -a
.
The user identifies packages that need to be configured by entering the xbps-query -l
command at the prompt. A list of packages appears. Those packages requiring configuration in order to maintain a completely consistent system are designated by the prefix uu
.
Conclusion
Void Linux made a favorable impression during tests of numerous desktop environments thanks to its rock solid stability and high speed. Additionally, interfaces like Maté and Cinnamon offer modern controls and extensive configuration possibilities. Because Void Linux has a broad range of features and is frugal with resources, it serves as a good all-around operating system for small PCs with single core CPUs and reduced amounts of working memory. The user who wants an operating system with lots of innovation but also wants to enjoy the challenge of taking a path less traveled should be quite satisfied with Void Linux.