aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg')
-rw-r--r--target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg36
1 files changed, 36 insertions, 0 deletions
diff --git a/target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg b/target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg
new file mode 100644
index 0000000..a54226f
--- /dev/null
+++ b/target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg
@@ -0,0 +1,36 @@
+#
+# Copyright (C) 2014 OpenWrt.org
+#
+
+preinit_mount_syscfg() {
+
+ . /lib/functions.sh
+ . /lib/mvebu.sh
+
+ case $(mvebu_board_name) in
+ armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-shelby|armada-xp-linksys-mamba)
+ needs_recovery=0
+ ubiattach -m 8 || needs_recovery=1
+ if [ $needs_recovery -eq 1 ]
+ then
+ echo "ubifs syscfg partition is damaged, reformatting"
+ ubidetach -m 8
+ ubiformat -y -O 2048 -q /dev/mtd8
+ ubiattach -m 8
+ ubimkvol /dev/ubi1 -n 0 -N syscfg -t dynamic --maxavsize
+ fi
+ mkdir /tmp/syscfg
+ mount -t ubifs ubi1:syscfg /tmp/syscfg
+ [ -f /tmp/syscfg/sysupgrade.tgz ] && {
+ echo "- config restore -"
+ cd /
+ mv /tmp/syscfg/sysupgrade.tgz /tmp
+ tar xzf /tmp/sysupgrade.tgz
+ rm -f /tmp/sysupgrade.tgz
+ sync
+ }
+ ;;
+ esac
+}
+
+boot_hook_add preinit_main preinit_mount_syscfg