aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ipq40xx/base-files/etc/init.d/zlinksys_recovery
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ipq40xx/base-files/etc/init.d/zlinksys_recovery')
-rwxr-xr-xtarget/linux/ipq40xx/base-files/etc/init.d/zlinksys_recovery34
1 files changed, 34 insertions, 0 deletions
diff --git a/target/linux/ipq40xx/base-files/etc/init.d/zlinksys_recovery b/target/linux/ipq40xx/base-files/etc/init.d/zlinksys_recovery
new file mode 100755
index 0000000000..ac6533e3fe
--- /dev/null
+++ b/target/linux/ipq40xx/base-files/etc/init.d/zlinksys_recovery
@@ -0,0 +1,34 @@
+#!/bin/sh /etc/rc.common
+#
+# This script sets auto_recovery to "yes" and resets the boot counter to 0.
+# As a golden rule, this should be the latest script to run at boot. For a
+# developer snapshot, it is fine to set auto_recovery here. But for a stable
+# release, this script must in fact turn off auto_recovery.
+#
+# Why? Because the custom sysupgrade script for the device will turn on
+# auto_recovery to "yes". And it's the job of this script to set the
+# boot boot_count to 0 and then disable auto_recovery, as that condition
+# means that the stable release went well.
+#
+# I have to repeat: this script should be changed for stable releases.
+
+START=99
+boot() {
+ . /lib/functions.sh
+
+ case $(board_name) in
+ linksys,ea6350v3)
+ # make sure auto_recovery in uboot is always on
+ IS_AUTO_RECOVERY="$(fw_printenv -n auto_recovery)"
+ if [ "$IS_AUTO_RECOVERY" != "yes" ] ; then
+ fw_setenv auto_recovery yes
+ echo "Linksys EA6350v3: fw_setenv: auto_recovery has been set to yes"
+ fi
+ # reset the boot counter
+ fw_setenv boot_count 0
+ mtd resetbc s_env
+ echo "Linksys EA6350v3: boot counter has been reset"
+ echo "Linksys EA6350v3: boot_part=$(fw_printenv -n boot_part)"
+ ;;
+ esac
+}