Login  Register

Re: How do I completely reset?

Posted by hans2 on Feb 29, 2016; 3:56pm
URL: https://itus.accessinnov.com/How-do-I-completely-reset-tp131p217.html

The current factory_reset secript has a major problem:

it DELETES the boot images without any check if the new updated 1.51SP1 actually exists

if [[ `df | grep -c overlay` == "1" ]]; then
        umount /overlay
fi
sleep 1
mkdir -p /factory_reset
sleep 1
mount /dev/mmcblk0p1 /factory_reset
sleep 1
cd /factory_reset
sleep 1
rm ItusrouterImage
sleep 5
rm ItusbridgeImage
sleep 5
rm ItusgatewayImage
sleep 5
cp ItusrestoreImage ItusrouterImage
sleep 10
cp ItusrestoreImage ItusgatewayImage
sleep 10
cp ItusrestoreImage ItusbridgeImage
sleep 10
cd /
sleep 1
umount /factory_reset
sleep 1
umount -a
sleep 1
reboot -f

So I made an update:
First of all if /tmp/ItusrestoreImage does not exist, this script will simply exit (stop) to run.
Second if it does exist (checked twice) then it will make a backup of the existing images before any update.
Third I am using hard folder references instead of relative. This prevents issues in case of starting this script outside the root.


# Script asumes that the ItusrestoreImage is located in the /tmp folder

# mounting folder for the boot device
factory_reset_folder='/tmp/factory_reset'


make_Imagebackup () {
#
#	function to create a backup of the current boot image to a sub-folder
#	does not run in case th
#
if [ -r '$factory_reset_folder/$ImageName']; then
	{
	echo "Creating backup of the $ImageName"
	mv '$factory_reset_folder/$ImageName' '$factory_reset_folder/backup'
	}
	else
	{
	echo "Unable to find $ImageName in $factory_reset_folder"	
	}
	sleep 5
}

update_Image () {
#
#	Updates boot image ONLY in case the ItusrouterImage exists in /tmp
#	ABORTS this script in case ItusrouterImage check fails.
#
if [ -r /tmp/ItusrouterImage ]; then
	{
	echo "Creating backup of the $ImageName"
	cp /tmp/ItusrouterImage '$factory_reset_folder/$ImageName'
	}
	else
	{
	echo "Replacement ItusrestoreImage does not exist in /tmp - ABORDING"
	exit 1
	}
	sleep 5
}

# check for the ItusrestoreImage
if [ ! -r '/tmp/ItusrouterImage' ]; then
	{
	echo "Replacement ItusrestoreImage does not exist in /tmp - ABORDING"
	exit 1
	}
	
#  Remove old mounts
if [[ `df | grep -c overlay` == "1" ]]; then
        umount /overlay
fi
sleep 1

mount /dev/mmcblk0p1 $factory_reset_folder

# Check for the backuip folder in the mounted partition
if [ ! -d '$factory_reset_folder/backup' ]; then
	{
	mkdir '$factory_reset_folder/backup'
	}

sleep 1
cd $factory_reset_folder
sleep 1

# Backup and updates the router image
ImageName='ItusrouterImage'
make_Imagebackup()
update_Image ()

# Backup and updates the bridge image
ImageName='ItusbridgeImage'
make_Imagebackup()
update_Image ()

# Backup and updates the gateway image
ImageName='ItusgatewayImage'
make_Imagebackup()
update_Image ()

# Backup and updates the restore image
ImageName='ItusrestoreImage'
make_Imagebackup()
update_Image ()

sleep 1
umount 'factory_reset_folder'
sleep 1
umount -a
sleep 1
reboot -f

No more: Shield Pro v1, Chaos Calmer, FW 1.51 SP1