summaryrefslogtreecommitdiff
path: root/system/s6-linux-init/reboot.sh
diff options
context:
space:
mode:
Diffstat (limited to 'system/s6-linux-init/reboot.sh')
-rw-r--r--system/s6-linux-init/reboot.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/system/s6-linux-init/reboot.sh b/system/s6-linux-init/reboot.sh
new file mode 100644
index 000000000..d0d87aeb6
--- /dev/null
+++ b/system/s6-linux-init/reboot.sh
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+
+# This script performs a "poor man's reboot" when the
+# init infrastructures are not there to do a proper one.
+# This is the case when the user *just* switched between
+# sysvinit and s6-linux-init, and needs to shut down the
+# old system but the shutdown binaries are the ones from
+# the new system.
+#
+# Always launch it from a console tty (tty1, ... tty6),
+# never from a network terminal or an xterm.
+
+trap "" INT HUP TERM
+mkdir -p -m 0755 /etc/runlevels/empty2
+/sbin/openrc empty2
+rmdir /etc/runlevels/empty2
+sync
+/etc/init.d/killprocs start
+/etc/init.d/savecache start
+/etc/init.d/mount-ro start
+/sbin/reboot -f