Void Linux, a distribution suitable for experienced Linux users, requires a lot of work to configure after installation -- at least this is the case if the Enlightenment Live ISO is used for installation. Even the most basic software needs to be installed by the user. Additionally, an optional, non-free repository must be enabled to install non-free software. Besides this, some essential fixes need to be made to even log into the newly installed system as well as to connect to wireless networks as a regular user.
Installation from the local source on the Enlightenement Live ISO, leaves the system without any useful software besides Enlightenment's native file manager and terminal emulator, Terminology. Even the minimal text editors nano or vim typically found in most Linux distributions are not even included. I did notice that vi was installed, but after having installed other software, including xtools -- as the name implies, a collection of tools, so this may not have been part of the initial installation.
As Void Linux, by default, only installs FOSS drivers and only enables repositories that host only FOSS software, users, most likely, will also want to enable the non-free repository and install some proprietary software, drivers, and codecs from this repository.
More importantly, there are some crucial fixes that users will need to make even before the newly installed system can be used, including creating a regular user and some modifications to configuration files to prevent blocking of Enlightenment's native network management service, connman.
I found that it was also necessary to make some modifications to the system configuration, besides these essential ones, to improve usability. This article presents the steps I took to make my installation of Void Linux usable.
I experienced the first problem with Void Linux immediately after booting into the freshly installed system, which was that after entering a username and password in the greeter, nothing happened. I realized that the user was not created during the installation. Fortunately, I remembered that this issue was addressed in the Void Wiki on post-installation steps. I had to log into one of the consoles by entering
Ctrl + Alt + F2 and create a new user using the instructions for adding an additional user on the same Wiki page,
useradd -m -s /bin/bash -U -G wheel,users,audio,video,cdrom,input voiduser
This doesn't create the typical folders found in the users home directory except the Desktop directory -- no Documents, Pictures, Videos, or any of the non-typical directories found at this location, such as public_html. After I installed Plasma, a Downloads directory did appear. Maybe this is intentional, perhaps because most users, like I do, prefer to put their data in an external partition mounted automatically by /etc/fstab.
The other major problem I encountred was with Econnman, the GUI for managing Econnman, Enlightenment's own analogue to the desktop environment independent NetworkManager. In this installation, scanning for wireless networks caused a nasty error dialog. Fortunately, I found a solution quickly in the Void Linux Forums which required editing /etc/dbus-1/system.d/connman-nmcompat.conf
As indicated in the solution in the forum thread shown in the above screenshot, the solution was to change the line in the file mentioned above from
<deny send_destination="org.freedesktop.NetworkManager" />
<allow send_destination="org.freedesktop.NetworkManager" />
For a few reboots after this change, I stopped getting the error, maybe because I was connecting to the same network. But even when I was not getting this error, the process of making a connection was not completely smooth. But then, maybe because I had installed the KDE Plasma Desktop in the interim, the error dialog began to appear again. To resolve this issue I changed all instances of
allow in the following files:
/etc/dbus-1/system.d/nm-dispatcher.conf /etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf /etc/dbus-1/system.d/wpa_supplicant.conf
Then I restarted the connmand service with
sudo sv restart connmand,
after which EConnMan worked as expected.
Enable Writing to NTFS Partitions
Enable Tapping on Touchpad
Although not a critical problem, most laptop users laptop users probably want to use the tap to click features of a touchpad. Enabling this feature required first determining whether libinput or the Synaptics driver handles the touchpad, then modifying the appropriate configuration file to enable the desired touchpad features.
To determine whether libinput handles the touchpad use:
grep -e "Using input driver 'libinput'" /var/log/Xorg.0.log
If the output of this command doesn't mention Synaptics, then the touchpad is controlled by the Synaptics driver. In my case, as shown below, the output indicated that libinput controls many of input hardware, including the hotkeys, but not the touchpad.
I chose to continue to use the Synaptics driver for the touchpad instead of libinput. To enable tapping on the touchpad I used the Arch Wiki suggestions for configuring it. First, I copied the default synaptics configuration /usr/share/X11/xorg.conf.d/70-synaptics.conf to /etc/X11/xorg.conf.d/. I then used the common options given in the Arch Wiki, which happen to include enabling one finger, two finger, and three finger taps, and the mouse buttons these taps correspond to and included them in the configuration file section under the Identifier "touchpad catchall".
The Void Linux Wiki advises the installation of bluez, the Bluetooth software stack with
xbps-install -S bluez,
after which the relevant services must be enabled with:
$ ln -s /etc/sv/dbus /var/service/ $ ln -s /etc/sv/bluetoothd /var/service/
It seems that no other package is required for integrating Bluetooth in Enlightenment, but Plasma requires bluez, which can be installed with
xbps-install -S bluedevil.
By the time I reached this step in configuring the Void installation, all of these packages had already been installed, and the services had been enabled except the bluetoothd service. I enabled the service and even added my user to the bluetooth group, but I received the message "Adapter not found" even though the rfkill shows that the adapter is not blocked. I had this issue with a recent installation of Sabayon, but was resolved easily there by enabling the bluetooth service. Unfortunately, this issue could not be solved similarly in Void.
I eventually resolved the issue by installing linux-firmware and libbluetooth and rebooting. I believe the linux-firmware package added the necessary firmware for Bluetooth and incidentally for the Realtek Ethernet Controller.
The most persistent issue that I have had and one that I have yet to resolve is that although the system does suspend as expected when closing the lid or using the sleep button (Fn + F4 on this Acer V15 Nitro)
, the screen does not lock. When resuming the session resumes without displaying a lock screen. A Void user with the same issue asked for help on the Void Form. I attempted the solution suggested by sth on this thread, substituting
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock,
for this users generic placeholder "slock". While this qdbus command does lock the screen when used on its own in a terminal, it doesn't lock the screen before suspending when incoroprating it into /etc/acpi/handler.sh.
Install and Configure Firewall
The Void Linux Wiki mentions three firewall utilities, iptables, nftables -- the upcoming default replacement for iptables, and ufw, a front end for iptables, that simplifies and works with iptables. When I saw this page, I thought I would have to decide between iptables and netfilter, and install and configure one of these. But it turns out that iptables was already installed but with unsuitable and insecure default policies, that accepted all incoming connections. Instead of following the Void Wiki page on configuring iptables, I chose to install ufw, with
sudo xbps-install ufw,
and enable its associated service with
ln -s /etc/sv/ufw /var/service,
Most users will find it necessary to enable the non-free repository for various packages, including proprietary drivers and codecs. This repository can be enabled with:
as root or with sudo priveleges.
Prepare System for Source Package Management
Many non-free packages, including Adobe Flash for NPAPI browsers such as Firefox, must be built and installed using the source package management component of XBPS, Xbps-src. The steps required for this are provided in the Void Linux Wiki page for Xbps-src. Only a few of the actions listed in the "Requirements" and "Quick Start" sections are necessary for installing source packages already in the Void Linux source repository hosted on Github. As root or with sudo:
git clone https://github.com/voidlinux/void-packages
The rest of this Wiki page provides guidance on building packages from upstream sources using a blank packaging recipe template or for building and contributing packages to the Void Linux binary repository.
Install Adobe Flash for NPAPI Browsers
Installing Void Linux from the local sources on the Enlightenment live ISO provides the user with Firefox ESR as the default browser available on first boot. However, a Flash plugin is not installed for this browser or other browsers that use NPAPI plugins. After preparing the system for basic Xbps-src usage as described above, Adobe Flash for NPAPI browsers can be installed as described in the Wiki page on installing Adobe Flash for NPAPI browsers and as reproduced here:
$ cd void-packages $ echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf $ ./xbps-src pkg adobe-flash-plugin $ sudo xbps-install --repository=hostdir/binpkgs/nonfree adobe-flash-plugin
Install Google Chrome
Google Chrome comes bundled with its own Flash pluging for PPAPI extensions, but it must be installed from Void's source Github repository. After preparing he system for source package installation, Chrome can be installed with the following:
$ cd void-packages $ ./xbps-src pkg google-chrome $ sudo xbps-install --repository=hostdir/binpkgs/nonfree google-chrome
A page on the Void Linux forum page describes the process but includes a couple of the steps for preparing the system for source package installation which may be redundant if the system was already prepared as described above. This page however does not include the step for allowing packages to be built from restricted source, as shown above for installing NPAPI Flash. Either this is not necessary for Chrome or the required setting I made in order to build and install Flash was already in effect.
Install Firefox, Firefox Beta, and Firefox Developer
The version of Firefox that is installed by default when using the Enlightenment ISO local sources is exteremely old. In order to get the latest version of Firefox, and Firefox Beta and Firefox Developer Edition, I used a method I described in another post to install multiple versions of Firefox with separate profiles.
Configure Optimus, Replacing Nouveau with Nvidia
By my third installation of Void Linux, and using it further, I decided that I would not be keeping it for reasons discussed in my review, so I didn't investigate this issue further.
Even without the replacement of Nouveau with Nvidia drivers or, ideally, with an Intel/Nvidia hybrid system, Void Linux is very usable after these fixes and enhancements -- for those who either value its use of an alternative init system to systemd, or value its package build system.