Debian/systemd
< Debian
To get rid of systemd
entirely, the following procedure[1] can be used.
SysV init
To replace with SysV init:
sudo apt-get install sysvinit-core sysvinit-utils sudo cp /usr/share/sysvinit/inittab /etc/inittab
OpenRC
For OpenRC:
TBD
runit
For runit
mkdir /etc/runit /etc/service ln -s /etc/service /service # Standard runit is expecting this. cp -p /usr/share/doc/runit/debian/* /etc/runit/ ln -s /etc/sv/getty-5 /etc/service/ chmod 0755 /etc/runit/*
mkdir -p /etc/sv/sshd/log/
We'll need a log service[3] too:
$ cat /etc/sv/sshd/log/run #!/bin/sh exec chpst -ulog svlogd -tt ./main
Now the actual ssh
service:
$ cat /etc/sv/sshd/run #!/bin/sh exec 2>&1 mkdir /var/run/sshd exec /usr/sbin/sshd -D -e
Note: without /var/run/sshd
, the ssh
server would not start:
$ sudo /usr/sbin/sshd Missing privilege separation directory: /var/run/sshd
Activate the service:
ln -s /etc/sv/sshd /etc/service/
TODO: Reboot is not working yet:
$ reboot Failed to talk to init daemon.
TODO: Although the ssh
service gets started, the login screen console gets stuck:[4]
[...] [ ok ] Starting rpcbind daemon.... [ ok ] Starting NFS common utilities: statd idmapd. [ ok ] Cleaning up temporary files.... [info] Setting console screen modes. [ ok ] Setting up console font and keymap...done. [ ok ] Setting up X socket directories... /tmp/.X11-unix /tmp/.ICE-unix. Usage: /etc/init.d/rmnologin start|stop - runit: leave stage: /etc/runit/1 - runit: enter stage: /etc/runit/2
Cleanup
Reboot, and if all goes well - remove systemd
leftovers:
apt-get remove --purge --auto-remove systemd
Prevent systemd
to get installed in the future:
echo -e 'Package: systemd\nPin: origin ""\nPin-Priority: -1' > /etc/apt/preferences.d/systemd echo -e '\n\nPackage: *systemd*\nPin: origin ""\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd