Manjaro Linux has been the default Linux install on the Belkast laptops and, over the last few years, it has been a very stable operating system. It has very rarely had an issue, with OS and package updates always working as intended. Many packages have been installed via the AUR (Arch User Repository), and these have worked well too.

Recently, however, the number of Manjaro packages installed from the AUR was getting unwieldy, and I am never really 100% comfortable installing packages that are not fully supported by the OS maintainer.

Over the last few weeks I have been watching YouTube videos about VOID Linux, and it got me thinking. Could I also switch to VOID Linux?

VOID Linux uses runit for managing system services and, after watching all those videos, it certainly appears that it is a system that is easier to understand. Additionally, because systemd is not used, VOID Linux appears to use less system resources. VOID Linux would be perfect for my Acer Chromebook, I thought, and therefore I started with that laptop. Described below is my experience so far.

Prepare to Install

I downloaded the x64 glibc base ISO image from the VOID website.

Once the ISO had finished downloading, I wrote the image to a USB stick, which I then proceeded to boot my laptop from.

At the initial command prompt, I entered a username of root and a password of voidlinux.

Installation

The installation is ncurses based and, except for the partitioning section, it is easy to understand and follow. To run the installer, I entered void-installer at the command prompt, and pressed enter.

Partitioning

If you decide to do a UEFI install, make sure the efi partition has at least 256MB. This will be mounted at /boot/efi.

I made the boot partition 1GB on my Dell 7490 so it can hold a few kernel revisions. The partition on my Chromebook is a bit small; my mistake!

The partition scheme I chose was the GUID Partition Table GPT. The only thing you need to ensure, when using this partition table type, is that the first partition has the bios_grub flag.

I decided to set the size of the /boot partition to 350 MB, as this partition will hold the system Linux kernels. A size of 350 MB ensures that three kernels can be accommodated comfortably.

The configuration for the first two VOID Linux partitions in a GPT scheme are shown in the table below.

Size Filesystem Flag Mount
5 MB BIOS boot or ef02 bios_grub None
350 MB vfat None /boot

Setup

Change default repository

The VOID Linux repositories contain the majority of packages that you would ever want (or need) to install. For everything else, there is flatpak. One of the first things I did was to change the location of the default repository, since the repository that is configured during installation is located in Germany. Therefore I changed the repository to mirror.clarkson.edu/voidlinux/current/, which is located in the United States.

Add three additional repositories:

void-repo-multilib-6_4
void-repo-multilib-nonfree-6_4
void-repo-nonfree-9_6

System Services

The first thing I did was to install the system services that I would need. On the Acer laptop, I found that wpa_supplicant was not stable at all. I therefore installed iwd, which proved to be very stable. I removed wpa_supplicant and configured iwd to start at system boot using sudo ln -s /etc/sv/iwd /var/services/. On a MacBook, wpa_supplicant worked very well, so this configuration step was not required.

I ran in to an issue with the NetworkManager service on a Dell 7490, so make sure the default services match those starting in /var/service.

pipewire

Updated Information

Packages

The list below shows some of the additional packages that I installed on the VOID Linux system. Of course not everything is available, Proton Bridge is one application that I could not install, but I think I can do without reading email on every single laptop that I own (in addition to my phone).

Other things

MacBook

I had to add the following lines to the /etc/rc.local file:

modprobe -r usbmouse modprobe -r bcm5974 modprobe bcm5974

Enpass

To use enpass, you need to install it as a flatpak and then edit the flatpak config file to allow access to the local filesystem; otherwise it will not save any of the configured vaults.

[Desktop Entry]
Version=1.0
Type=Application
Name=Enpass
GenericName=Enpass Password manager
Icon=io.enpass.Enpass
Terminal=false
Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --filesystem=host --command=enpass --file-forwarding io.enpass.Enpass @@u %U @@
MimeType=x-scheme-handler/enpassauth;x-scheme-handler/enpasscard;x-scheme-handler/enpassstart;x-scheme-handler/enpass;x-scheme-handler/cloudkit-7adb8cc6tf.in.sinew.walletx;application/enpasscard;
Categories=Utility
X-Flatpak-Tags=proprietary;
X-Flatpak=io.enpass.Enpass

runit

Make sure the configured services are also in the default run level.
The directory to check is /etc/runit/runsvdir/default.

