summaryrefslogtreecommitdiff
path: root/extra/kexec-tools/kexec
diff options
context:
space:
mode:
Diffstat (limited to 'extra/kexec-tools/kexec')
-rwxr-xr-xextra/kexec-tools/kexec45
1 files changed, 45 insertions, 0 deletions
diff --git a/extra/kexec-tools/kexec b/extra/kexec-tools/kexec
new file mode 100755
index 000000000..bef5b5ef3
--- /dev/null
+++ b/extra/kexec-tools/kexec
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+[ -f /etc/conf.d/kexec ] && . /etc/conf.d/kexec
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Enabled loading kernel for Kexec into running kernel on reboot"
+ add_daemon kexec
+ stat_done
+ ;;
+
+ stop|load)
+ if [ "$RUNLEVEL" = "6" -o "$1" = "load" ]; then
+ stat_busy "Loading kernel for Kexec into running kernel"
+ [ -f "$KPATH" ] || stat_fail
+ [ -f "$INITRD" ] && _INITRD="--initrd=$INITRD"
+ /sbin/kexec -l $KPATH --append="root=$ROOTPART $KPARAM" $_INITRD > /dev/null 2>&1
+ else
+ stat_busy "Skipping loading kernel for Kexec into running kernel"
+ fi
+ if [ $? -eq 0 ] ; then
+ rm_daemon kexec
+ stat_done
+ else
+ stat_fail
+ fi
+ ;;
+
+ unload)
+ stat_busy "Unloading Kexec kernel from running kernel"
+ /sbin/kexec -u
+ if [ $? -eq 0 ] ; then
+ stat_done
+ else
+ stat_fail
+ fi
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|load|unload}"
+esac
+exit 0