summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2009-07-03 18:38:00 -0400
committerScott Ullrich <sullrich@pfsense.org>2009-07-03 18:38:00 -0400
commit73c7a229c1649dd3c17aed367a88872be8a39ee2 (patch)
tree4c0eef6045c82d050e124ce6201e39109cd2fd65 /etc
parentd2692076b34e2cac1f5e3eefaeba59742f71bafe (diff)
downloadpfsense-73c7a229c1649dd3c17aed367a88872be8a39ee2.zip
pfsense-73c7a229c1649dd3c17aed367a88872be8a39ee2.tar.gz
Sync with master
Diffstat (limited to 'etc')
-rwxr-xr-xetc/rc.firmware234
1 files changed, 137 insertions, 97 deletions
diff --git a/etc/rc.firmware b/etc/rc.firmware
index 2a5d5da..d9aee98 100755
--- a/etc/rc.firmware
+++ b/etc/rc.firmware
@@ -6,7 +6,10 @@
# Copyright (C) 2003 Manuel Kasper <mk@neon1.net>.
# All rights reserved.
-exec 3>&2 2>>/cf/firmware_update_misc.log
+# mount /cf
+/etc/rc.conf_mount_rw
+
+exec 3>&2 2>>/conf/firmware_update_misc.log
export ACTION=$1
export IMG=$2
@@ -29,36 +32,36 @@ ENDOFF
}
output_env_to_log() {
- date >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ date >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
- ls -lah /dev/ >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ ls -lah /dev/ >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
- ls -lah $IMG >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ ls -lah $IMG >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
- md5 $IMG >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ md5 $IMG >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
- mount >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ mount >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
- top >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ top >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
}
backup_chflags() {
TOPROCESS="bin lib libexec sbin usr"
for files in $TOPROCESS; do
- /usr/sbin/mtree -Pcp /${files} | bzip2 -9 > /tmp/chflags.dist.${files}.bz2 >> /cf/upgrade_log.txt 2>&1
+ /usr/sbin/mtree -Pcp /${files} | bzip2 -9 > /tmp/chflags.dist.${files}.bz2 >> /conf/upgrade_log.txt 2>&1
done
}
restore_chflags() {
TOPROCESS="bin lib libexec sbin usr"
for files in $TOPROCESS; do
- cd / && /usr/bin/bzcat /tmp/chflags.dist.${files}.bz2 | /usr/sbin/mtree -PU -p /${files} >> /cf/upgrade_log.txt 2>&1
+ cd / && /usr/bin/bzcat /tmp/chflags.dist.${files}.bz2 | /usr/sbin/mtree -PU -p /${files} >> /conf/upgrade_log.txt 2>&1
done
}
@@ -110,11 +113,11 @@ binary_update() {
case $ACTION in
enable)
- touch /cf/upgrade_log.txt
- echo "" > /cf/upgrade_log.txt
+ touch /conf/upgrade_log.txt
+ echo "" > /conf/upgrade_log.txt
;;
auto)
- touch /var/run/firmware.lock
+ touch /var/run/firmwarelock.dirty
backup_chflags
remove_chflags
/etc/rc.firmware_auto
@@ -122,12 +125,9 @@ auto)
;;
pfSenseNanoBSDupgrade)
- # mount /cf
- /etc/rc.conf_mount_rw
-
# Sanity check - bail early if there's no firmware file!
if [ ! -r $IMG ]; then
- echo "2nd parameter has not been passed or file does not exist. Exiting." >> /cf/upgrade_log.txt 2>&1
+ echo "2nd parameter has not been passed or file does not exist. Exiting." >> /conf/upgrade_log.txt 2>&1
/etc/rc.conf_mount_ro
exit 1
fi
@@ -140,20 +140,20 @@ pfSenseNanoBSDupgrade)
exit 1
fi
- touch /var/run/firmware.lock
+ touch /var/run/firmwarelock.dirty
- echo "NanoBSD Firmware upgrade in progress..." >> /cf/upgrade_log.txt 2>&1
+ echo "NanoBSD Firmware upgrade in progress..." >> /conf/upgrade_log.txt 2>&1
echo "NanoBSD Firmware upgrade in progress..." | wall
# backup config
/bin/mkdir -p /tmp/configbak
cp -p /conf/* /tmp/configbak 2>/dev/null
- touch /cf/upgrade_log.txt
- echo "" > /cf/upgrade_log.txt
+ touch /conf/upgrade_log.txt
+ echo "" > /conf/upgrade_log.txt
- echo "Installing $IMG." >> /cf/upgrade_log.txt 2>&1
- echo "Installing $IMG." >> /cf/upgrade_log.txt
+ echo "Installing $IMG." >> /conf/upgrade_log.txt 2>&1
+ echo "Installing $IMG." >> /conf/upgrade_log.txt
# resolve glabel label that we booted from
BOOT_DEVICE=`/sbin/mount | /usr/bin/grep pfsense | /usr/bin/cut -d'/' -f4 | /usr/bin/cut -d' ' -f1`
@@ -181,50 +181,76 @@ pfSenseNanoBSDupgrade)
fi
# Output specifc information that this script is using
- echo "SLICE $SLICE" >> /cf/upgrade_log.txt
- echo "OLDSLICE $OLDSLICE" >> /cf/upgrade_log.txt
- echo "TOFLASH $TOFLASH" >> /cf/upgrade_log.txt
- echo "COMPLETE_PATH $COMPLETE_PATH" >> /cf/upgrade_log.txt
- echo "GLABEL_SLICE $GLABEL_SLICE" >> /cf/upgrade_log.txt
+ echo "SLICE $SLICE" >> /conf/upgrade_log.txt
+ echo "OLDSLICE $OLDSLICE" >> /conf/upgrade_log.txt
+ echo "TOFLASH $TOFLASH" >> /conf/upgrade_log.txt
+ echo "COMPLETE_PATH $COMPLETE_PATH" >> /conf/upgrade_log.txt
+ echo "GLABEL_SLICE $GLABEL_SLICE" >> /conf/upgrade_log.txt
# Output environment information to log file
output_env_to_log
-
+
+ # Grab a before upgrade look at fdisk
+ echo "" >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVE >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs1 >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs1a >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs2 >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs2a >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs3 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs1 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs2 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs3 >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
+
# Log that we are really doing a NanoBSD upgrade
- echo "" >> /cf/upgrade_log.txt
- echo "NanoBSD upgrade starting" >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
+ echo "NanoBSD upgrade starting" >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
# Foot shooting is fun!
- echo "" >> /cf/upgrade_log.txt
- echo "/sbin/sysctl kern.geom.debugflags=16" >> /cf/upgrade_log.txt
- /sbin/sysctl kern.geom.debugflags=16 >> /cf/upgrade_log.txt 2>&1
+ echo "" >> /conf/upgrade_log.txt
+ echo "/sbin/sysctl kern.geom.debugflags=16" >> /conf/upgrade_log.txt
+ /sbin/sysctl kern.geom.debugflags=16 >> /conf/upgrade_log.txt 2>&1
# Remove TOFLASH and get ready for new flash image
- echo "" >> /cf/upgrade_log.txt
- echo "dd if=/dev/zero of=/dev/${TOFLASH} bs=1m count=1" >> /cf/upgrade_log.txt
- dd if=/dev/zero of=/dev/${TOFLASH} bs=1m count=1 >> /cf/upgrade_log.txt 2>&1
+ echo "" >> /conf/upgrade_log.txt
+ echo "dd if=/dev/zero of=/dev/${TOFLASH} bs=1m count=1" >> /conf/upgrade_log.txt
+ dd if=/dev/zero of=/dev/${TOFLASH} bs=1m count=1 >> /conf/upgrade_log.txt 2>&1
# Stream gzipped image to dd and explode image to new area
- echo "" >> /cf/upgrade_log.txt
- echo "/usr/bin/gzcat $IMG | /bin/dd of=/dev/${TOFLASH} bs=16k" >> /cf/upgrade_log.txt
- /usr/bin/gzcat $IMG | /bin/dd of=/dev/${TOFLASH} bs=16k >> /cf/upgrade_log.txt 2>&1
+ echo "" >> /conf/upgrade_log.txt
+ echo "/usr/bin/gzcat $IMG | /bin/dd of=/dev/${TOFLASH} bs=16k" >> /conf/upgrade_log.txt
+ /usr/bin/gzcat $IMG | /bin/dd of=/dev/${TOFLASH} bs=16k >> /conf/upgrade_log.txt 2>&1
+
+ # Grab a after upgrade look at fdisk
+ echo "" >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVE >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs1 >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs1a >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs2 >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs2a >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs3 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs1 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs2 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs3 >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
# Ensure that our new system is sound and bail if it is not and file a notice
- echo "" >> /cf/upgrade_log.txt
- echo "/sbin/fsck_ffs -y /dev/$COMPLETE_PATH" >> /cf/upgrade_log.txt
- /sbin/fsck_ffs -y /dev/$COMPLETE_PATH >> /cf/upgrade_log.txt 2>&1
+ echo "" >> /conf/upgrade_log.txt
+ echo "/sbin/fsck_ffs -y /dev/$COMPLETE_PATH" >> /conf/upgrade_log.txt
+ /sbin/fsck_ffs -y /dev/$COMPLETE_PATH >> /conf/upgrade_log.txt 2>&1
if [ $? != 0 ]; then
file_notice "UpgradeFailure" "{\$g['product_name']} upgrade has failed. Your system has been left in a usable state."
- rm /var/run/firmware.lock
+ rm /var/run/firmwarelock.dirty
/etc/rc.conf_mount_ro
exit 1
fi
# Add back the corresponding glabel
- echo "" >> /cf/upgrade_log.txt
- echo "/sbin/tunefs -L ${GLABEL_SLICE} /dev/$COMPLETE_PATH" >> /cf/upgrade_log.txt
- /sbin/tunefs -L ${GLABEL_SLICE} /dev/$COMPLETE_PATH >> /cf/upgrade_log.txt 2>&1
+ echo "" >> /conf/upgrade_log.txt
+ echo "/sbin/tunefs -L ${GLABEL_SLICE} /dev/$COMPLETE_PATH" >> /conf/upgrade_log.txt
+ /sbin/tunefs -L ${GLABEL_SLICE} /dev/$COMPLETE_PATH >> /conf/upgrade_log.txt 2>&1
# restore config
cp -p /tmp/configbak/* /conf 2>/dev/null
@@ -239,7 +265,7 @@ pfSenseNanoBSDupgrade)
# If /tmp/$GLABEL_SLICE/tmp/post_upgrade_command exists
# after update then execute the command.
if [ -f /tmp/$GLABEL_SLICE/tmp/post_upgrade_command ]; then
- sh /tmp/$GLABEL_SLICE/tmp/post_upgrade_command >> /cf/upgrade_log.txt 2>&1
+ sh /tmp/$GLABEL_SLICE/tmp/post_upgrade_command >> /conf/upgrade_log.txt 2>&1
fi
# Update fstab
@@ -248,60 +274,71 @@ pfSenseNanoBSDupgrade)
if [ $? != 0 ]; then
echo "Something went wrong when trying to update the fstab entry. Aborting upgrade."
file_notice "UpgradeFailure" "Something went wrong when trying to update the fstab entry. Aborting upgrade."
- rm /var/run/firmware.lock
+ rm /var/run/firmwarelock.dirty
umount /tmp/$GLABEL_SLICE
/etc/rc.conf_mount_ro
exit 1
fi
- echo "" >> /cf/upgrade_log.txt
- cat /tmp/$GLABEL_SLICE/etc/fstab >> /cf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
+ cat /tmp/$GLABEL_SLICE/etc/fstab >> /conf/upgrade_log.txt
# Unmount newly prepared slice
umount /tmp/$GLABEL_SLICE
# Set active mount slice in fdisk
- echo "" >> /cf/upgrade_log.txt
- echo "gpart set -a active -i ${SLICE} ${BOOT_DRIVE}" >> /cf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
+ echo "gpart set -a active -i ${SLICE} ${BOOT_DRIVE}" >> /conf/upgrade_log.txt
gpart set -a active -i ${SLICE} ${BOOT_DRIVE}
# Set active boot source
- echo "" >> /cf/upgrade_log.txt
- echo "/usr/sbin/boot0cfg -s ${SLICE} -v /dev/${BOOT_DRIVE}" >> /cf/upgrade_log.txt
- /usr/sbin/boot0cfg -s ${SLICE} -v /dev/${BOOT_DRIVE} >> /cf/upgrade_log.txt 2>&1
+ echo "" >> /conf/upgrade_log.txt
+ echo "/usr/sbin/boot0cfg -s ${SLICE} -v /dev/${BOOT_DRIVE}" >> /conf/upgrade_log.txt
+ /usr/sbin/boot0cfg -s ${SLICE} -v /dev/${BOOT_DRIVE} >> /conf/upgrade_log.txt 2>&1
+
+ # Grab a final look at fdisk
+ echo "" >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVE >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs1 >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs1a >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs2 >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs2a >> /conf/upgrade_log.txt
+ fdisk $BOOT_DRIVEs3 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs1 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs2 >> /conf/upgrade_log.txt
+ bsdlabel -A $BOOT_DRIVEs3 >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
# Remove extra stuff
rm -rf /etc/rc.conf
rm -rf /etc/motd
rm -rf /usr/savecore/*
- date >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ date >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
# Trigger a package reinstallation on reobot
touch /conf/needs_package_sync
+ # Enough fun for now.
+ echo "" >> /conf/upgrade_log.txt
+ echo "/sbin/sysctl kern.geom.debugflags=0" >> /conf/upgrade_log.txt
+ /sbin/sysctl kern.geom.debugflags=0 >> /conf/upgrade_log.txt 2>&1
+
# remount /cf ro
/etc/rc.conf_mount_ro
/bin/sync
- echo "Done." >> /cf/upgrade_log.txt 2>&1
- # Enough fun for now.
- echo "" >> /cf/upgrade_log.txt
- echo "/sbin/sysctl kern.geom.debugflags=0" >> /cf/upgrade_log.txt
- /sbin/sysctl kern.geom.debugflags=0 >> /cf/upgrade_log.txt 2>&1
+ sleep 10
- rm -f /var/run/firmware.lock
+ rm -f /var/run/firmwarelock.dirty
sh /etc/rc.reboot
;;
pfSenseupgrade)
- # mount /cf
- /etc/rc.conf_mount_rw
-
# Sanity check - bail early if there's no firmware file!
if [ ! -r $IMG ]; then
- echo "2nd parameter has not been passed or file does not exist. Exiting." >> /cf/upgrade_log.txt 2>&1
+ echo "2nd parameter has not been passed or file does not exist. Exiting." >> /conf/upgrade_log.txt 2>&1
/etc/rc.conf_mount_ro
exit
fi
@@ -310,14 +347,14 @@ pfSenseupgrade)
sleep 1
# Log that we are really doing a NanoBSD upgrade
- echo "" >> /cf/upgrade_log.txt
- echo "NanoBSD upgrade starting" >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
+ echo "NanoBSD upgrade starting" >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
- touch /var/run/firmware.lock
+ touch /var/run/firmwarelock.dirty
- touch /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ touch /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
# Output environment information to log file
output_env_to_log
@@ -327,12 +364,12 @@ pfSenseupgrade)
# Do we have a pre-upgrade hook in the update file?
if [ `tar tvzf $IMG | grep /tmp/pre_upgrade_command | wc -l` -gt 0 ]; then
- tar xzvf $IMG -C / ./tmp/pre_upgrade_command >> /cf/upgrade_log.txt 2>&1
- chmod a+rx /tmp/pre_upgrade_command >> /cf/upgrade_log.txt 2>&1
- sh /tmp/pre_upgrade_command >> /cf/upgrade_log.txt 2>&1
+ tar xzvf $IMG -C / ./tmp/pre_upgrade_command >> /conf/upgrade_log.txt 2>&1
+ chmod a+rx /tmp/pre_upgrade_command >> /conf/upgrade_log.txt 2>&1
+ sh /tmp/pre_upgrade_command >> /conf/upgrade_log.txt 2>&1
fi
- echo "Firmware upgrade in progress..." >> /cf/upgrade_log.txt 2>&1
+ echo "Firmware upgrade in progress..." >> /conf/upgrade_log.txt 2>&1
echo "Firmware upgrade in progress..." | wall
# backup config
@@ -340,20 +377,20 @@ pfSenseupgrade)
cp -p /conf/* /tmp/configbak 2>/dev/null
# tar explode image onto hd
- echo "Installing $IMG." >> /cf/upgrade_log.txt 2>&1
- cd / && /usr/bin/tar xzUPf $IMG >> /cf/upgrade_log.txt 2>&1
+ echo "Installing $IMG." >> /conf/upgrade_log.txt 2>&1
+ cd / && /usr/bin/tar xzUPf $IMG >> /conf/upgrade_log.txt 2>&1
/usr/bin/find / -name CVS -exec rm -fr {} \;
- echo "Image installed $IMG." >> /cf/upgrade_log.txt 2>&1
+ echo "Image installed $IMG." >> /conf/upgrade_log.txt 2>&1
# process custom image if its passed
if [ $# -eq 3 ]; then
if [ -f $CUSTOMIMG ]; then
- echo "Custom image $CUSTOMIMG found." >> /cf/upgrade_log.txt 2>&1
- echo "Custom image ($CUSTOMIMG) found." >> /cf/upgrade_log.txt 2>&1
+ echo "Custom image $CUSTOMIMG found." >> /conf/upgrade_log.txt 2>&1
+ echo "Custom image ($CUSTOMIMG) found." >> /conf/upgrade_log.txt 2>&1
PWD_DIR=`pwd`
- cd / && /usr/bin/tar xzPUf $CUSTOMIMG >> /cf/upgrade_log.txt 2>&1
+ cd / && /usr/bin/tar xzPUf $CUSTOMIMG >> /conf/upgrade_log.txt 2>&1
cd $PWD_DIR
- echo "Custom image $CUSTOMIMG installed." >> /cf/upgrade_log.txt 2>&1
+ echo "Custom image $CUSTOMIMG installed." >> /conf/upgrade_log.txt 2>&1
fi
fi
@@ -370,13 +407,13 @@ pfSenseupgrade)
rm -f $IMG
if [ -e /etc/init_bootloader.sh ]; then
- sh /etc/init_bootloader.sh >> /cf/upgrade_log.txt 2>&1
+ sh /etc/init_bootloader.sh >> /conf/upgrade_log.txt 2>&1
fi
# If /tmp/post_upgrade_command exists after update
# then execute the command.
if [ -f /tmp/post_upgrade_command ]; then
- sh /tmp/post_upgrade_command >> /cf/upgrade_log.txt 2>&1
+ sh /tmp/post_upgrade_command >> /conf/upgrade_log.txt 2>&1
fi
# remove unused files
@@ -384,16 +421,19 @@ pfSenseupgrade)
rm -rf /etc/motd
rm -rf /usr/savecore/*
- date >> /cf/upgrade_log.txt
- echo "" >> /cf/upgrade_log.txt
+ date >> /conf/upgrade_log.txt
+ echo "" >> /conf/upgrade_log.txt
# remount /cf ro
/etc/rc.conf_mount_ro
# release the firmware lock
- rm -f /var/run/firmware.lock
+ rm -f /var/run/firmwarelock.dirty
/bin/sync
+ # Sleep and allow disks to catch up
+ sleep 10
+
# If the archive has unpacked a file called
# /tmp/no_upgrade_reboot_required then do
# not reboot after upgrade.
@@ -406,7 +446,7 @@ pfSenseupgrade)
;;
delta_update)
- touch /var/run/firmware.lock
+ touch /var/run/firmwarelock.dirty
backup_chflags
remove_chflags
binary_update $IMG
OpenPOWER on IntegriCloud