summaryrefslogtreecommitdiffstats
path: root/tmp/post_upgrade_command
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2012-11-20 09:41:01 -0500
committerjim-p <jimp@pfsense.org>2012-11-20 09:42:14 -0500
commitf16a622038244e1324f0cc2952d8d1f3981296df (patch)
tree702616ac334f53e31d061c287be4e26cd61ac420 /tmp/post_upgrade_command
parent6acfbc6f4942c0eedb60678e20fa0abfeb7d21e3 (diff)
downloadpfsense-f16a622038244e1324f0cc2952d8d1f3981296df.zip
pfsense-f16a622038244e1324f0cc2952d8d1f3981296df.tar.gz
Fixup kernel detection during upgrade process to ensure someone can't end up with a kernel that doesn't exist any more.
Diffstat (limited to 'tmp/post_upgrade_command')
-rwxr-xr-xtmp/post_upgrade_command116
1 files changed, 81 insertions, 35 deletions
diff --git a/tmp/post_upgrade_command b/tmp/post_upgrade_command
index b497ccd..634afb0 100755
--- a/tmp/post_upgrade_command
+++ b/tmp/post_upgrade_command
@@ -3,34 +3,78 @@
/etc/rc.conf_mount_rw
PFSENSETYPE=`cat /etc/platform`
-KERNELTYPE=`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
+# check in two places for the old kernel type, since it could have been moved elsewhere in the upgrade process.
+if [ -f /boot/kernel/pfsense_kernel.txt ]; then
+ OLDKERNEL=`cat /boot/kernel/pfsense_kernel.txt`
+else
+ OLDKERNEL=`cat /tmp/pfsense_kernel.txt`
fi
-if [ $KERNELTYPE = "wrap_vga" ]; then
- if [ -f /kernels/kernel_wrap_vga.gz ]; then
- tar xzpf /kernels/kernel_wrap_vga.gz --exclude loader.conf -C /boot/
- 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
+ ;;
+ "wrap_vga")
+ KERNELTYPE=wrap_vga
+ ;;
+ "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
+ ;;
+ "wrap_vga")
+ if [ -f /kernels/kernel_wrap_vga.gz ]; then
+ HAVE_KERNEL=true
+ tar xzpf /kernels/kernel_wrap_vga.gz --exclude loader.conf -C /boot/
+ 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_uniprocessor.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
@@ -38,17 +82,19 @@ if [ $PFSENSETYPE = "pfSense" ] || [ $PFSENSETYPE = "nanobsd" ]; then
fi
# Detect interactive logins and display the shell
-echo "if [ \`env | grep SSH_TTY | wc -l\` -gt 0 ] || [ \`env | grep cons25 | wc -l\` -gt 0 ]; then" > $CVS_CO_DIR/root/.shrc
-echo " /etc/rc.initial" >> $CVS_CO_DIR/root/.shrc
-echo " exit" >> $CVS_CO_DIR/root/.shrc
-echo "fi" >> $CVS_CO_DIR/root/.shrc
-echo "if [ \`env | grep SSH_TTY | wc -l\` -gt 0 ] || [ \`env | grep cons25 | wc -l\` -gt 0 ]; then" >> $CVS_CO_DIR/root/.profile
-echo " /etc/rc.initial" >> $CVS_CO_DIR/root/.profile
-echo " exit" >> $CVS_CO_DIR/root/.profile
-echo "fi" >> $CVS_CO_DIR/root/.profile
+detect_command='[ -n "$SSH_TTY" -o "$TERM" = "cons25" ] && exec /etc/rc.initial'
+echo "$detect_command" > $CVS_CO_DIR/root/.shrc
+echo "$detect_command" >> $CVS_CO_DIR/root/.profile
# Now turn on or off serial console as needed
-/tmp/post_upgrade_command.php
+echo "Checking for /tmp/$1/tmp/post_upgrade_command.php... " >> /conf/upgrade_log.txt
+if [ -x /tmp/$1/tmp/post_upgrade_command.php ]; then
+ echo "Running /tmp/$1/tmp/post_upgrade_command.php $1" >> /conf/upgrade_log.txt
+ /tmp/$1/tmp/post_upgrade_command.php $1 >> /conf/upgrade_log.txt 2>&1
+elif [ -f /tmp/post_upgrade_command.php ]; then
+ echo "Running /tmp/post_upgrade_command.php $1" >> /conf/upgrade_log.txt
+ /tmp/post_upgrade_command.php $1
+fi
# Remove any previous MD5 sum files
rm -f /root/*.md5
OpenPOWER on IntegriCloud