acpid ⇒ /etc/sv/acpid
agetty-tty1 ⇒ /etc/sv/agetty-tty1
agetty-tty2 ⇒ /etc/sv/agetty-tty2
agetty-tty3 ⇒ /etc/sv/agetty-tty3
agetty-tty4 ⇒ /etc/sv/agetty-tty4
agetty-tty5 ⇒ /etc/sv/agetty-tty5
agetty-tty6 ⇒ /etc/sv/agetty-tty6
cronie ⇒ /etc/sv/cronie/
dbus ⇒ /etc/sv/dbus
elogind ⇒ /etc/sv/elogind/
iwd ⇒ /etc/sv/iwd
libvirtd ⇒ /etc/sv/libvirtd
lxdm ⇒ /etc/sv/lxdm/
mpd ⇒ /etc/sv/mpd
netmount ⇒ /etc/sv/netmount/
NetworkManager ⇒ /etc/sv/NetworkManager
ntpd ⇒ /etc/sv/ntpd
polkitd ⇒ /etc/sv/polkitd
sshd ⇒ /etc/sv/sshd
tailscaled ⇒ /etc/sv/tailscaled
tlp ⇒ /etc/sv/tlp/
udevd ⇒ /etc/sv/udevd
virtlockd ⇒ /etc/sv/virtlockd
virtlogd ⇒ /etc/sv/virtlogd

Virtual Machines

sudo usermod -a -G libvirt,kvm karmst

Installed Packages List

After installing the base VOID OS, I installed the following packages.

brightnessctl-0.5.1_1
cifs-utils-6.15_1
cronie-1.7.2_1
curl-8.9.1_1
dejavu-fonts-ttf-2.37_2
dmenu-5.3_1
dunst-1.11.0_1
elogind-252.9_2
exa-0.19.1_1
eza-0.19.1_1
feh-3.10.3_1
firefox-129.0_1
flatpak-1.15.10_1
font-awesome-4.7.0_3
font-awesome5-5.15.4_2
font-hack-ttf-3.003_2
font-weather-icons-2.0.10_2
fonts-roboto-ttf-2.138_3
fzf-0.54.3_2
gdu-5.29.0_2
gnome-keyring-46.1_1
htop-3.3.0_1
i3-4.23_1
i3-gaps-4.23_1
i3lock-color-2.13.c.4_1
iwd-2.19_1
jgmenu-4.4.1_1
jq-1.7.1_1
kitty-0.36.1_1
libreoffice-24.2.5.1_1
lxdm-0.5.3_5
mc-4.8.31_1
mpc-0.35_1
mpd-0.23.15_3
mpv-0.38.0_3
nano-8.1_1
neofetch-7.1.0_2
nerd-fonts-ttf-3.2.1_1
network-manager-applet-1.36.0_1
NetworkManager-1.48.8_1
newsboat-2.36_1
nextcloud-client-3.13.1_1
noto-fonts-emoji-2.042_1
noto-fonts-ttf-24.8.1_2
noto-fonts-ttf-extra-24.8.1_2
ntfs-3g-2022.10.3_1
ntp-4.2.8p15_7
pass-1.7.4_3
pavucontrol-6.1_1
pcmanfm-1.3.2_2
picom-11.2_1
pinentry-1.3.1_1
pinentry-dmenu-0.2.3_1
pinentry-gtk-1.3.1_1
pipewire-1.2.2_1
plocate-1.1.22_1
polkit-124_1
polkit-qt5-0.200.0_1
polybar-3.7.2_1
protonmail-bridge-3.12.0_2
protonvpn-cli-2.2.12_1
pulseaudio-16.1_2
pulseaudio-utils-16.1_2
putty-0.81_1
pyradio-0.9.3.9_1
qalculate-5.2.0_1
qtpass-1.3.2_1
qemu-9.0.2_1
qutebrowser-3.2.1_1
rclone-1.67.0_2
rofi-1.7.5_1
rofi-calc-2.2.1_1
rofi-emoji-3.3.0_1
rofi-pass-2.0.2_1
rsync-3.3.0_1
screenkey-1.5_3
source-sans-pro-3.046_1
starship-1.20.1_1
tailscale-1.72.1_1
thunderbird-115.12.2_1
tilda-1.5.4_1
tint2-17.0.2_1
tlp-1.6.1_1
ttf-material-icons-4.0.0_2
ttf-opensans-3.001_1
ttf-ubuntu-font-family-0.83_3
unicode-emoji-14.0_1
unzip-6.0_15
virt-manager-4.1.0_3
void-repo-multilib-6_4
void-repo-multilib-nonfree-6_4
void-repo-nonfree-9_6
vscode-1.91.1_1
wget-1.24.5_1
wireplumber-0.5.5_1
xauth-1.1.3_1
xdotool-3.20211022.1_1
xorg-server-21.1.13_1
xorg-server-common-21.1.13_1
xournalpp-1.2.3_1
xwallpaper-0.7.4_1
yewtube-2.10.5_2
yt-dlp-2024.08.06_1
zip-3.0_6
zoxide
zsh-5.9_3
zsh-autosuggestions-0.7.0_1
zsh-completions-0.35.0_2

CRON for get_iplayer

*/15 * * * * /home/karmst/scripts/iPlayer/bbc_update.sh >/dev/null 2>&1