From e684290f77f9dacd1ecc9553d468dbb104cd6fe4 Mon Sep 17 00:00:00 2001 From: jim-p Date: Tue, 28 Feb 2012 12:14:23 -0500 Subject: Fixup the kernel upgrade code a bit to be safer, and assume SMP in the default case, and also warn if there was a problem. Should fix #1427 --- tmp/post_upgrade_command | 78 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 22 deletions(-) (limited to 'tmp') diff --git a/tmp/post_upgrade_command b/tmp/post_upgrade_command index 393cd68..6498d95 100755 --- a/tmp/post_upgrade_command +++ b/tmp/post_upgrade_command @@ -3,29 +3,63 @@ /etc/rc.conf_mount_rw PFSENSETYPE=`cat /etc/platform` -KERNELTYPE=`cat /boot/kernel/pfsense_kernel.txt` +OLDKERNEL=`cat /boot/kernel/pfsense_kernel.txt` -if [ $KERNELTYPE = "wrap" ]; then - if [ -f /kernels/kernel_wrap.gz ]; then - tar xzpf /kernels/kernel_wrap.gz --exclude loader.conf -C /boot/ - cp /etc/ttys_wrap /etc/ttys - fi -fi -if [ $KERNELTYPE = "Developers" ]; then - if [ -f /kernels/kernel_Dev.gz ]; then - tar xzpf /kernels/kernel_Dev.gz --exclude loader.conf -C /boot/ - cp /boot/kernel/kernel.gz - fi -fi -if [ $KERNELTYPE = "SMP" ]; then - if [ -f /kernels/kernel_SMP.gz ]; then - tar xzpf /kernels/kernel_SMP.gz --exclude loader.conf -C /boot/ - fi -fi -if [ $KERNELTYPE = "UP" ]; then - if [ -f /kernels/kernel_SMP.gz ]; then - tar xzpf /kernels/kernel_uniprocessor.gz --exclude loader.conf -C /boot/ - fi +# Massage the existing kernel into one that actually exists. +# Leaving old entries so we can bring back other kernels later if desired. +case "$OLDKERNEL" in + "wrap") + KERNELTYPE=wrap + ;; + "Developers") + KERNELTYPE=SMP + ;; + "UP") + KERNELTYPE=SMP + ;; + "SMP") + KERNELTYPE=SMP + ;; + *) + KERNELTYPE=SMP + ;; +esac + +# Overwrite the old kernel type with what we're using now to reflect what is about to be written out. +echo ${KERNELTYPE} > /boot/kernel/pfsense_kernel.txt +HAVE_KERNEL=false + +case "$KERNELTYPE" in + "wrap") + if [ -f /kernels/kernel_wrap.gz ]; then + HAVE_KERNEL=true + tar xzpf /kernels/kernel_wrap.gz --exclude loader.conf -C /boot/ + cp /etc/ttys_wrap /etc/ttys + fi + ;; + "Developers") + if [ -f /kernels/kernel_Dev.gz ]; then + HAVE_KERNEL=true + tar xzpf /kernels/kernel_Dev.gz --exclude loader.conf -C /boot/ + fi + ;; + "UP") + if [ -f /kernels/kernel_UP.gz ]; then + HAVE_KERNEL=true + tar xzpf /kernels/kernel_uniprocessor.gz --exclude loader.conf -C /boot/ + fi + ;; + "SMP") + if [ -f /kernels/kernel_SMP.gz ]; then + HAVE_KERNEL=true + tar xzpf /kernels/kernel_SMP.gz --exclude loader.conf -C /boot/ + fi + ;; +esac + +if [ ${HAVE_KERNEL} = "false" ]; then + echo "ERROR: Unable to locate a kernel upgrade file!" + sleep 5 fi if [ $PFSENSETYPE = "pfSense" ] || [ $PFSENSETYPE = "nanobsd" ]; then -- cgit v1.1