#!/bin/sh /etc/rc.conf_mount_rw # Record the previous version PRIOR_VERSION=`uname -r | cut -d'.' -f1` echo $PRIOR_VERSION > /tmp/pre_upgrade_version # De-activate sync on root filesystem. See ticket #4523 # Back up original fstab /bin/cp /etc/fstab /etc/fstab.orig # De-activate sync on the root slice only. This will not match NanoBSD since it already has sync,noatime /usr/bin/sed -i '' 's/^\(\/.*[[:space:]]*\/[[:space:]]*ufs[[:space:]]*\)rw,sync\([[:space:]]*[[:digit:]][[:space:]]*[[:digit:]]\)$/\1rw\2/' /etc/fstab # Cleanup PBIs if which pbi_info >/dev/null 2>&1; then for pbi in $(pbi_info); do echo ">>> Removing PBI ${pbi} and all symlinks" pbi_prefix=$(pbi_info ${pbi} | awk '$1 == "Prefix:" { print $2 }') for subdir in bin sbin; do if [ ! -d "${pbi_prefix}/${subdir}" ]; then continue fi for pbiopt in ${pbi_prefix}/${subdir}/*.pbiopt; do link_name=$(awk '$1 == "TARGET:" { print $2 }' ${pbiopt}) if [ -z "${link_name}" ]; then continue fi if [ -L /usr/local/${link_name} ]; then rm -f /usr/local/${link_name} fi done done pbi_delete ${pbi} done # Cleanup remaining symbolic links find / -type l -lname '/usr/pbi/*' -delete fi # Hack to workaround ticket #3749 if [ ${PRIOR_VERSION} -le 8 ] && grep -q 'sh /etc/rc.reboot' /etc/rc.firmware; then PROC=$(ps axwww | grep '/etc/rc.firmware *pfSenseupgrade') PID='' IMG='' if [ -n "${PROC}" ]; then PID=$(echo "${PROC}" | awk '{print $1}') IMG=$(echo "${PROC}" | sed 's,^.*pfSenseupgrade *,,') fi if [ -n "${PID}" -a -n "${IMG}" -a -f "${IMG}" ]; then cp -fp /bin/sh /tmp/sh.old kill ${PID} >/dev/null 2>&1 kill -9 ${PID} >/dev/null 2>&1 sed -i '' -e 's,sh /,/tmp/sh.old /,' \ -e 's,/usr/sbin/mtree,/tmp/mtree.old,' /etc/rc.firmware # To avoid restarting rc.firmware twice because of #4328 sed -i '' -e '/^restore_chflags()/, /^}/ s/mtree *-PU/mtree -P/' /etc/rc.firmware /etc/rc.firmware pfSenseupgrade "${IMG}" exit fi fi # One more hack to workaround #4328 if grep -q 'mtree *-PU' /etc/rc.firmware; then PROC=$(ps axwww | grep '/etc/rc.firmware *pfSenseupgrade') PID='' IMG='' if [ -n "${PROC}" ]; then PID=$(echo "${PROC}" | awk '{print $1}') IMG=$(echo "${PROC}" | sed 's,^.*pfSenseupgrade *,,') fi if [ -n "${PID}" -a -n "${IMG}" -a -f "${IMG}" ]; then kill ${PID} >/dev/null 2>&1 kill -9 ${PID} >/dev/null 2>&1 sed -i '' -e '/^restore_chflags()/, /^}/ s/mtree *-PU/mtree -P/' /etc/rc.firmware /etc/rc.firmware pfSenseupgrade "${IMG}" exit fi fi # Make sure /boot files are not protected with schg chflags -R noschg /boot >/dev/null 2>&1 rm /boot/kernel/*