Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Services

d77void Immutable uses runit, like Void Linux. There is no systemd: systemctl and journalctl do not exist. The general runit documentation in the Void Linux Handbook applies; this page covers what is specific here.

Where services are

PathWhat it is
/etc/sv/<name>a service’s definition (its run script)
/var/service/<name>a link: the service is enabled and runit keeps it running

/var/service leads to /etc/runit/runsvdir/default, so enabling or disabling a service is a change to /etc, and is kept across restarts and updates like any other. See What is kept.

Only services whose programs are part of the image can be used: there is no package manager to add new ones. Programs in a Distrobox container are not system services.

Everyday commands

The state of every enabled service:

sudo sv status /var/service/*

Restart, stop or start one (until the next boot):

sudo sv restart NetworkManager
sudo sv down bluetoothd
sudo sv up bluetoothd

Enable a service that is in the image but not enabled, permanently:

sudo ln -s /etc/sv/<name> /var/service/

Disable one permanently:

sudo rm /var/service/<name>

A service the image enables and you disabled shows up in d77-etc-diff as deleted runit/runsvdir/default/<name>. To enable it again, create the link as above.

Services enabled by default

ServiceWhat it does
d77-updatelooks for, downloads and prepares new versions; see A/B slots and updates
d77-boot-okconfirms a new version after it started; do not disable
d77-firstboot-flatpakinstalls Firefox from Flathub on the first boot with a network connection, then stays idle
sddmthe login screen
dbus, udevd, polkitdsystem plumbing; do not disable
NetworkManagernetwork and Wi-Fi
bluetoothdBluetooth
cupsd, cups-browsedprinting
chronydkeeps the clock right
power-profiles-daemonpower profiles in Plasma
zramencompressed swap in memory (there is no swap partition)
acpi-gpe-guarddetects and silences a runaway ACPI interrupt (a firmware bug on some laptops); does nothing on a healthy machine
agetty-tty1 … agetty-tty6the text consoles (Ctrl+Alt+F1 … F6)

To stop the system from updating, do not disable d77-update: set POLICY=disabled (or check) as described in Update settings.

Logs

d77void’s own services keep their logs in /var/log/<name>/current, with times in UTC:

sudo tail -n 20 /var/log/d77-update/current
sudo tail -n 20 /var/log/d77-boot-ok/current
sudo tail -n 20 /var/log/d77-firstboot-flatpak/current

Kernel messages:

sudo dmesg | tail -n 50

Your own service

A service of your own is a folder in /etc/sv with an executable run script that starts the program in the foreground. It is kept like the rest of /etc. Its program must be somewhere that survives a restart (your home, or the script itself), never /opt or /usr.

sudo mkdir /etc/sv/my-service
sudo nano /etc/sv/my-service/run
sudo chmod +x /etc/sv/my-service/run
sudo ln -s /etc/sv/my-service /var/service/

A minimal run script:

#!/bin/sh
exec 2>&1
exec /home/<you>/bin/my-program