summaryrefslogtreecommitdiffstats
path: root/etc/rc.firmware
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2005-04-20 18:11:25 +0000
committerScott Ullrich <sullrich@pfsense.org>2005-04-20 18:11:25 +0000
commit704ea91869e67834035524c7a77209eb059a25ea (patch)
tree98c92d91740389c4ecc6871001ba62576252f473 /etc/rc.firmware
parent0155a04e7c69ec28a13aadc886f48990db74dc74 (diff)
downloadpfsense-704ea91869e67834035524c7a77209eb059a25ea.zip
pfsense-704ea91869e67834035524c7a77209eb059a25ea.tar.gz
* Add remove_chflags function
* Add backup_chflags function * Add restore_chflags function * Backup and restore the chflags before updating
Diffstat (limited to 'etc/rc.firmware')
-rwxr-xr-xetc/rc.firmware29
1 files changed, 28 insertions, 1 deletions
diff --git a/etc/rc.firmware b/etc/rc.firmware
index 6253d09..a41179a 100755
--- a/etc/rc.firmware
+++ b/etc/rc.firmware
@@ -13,11 +13,25 @@ if [ $1 != "upgrade" ]; then
/sbin/umount -f /ftmp > /dev/null 2>&1
fi
+backup_chflags() {
+ mtree -Pcp / | bzip2 -9 > /tmp/chflags.dist.bz2
+}
+
+restore_chflags() {
+ cd / && bzcat /tmp/chflags.dist.bz2 | mtree -PU -p /
+}
+
+remove_chflags() {
+ chflags -R noschg /
+}
+
binary_update() {
TGZ=$1
ERR_F="/tmp/bdiff.log"
rm ${ERR_F} 2>/dev/null
mkdir /tmp/patched /tmp/patches 2>>${ERR_F}
+ backup_chflags
+ remove_chflags
cd /tmp/patches
for i in `/usr/bin/tar tvzf $TGZ | egrep -v "(^d|_md5)" | nawk '{print $9;}'`;
do
@@ -46,6 +60,7 @@ binary_update() {
/bin/rm /tmp/patches/${i}.* >> ${ERR_F}
done
rm -rf /tmp/patched /tmp/patches >> ${ERR_F}
+ restore_chflags
}
case $1 in
@@ -54,12 +69,17 @@ enable)
> /dev/null 2>&1
;;
auto)
+ backup_chflags
+ remove_chflags
/etc/rc.firmware_auto
+ restore_chflags
;;
upgrade)
# wait 5 seconds before beginning
sleep 5
-
+ backup_chflags
+ remove_chflags
+
exec </dev/console >/dev/console 2>/dev/console
echo
@@ -89,11 +109,14 @@ upgrade)
/sbin/mount -r /cf
echo "Done - rebooting system..."
+ restore_chflags
/sbin/reboot
;;
pfSenseupgrade)
# wait 5 seconds before beginning
sleep 5
+ backup_chflags
+ remove_chflags
exec </dev/console >/dev/console 2>/dev/console
@@ -130,9 +153,13 @@ pfSenseupgrade)
echo "Done - rebooting system..." | logger -p daemon.info -i -t Upgrade
rm /tmp/auto_upgrade_in_progress
+ restore_chflags
/sbin/shutdown -r now
;;
delta_update)
+ backup_chflags
+ remove_chflags
binary_update $2
+ restore_chflags
;;
esac
OpenPOWER on IntegriCloud