slew/init/rc.init

36 lines
908 B
Bash
Executable File

#!/bin/rc
. /etc/slew/lib/cfg.rc
fn init {
mkdir -p /run/slew
~ $quiet 1 && con=consoles
s6-rc-init -c /etc/slew/db/compiled /run/service || exit 2
echo '* init: starting services...'
if (s6-rc -v2 -t20000 -u change default $con) {
echo '* init: services started'
} else if ([ -f /run/slew/reboot ]) {
echo '* init: reboot required; triggering reboot...'
exit 1
} else {
echo '! init: some service(s) failed to start'
s6-rc -n 100 -u change default $con
~ $quiet 1 || sleep 2
}
~ $quiet 1 || s6-rc -u change consoles
[ -d /var/log/init ] || install -d -o _catchlog -g adm -m 0750 /var/log/init
s6-svc -a /run/service/s6-svscan.log
exit 0
}
if (~ $quiet 1) { @ init } else { init >[2=1] | tee /dev/console }
switch ($status(1)) {
case 1
exec kill -TERM 1
case 2
exec > /dev/console >[2=1]
echo '! init: s6-rc-init failure; enabling rescue shell...'
exec sh -i < /dev/console
}