Update 23/05/2024: I am not currently using Dinit as a system init on Void Linux and have not tested recent verions of dinit in this configuration. I recommend looking at Chimera Linux and Artix Linux for up-to-date reference points. Dinit is also now available in the void repository, though not configured to run as the system init.
This repository contains files I used to get Dinit working as system init on Void Linux. These have been put together mainly from the Void Runit scripts, with a lot of help also from the Artix Linux Dinit services and scripts and the example services provided with Dinit. Effectively, all I have done is combine the scripts and service templates available from the these sources with just a few very small modifications - all the real work has been carried out by the developers on the aforementioned projects and all credit for any of this even working at all goes to them.
/etc/*
are service files to be placed in to /etc/
. I have attempted to maintain some compatibility with the /etc/rc.*
files supplied with Void, and I think that the existing files provided by Void should work without issue (if, for example, Runit is not uninstalled from the system these /etc/rc.*
files will still exist). All services I deemed required for boot are started via reference in the /etc/dinit.d/boot
service or via dependencies of these (note: not entirely true, some of the services being started could techincally be disabled). There are also various other service files that I have tested (but far from an exhaustive list) that are not symlinked/activated by default in this repository. In /etc/dinit.d/config
there are config files for the late-filesystems, network check and wpa_supplicant services.
/user/dinit.d/*
are user service file examples that I am using to start pipewire, pipewire-pulse and wireplumber and need to be placed in $HOME/.config/dinitd.d/
to be used. I am starting a user instance of Dinit from my .bash_profile
.
/srcpkgs/dinit/template
is the template file I used for compiling Dinit using xbps-src
. This has built without issue for me on glibc and musl x86_x64 systems; I have not tried for other architectures. After installing Dinit, the system shutdown executables will be replaced so this is probably best carried out from a chroot
(or at least making copies of the originals). Instructions for setting Dinit as the system init on Linux are provided at the Dinit repository.
This was purely for fun and to teach myself more about initialising a Linux system; I do not recommend using anything from this repository on anything other than a test system. I am not affiliated with any of the projects mentioned, none of this repository is supported by those projects, and I have no professional background in programming (just read a few man
pages). You have been warned...
The Void Runit scripts that this repository is primarily based on (and would not be possible without) are released in the public domain; to the extent possible under law, I waive all copyright to this derivative work and dedicate it to the public domain.