summaryrefslogtreecommitdiffstats
path: root/core/modules/kexec-reboot/data/opt/openslx/scripts/systemd-kexec_load
diff options
context:
space:
mode:
authorJonathan Bauer2018-02-15 13:20:33 +0100
committerJonathan Bauer2018-02-15 13:20:33 +0100
commit510ae767a5abe5812ceab620ed6c5748cecaf36b (patch)
treef22caa34cb605f1116ca6a60a1b6e07d19d47c6c /core/modules/kexec-reboot/data/opt/openslx/scripts/systemd-kexec_load
parent[run-virt] relax /tmp mount detection regex (diff)
downloadmltk-510ae767a5abe5812ceab620ed6c5748cecaf36b.tar.gz
mltk-510ae767a5abe5812ceab620ed6c5748cecaf36b.tar.xz
mltk-510ae767a5abe5812ceab620ed6c5748cecaf36b.zip
[kexec-reboot] fast reboot via kexec
bound to ctrl-alt-del on ttys TODO enable Xorg support
Diffstat (limited to 'core/modules/kexec-reboot/data/opt/openslx/scripts/systemd-kexec_load')
-rwxr-xr-xcore/modules/kexec-reboot/data/opt/openslx/scripts/systemd-kexec_load40
1 files changed, 40 insertions, 0 deletions
diff --git a/core/modules/kexec-reboot/data/opt/openslx/scripts/systemd-kexec_load b/core/modules/kexec-reboot/data/opt/openslx/scripts/systemd-kexec_load
new file mode 100755
index 00000000..ca092b3e
--- /dev/null
+++ b/core/modules/kexec-reboot/data/opt/openslx/scripts/systemd-kexec_load
@@ -0,0 +1,40 @@
+#!/bin/ash
+
+kexec=$(which kexec 2>/dev/null)
+if [ -z "$kexec" ]; then
+ echo "Failed to find kexec binary in PATH. Exiting."
+ exit 1
+fi
+
+# download_retry <url> <path>
+download_retry() {
+ [ $# -ne 2 ] && return 1
+ for TIMEOUT in 1 1 2 3 END; do
+ [ "x$TIMEOUT" = "xEND" ] && break
+ if wget -T 2 -O "$2" "$1"; then
+ return 0
+ break
+ fi
+ sleep $TIMEOUT
+ done
+ return 1
+}
+
+kexec_load() {
+ . /opt/openslx/config
+ local DIR="$(mktemp -d)"
+
+ for FILE in kernel initramfs-stage31; do
+ if ! download_retry "http://${SLX_KCL_SERVERS}/${SLX_BASE_PATH}/${FILE}" "${DIR}/${FILE}" ; then
+ echo "Failed to download ${FILE}."
+ exit 1
+ fi
+ done
+
+ if ! kexec -l "${DIR}/kernel" --initrd "${DIR}/initramfs-stage31" --reuse-cmdline; then
+ echo "Failed to load kernel/initrd from ${DIR}"
+ exit 1
+ fi
+}
+
+kexec_load