36 lines
908 B
Bash
Executable File
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
|
|
}
|
|
|