diff options
Diffstat (limited to 'packages/altboot/files/altboot-menu/Advanced/70-setKernel')
-rw-r--r-- | packages/altboot/files/altboot-menu/Advanced/70-setKernel | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/packages/altboot/files/altboot-menu/Advanced/70-setKernel b/packages/altboot/files/altboot-menu/Advanced/70-setKernel new file mode 100644 index 0000000000..3479637ba1 --- /dev/null +++ b/packages/altboot/files/altboot-menu/Advanced/70-setKernel @@ -0,0 +1,65 @@ +# !/bin/sh +M_TITLE="Choose kernel for next boot" + + + +# 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 `ls -1 $KEXEC_KERNEL_DIR | grep -v "kexec.cfg" | wc -l | tr -d " "` -gt 1 + then + echo -e "\nSelect the kernel for use of the next boot:\n" + + cnt=1 ; reset_pref "kexec_klist" + for k in `ls -1 $KEXEC_KERNEL_DIR/zImage* | grep -v "kexec.cfg" ` + do + echo -e "\t[$cnt] $k" + set_pref "kexec_klist" "$cnt" "$k" + + let cnt=$cnt+1 + done + + echo "" + + while true + do + echo -n "Select a kernel: " + read junk + + #echo_pref kexec_klist + + get_pref "kexec_klist" "$junk" KEXEC_SELECTED_KERNEL && break + + done + + echo "Using [$KEXEC_SELECTED_KERNEL]" + fi + + if ! test -e "$KEXEC_SELECTED_KERNEL.kexec.cfg" + then + echo -e "\nWARNING: This kernel has not been configured." + echo -e "It will only boot correctly if CMDLINE is compiled in.\n" + fi + + export USE_KEXEC_ON_NEXT_BOOT=yes + export KEXEC_SELECTED_KERNEL + show_menu +} + + + +case "$1" in +title) echo "$M_TITLE";; +run) run_module;; +esac + |