summaryrefslogtreecommitdiff
path: root/packages/altboot/files
diff options
context:
space:
mode:
Diffstat (limited to 'packages/altboot/files')
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/35-kexec62
1 files changed, 62 insertions, 0 deletions
diff --git a/packages/altboot/files/altboot-menu/Advanced/35-kexec b/packages/altboot/files/altboot-menu/Advanced/35-kexec
new file mode 100644
index 0000000000..41b193a379
--- /dev/null
+++ b/packages/altboot/files/altboot-menu/Advanced/35-kexec
@@ -0,0 +1,62 @@
+# !/bin/sh
+M_TITLE="init=/bin/sh"
+
+exit 0
+
+# Only kernel 2.6 offers kexec support
+uname -r | grep -q "^2.6" || exit 0
+
+run_module() {
+
+ test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
+
+ test -z "$KEXEC_KERNEL_DIR" && KEXEC_KERNEL_DIR="/boot"
+ test -x "$KEXEC_BIN" || die "kexec-tools not found [$KEXEC_BIN]"
+
+ # Mount /proc, etc
+ init_rootfs
+
+ if test "`find "$KEXEC_KERNEL_DIR" -type f -name "*zImage*" | wc -l | tr -d " "`" -gt 1
+ then
+ echo "Please choose a kernel to boot:"
+ cd "$KEXEC_KERNEL_DIR"
+
+ cnt=1
+ for f in `ls -1 "$KEXEC_KERNEL_DIR"`
+ do
+ echo "[$cnt] $f"
+ let cnt=$cnt+1
+ done
+
+ while true
+ do
+ echo -n "Boot kernel: "
+ read junk
+
+ if test -n "$junk"
+ then
+ cnt=1
+ for f in `ls -1 "$KEXEC_KERNEL_DIR"`
+ do
+ if test "$cnt" = "$junk"
+ then
+ KEXEC_KERNEL="$f"
+ break
+ fi
+ let cnt=$cnt+1
+ done
+ fi
+ done
+
+ echo "kernel dir:[$KEXEC_KERNEL_DIR]"
+ echo "Using kernel: [$KEXEC_KERNEL]"
+
+
+ for
+}
+
+case "$1" in
+title) echo "$M_TITLE";;
+run) run_module;;
+esac
+