Void Linux is a distribution that has largely flown under the radar of the Linux media, partly due to not being listed on Distro Watch and partly due to the lack of a user friendly derivative. However, Void offers a relatively simple installer that will get even a moderately skilled user up and running in no time and the distro itself has quite a few compelling features unique to it. So, what are they and are they important to you? Let me explain.
Void Linux is arguably the most BSD-like of all Linux distributions. One feature that characterizes the BSDs is the presence of a ports tree, that allows a wide variety of software to be built from source. A port is simply a folder containing the makefile and source code necessary to build the package (after fetching the source of course). Another thing common to the BSDs is dual package management, in that binaries and source are both available and fully supported (compared to Gentoo, which sorely lacks binaries and requires EVERYTHING to be compiled with a few exceptions). Well, Void Linux has the XBPS package manager that allows binaries to be installed, by using either
or for source based (using ports)
You may be asking yourself why you would want both source AND binaries. Well, there are several reasons.
*You have access to a HUGE variety of applications and can rely on using upstream source code rather than being dependent on less secure software sources like the AUR and PPA's.
*You often get access to newer versions of software sooner.
The other (somewhat) unique features of Void, that make it more BSD-like, are its init system and design philosophy. Void uses Runit, a very minimalist init system that is easy to configure and more in line with the old daemontools that Linux distros used to use by default. In keeping with this, Void aims to have an always bootable base system that is somewhat more stable than Arch or Gentoo, while still having fully rolling packages. In other words, your packages may break, but your base system shouldn't. It's also worth mentioning that the use of Runit and overall design philosophy make Void incredibly lightweight and well suited for older hardware or netbooks.
Okay, are you still interested? If so, let's take a look at the installer. This is what you see after booting the iso:
You can see that I have followed the initial prompt and logged in as root using the provided password. Now, let's start the installation by doing
The installer will now prompt us with several system components that need to be configured, working our way down to Install.
Now, we will work our way down to the finall install, starting with Keyboard.
You can see my network was detected, and I am going to choose to configure it. The installer does this for us automatically, and will tell Runit to bring up the network automatically when we reboot (as opposed to something like pacstrap in Arch, where we have to manually enable it for systemd).
And the installer lets us know that everything was configured properly. Now, the next step is to choose how we will install packages. If you used the normal iso, local is correct, if you are doing a net install obviously we will use the network.
We also have to tie up some odds and ends like setting a hostname and a locale:
Okay, now we are ready to get going, it's time to configure our boot device. You should see your connected hard drives listed, in my virtual machine we're using sda.
We will also have to partition our drive and create a partition table (you may also use GParted Live to do this ahead of time with a GUI, that is up to you). Then it's a matter of setting our mount points.
For disks under 2 GB, MS DOS is fine. Over 2 GB and GPT is necessary.
In my example, we will create a 1 GB EXT2 partition for GRUB mounted at /boot, a 2 GB swap partition and a 7 GB / (or root) partition of type EXT4. The / partition and swap would be bigger on a real install instead of a virtual machine. This is a two step process, at the first prompt we will set our partition table as MS DOS and carve up the disk into partitions while selecting their file type. This drops us into cfdisk, which allows us to finish partitioning. Make sure to set your /boot partition as bootable!
We quit cfdisk and now install.
After install, we are prompted to reboot. Make sure you have removed your usb stick or changed your boot priority, of course. If everything is okay, we are prompted with GRUB, then dumped into a shell.
Now that we have a shell, it's important to remember that this is a bit different than an install with Arch's pacstrap. We have a full, headless (as in without X.Org) system. All that is left to do is create a user and install X.Org with a DE.
First, I will do:
to create myself as a user. Then I will set a password.
Now I will add myself to the Wheel and other relevant groups. *Remember to add yourself to the games group after you install a game.
usermod -G wheel,audio,lp,optical,scanner,storage,video ben
Now I will assign my home directory.
chown -R ben /home/ben
Now, we need to sync with the repositories to install packages.
Now to install our packages.
xbps-install -S xorg lxqt firefox
This will give us the X Window System, LXQt (just replace it with your DE of choice) and Firefox for a web browser after saying YES at the prompt. Now, we need to tell X what DE to start.
echo 'exec startlxqt' > .xinitrc
Now we log out of our root session and back in as our user with:
Then we just invoke:
Which should give us something like this:
From this point, you can install a graphical log in manager or whatever other software you may need. Also, keeping our system updated is as simple as:
which syncs and upgrades at the same time. This can be broken up into multiple steps of course, for instance by just doing
to sync and review packages before upgrading. You can find the full list of options by just doing
in the terminal. xbps-src is not enabled by default, there is a well written guide for this on the Void Linux wiki.
So in summary, what are my thoughts on Void? If you want a system with up to date packages, the ability to use source and binaries that can run on almost any hardware, and a very minimalist base system that can be built to suit your needs (either a full on gaming machine with Steam or a light netbook OS with LXQt) it is the absolute best choice. There are so many distros that are redundant and unnecessary, but Void is unique in being a truly UNIX-like distro from bottom to top with Runit and XBPS. The only drawback is the small community.
Downloads and full documentation can be found here (including how to use xbps-src to install packages from source): http://www.voidlinux.eu/#wtf
For reference, here are some more useful links.
*Explanation for the use of the XBPS ports system: https://github.com/voidlinux/documentation/wiki/xbps-packages
*Post Install Guide: https://github.com/voidlinux/documentation/wiki#post-installation
*Proprietary NVIDIA drivers: https://github.com/voidlinux/documentation/wiki/propietary-video-drivers#nvidia
*Proprietary AMD drivers: https://github.com/voidlinux/documentation/wiki/propietary-video-drivers#amd
*Installing Steam: https://github.com/voidlinux/documentation/wiki/steam
*A full overview of the XBPS package manager: https://github.com/voidlinux/documentation/wiki/xbps