:: [DNG] OpenRC and Runit without SysV…
Top Page
Delete this message
Reply to this message
Author: alecfeldman
To: dng
Subject: [DNG] OpenRC and Runit without SysVinit packages
This is a "remail" of what I sent Daniel about a month ago for others on the mailing list to see with a few changes and added details.

First of all, I want to thank the developers for the efforts to continue debian without "systemd creep". I've experimented with the distribution on and off, but there's one big turnoff for me currently that I don't think would take an enormous amount of effort to change: sysvinit. While it does work perfectly fine on its own, I prefer openrc, and runit even more so. While they do work in Devuan, they require sysvinit as a "backend". In Devuan ceres and up, openrc 0.25 provides openrc-init and no longer relies on sysvinit-core. In fact, it can be removed entirely (I have an addiction to removing everything I don't want to use). However, openrc-init boots openrc directly and skips the /etc/inittab file, so it won't start the gettys. All that would be needed to fix this is a separate getty service package. Runit is a different story, since its initialization and shutdown stages rely heavily on sysv-rc scripts (/etc/rc*.d). These scripts can be completely avoided by using an implementation similar to how Void Linux does it. In fact, I did some tweaking with https://github.com/cloux/aws-devuan (https://github.com/cloux/aws-devuan) and https://gitea.artixlinux.org/artix/runit-rc (https://gitea.artixlinux.org/artix/runit-rc). I was able to get a fully booting devuan install without any initscripts. However, these aren't officially supported in Devuan, and should thus not be considered permanent solutions. With that in mind, what would be a permanent solution? I proposed two:

1. Split the runit package into separate packages with alternate stage files.

2. Provide a configuration file for how runit should act. For instance, if openrc or sysvinit is installed, runit can depend on /etc/init.d and /etc/rc*.d scripts for booting.

Daniel in response proposed:

For your runit proposal we could probably modify or provide a runit source that builds binaries that have the needed changes for each init system it runs alongside - ie runit-sysvinit, runit-openrc, runit-init etc. We can build these from the same source package and just provide the alternate stage files. This makes it also extensible to other init systems down the track.