This page is copied from immutable-docs on GitHub, where it is written and corrected; it is also on the documentation site. Changes made here are overwritten.
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.
| Path | What 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.
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.
| Service | What it does |
|---|---|
d77-update |
looks for, downloads and prepares new versions; see A/B slots and updates |
d77-boot-ok |
confirms a new version after it started; do not disable |
d77-firstboot-flatpak |
installs Firefox from Flathub on the first boot with a network connection, then stays idle |
sddm |
the login screen |
dbus, udevd, polkitd |
system plumbing; do not disable |
NetworkManager |
network and Wi-Fi |
bluetoothd |
Bluetooth |
cupsd, cups-browsed |
printing |
chronyd |
keeps the clock right |
power-profiles-daemon |
power profiles in Plasma |
zramen |
compressed swap in memory (there is no swap partition) |
acpi-gpe-guard |
detects and silences a runaway ACPI interrupt (a firmware bug on some laptops); does nothing on a healthy machine |
agetty-tty1 … agetty-tty6 |
the 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.
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
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
Wiki: Immutable - A-B slots and updates
Wiki: Immutable - What is kept
Wiki: Immutable Docs