Package: runit-init
Version: 2.1.2-13
Severity: wishlist
-- System Information:
Debian Release: buster/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.15.12-van (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8),
LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)
Versions of packages runit-init depends on:
ii getty-run 2.1.2-13
ii initscripts 2.88dsf-59.10
ii libc6 2.27-3
ii runit 2.1.2-13
ii runit-helper 2.7.2
ii sysv-rc 2.88dsf-59.10
runit-init recommends no packages.
runit-init suggests no packages.
-- no debconf information
-- debsums errors found:
debsums: changed file /sbin/shutdown (from runit-init package)
Hi,
I would like to share a setup that uses runit's code for reboot/shutdown: this
way shutdown/reboot's external
code is used only when switching init.
Also, the /etc/init.d/rc script is no longer used for the shutdown sequence.
I'm currently using this on my pc and i have tested the systemd-->runit-init
sitch on Virtualbox and works for me.
Sharing in case you want to use it or just take some ideas from it.
mv /sbin/shutdown /sbin/shutdown-sysv
rm /sbin/reboot
rm /sbin/halt
/etc/runit/3
--------------------------------------------------
#!/bin/sh
exec 2>&1
PATH=/sbin:/usr/sbin:/bin:/usr/bin
# LAST=0
# While test -x is more natural, it does not consider file with
# executable bit set on 'noexec' filesystem as executable, and /run
# often is mounted as 'noexec'.
# [ $(stat -c %a /run/runit.reboot) = 100 ] && LAST=6
echo 'Waiting for services to stop...'
sv force-stop /etc/service/*
sv exit /etc/service/*
# Stop sysv services, reverse order
run-parts --reverse --regex=S --arg=stop -- /etc/rc2.d
# Print a message, not really essential since runit will print
# a similar message when exiting stage 3
if [ -e /run/runit.reboot ]; then
echo 'Shutdown: reboot...'
else
echo 'Shutdown: poweroff...'
fi
# perform shutdown tasks using initscripts
# skip reboot/halt scripts so that runit uses it's own code
for script in /etc/rc0.d/K* ; do
echo $script | grep -vq halt && $script stop
done
# echo 'Shutdown...'
# /etc/init.d/rc $LAST
---------------------------------------------
cat /sbin/shutdown
#!/bin/sh
if [ -e /run/runit.stopit ]; then
init 0
else
exec /sbin/shutdown-sysv
fi
---------------------------
cat /sbin/reboot
#!/bin/sh
if [ -e /run/runit.stopit ]; then
touch /run/runit.reboot && init 6
else
if [ "$2" = -f ]; then
exec /sbin/shutdown-sysv -f
else
exec /sbin/shutdown-sysv
fi
fi
-----------------------------
cat /sbin/halt
#!/bin/sh
# /etc/init.d/unmountnfs.sh is doing "halt -w" before unmounting.
# shutdown.c only supports -f option.
# halt -w makes runit print a warning ("signals only work in stage 2")
# then runit perform a poweroff even if it was correctly instructed to reboot
if [ -e /run/runit.stopit ] && [ "$1" = -w ] ; then
echo 'halt: -w option not yet supported'
else
exec /sbin/shutdown-sysv
fi
---------------------------
Thanks
Lorenzo