summaryrefslogtreecommitdiffstats
path: root/tmp
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2012-02-28 12:14:23 -0500
committerjim-p <jimp@pfsense.org>2012-02-28 12:14:23 -0500
commite684290f77f9dacd1ecc9553d468dbb104cd6fe4 (patch)
tree12005805a50f67b3aca846f0e9bb4009def42a5a /tmp
parent3e139f90ad11100f24772d5d4ae1427469a8c7aa (diff)
downloadpfsense-e684290f77f9dacd1ecc9553d468dbb104cd6fe4.zip
pfsense-e684290f77f9dacd1ecc9553d468dbb104cd6fe4.tar.gz
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
Diffstat (limited to 'tmp')
-rwxr-xr-xtmp/post_upgrade_command78
1 files changed, 56 insertions, 22 deletions
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
OpenPOWER on IntegriCloud