runit: traer stages de define-alpine
This commit is contained in:
parent
51b29b7d3d
commit
2e1d79886c
4 changed files with 90 additions and 0 deletions
|
@ -53,6 +53,12 @@ export class Runit {
|
|||
await this.getScript("05-misc.sh")
|
||||
);
|
||||
|
||||
for (let stage = 1; stage <= 3; stage++)
|
||||
await alpine.writeExecutable(
|
||||
"/etc/runit/" + stage,
|
||||
await this.getScript("" + stage)
|
||||
);
|
||||
|
||||
// https://wiki.gentoo.org/wiki/Runit#Reboot_and_shutdown
|
||||
await alpine.sudoWriteExecutable(
|
||||
"/usr/local/sbin/rpoweroff",
|
||||
|
|
22
runit/scripts/1
Normal file
22
runit/scripts/1
Normal file
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
|
||||
PATH=/bin:/usr/bin:/usr/sbin:/sbin
|
||||
|
||||
. /etc/runit/functions
|
||||
|
||||
msg "Welcome to Nulo!"
|
||||
|
||||
[ -r /etc/rc.conf ] && . /etc/rc.conf
|
||||
|
||||
# Start core services: one-time system tasks.
|
||||
detect_virt
|
||||
for f in /etc/runit/core-services/*.sh; do
|
||||
[ -r $f ] && . $f
|
||||
done
|
||||
|
||||
# create files for controlling runit
|
||||
mkdir -p /run/runit
|
||||
install -m000 /dev/null /run/runit/stopit
|
||||
install -m000 /dev/null /run/runit/reboot
|
||||
|
||||
msg "Initialization complete, running stage 2..."
|
19
runit/scripts/2
Normal file
19
runit/scripts/2
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/sh
|
||||
PATH=/bin:/usr/bin:/usr/sbin:/sbin
|
||||
|
||||
runlevel=default
|
||||
for arg in $(cat /proc/cmdline); do
|
||||
if [ -d /etc/runit/runsvdir/"$arg" ]; then
|
||||
echo "Runlevel detected: '$arg' (via kernel cmdline)"
|
||||
runlevel="$arg"
|
||||
fi
|
||||
done
|
||||
|
||||
[ -x /etc/rc.local ] && /etc/rc.local
|
||||
|
||||
runsvchdir "${runlevel}"
|
||||
mkdir -p /run/runit/runsvdir
|
||||
ln -s /etc/runit/runsvdir/current /run/runit/runsvdir/current
|
||||
|
||||
exec env - PATH=$PATH \
|
||||
runsvdir -P /run/runit/runsvdir/current 'log: ................................'
|
43
runit/scripts/3
Normal file
43
runit/scripts/3
Normal file
|
@ -0,0 +1,43 @@
|
|||
#!/bin/sh
|
||||
PATH=/bin:/usr/bin:/usr/sbin:/sbin
|
||||
|
||||
. /etc/runit/functions
|
||||
detect_virt
|
||||
[ -r /etc/rc.conf ] && . /etc/rc.conf
|
||||
|
||||
echo
|
||||
msg "Waiting for services to stop..."
|
||||
sv force-stop /etc/service/*
|
||||
sv exit /etc/service/*
|
||||
|
||||
[ -x /etc/rc.shutdown ] && /etc/rc.shutdown
|
||||
|
||||
if [ -z "$VIRTUALIZATION" -a -n "$HARDWARECLOCK" ]; then
|
||||
hwclock --systohc ${HARDWARECLOCK:+--$(echo $HARDWARECLOCK |tr A-Z a-z)}
|
||||
fi
|
||||
|
||||
halt -w # for wtmp
|
||||
|
||||
if [ -z "$VIRTUALIZATION" ]; then
|
||||
msg "Stopping udev..."
|
||||
udevadm control --exit
|
||||
fi
|
||||
|
||||
if [ -z "$VIRTUALIZATION" ]; then
|
||||
msg "Unmounting filesystems, disabling swap..."
|
||||
swapoff -a
|
||||
umount -r -a -t nosysfs,noproc,nodevtmpfs,notmpfs
|
||||
fi
|
||||
|
||||
sync
|
||||
|
||||
if [ -z "$VIRTUALIZATION" ]; then
|
||||
deactivate_vgs
|
||||
deactivate_crypt
|
||||
if [ -e /run/runit/reboot ] && command -v kexec >/dev/null; then
|
||||
msg "Triggering kexec..."
|
||||
kexec -e 2>/dev/null
|
||||
# not reached when kexec was successful.
|
||||
fi
|
||||
fi
|
||||
|
Loading…
Reference in a new issue