[source] ipq806x: EA8500 fix sysupgrade over stock firmware

LEDE Commits lede-commits at lists.infradead.org
Tue Dec 20 01:35:30 PST 2016


blogic pushed a commit to source.git, branch master:
https://git.lede-project.org/d700c120bffe806aa23442cbbcce30e1c1886b79

commit d700c120bffe806aa23442cbbcce30e1c1886b79
Author: Adrian Panella <ianchi74 at outlook.com>
AuthorDate: Thu Dec 8 02:41:58 2016 -0600

    ipq806x: EA8500 fix sysupgrade over stock firmware
    
    When running sysupgrade for the first time over the second partition
    (that still had stock firmware) the rootfs wasn't flashed as there
    wasn't enough space.
    This happend because stock also uses UBI, but the volume name wasn't
    recognised and wasn't deleted before flashing.
    
    Signed-off-by: Adrian Panella <ianchi74 at outlook.com>
---
 .../ipq806x/base-files/lib/upgrade/linksys.sh      | 30 +++++++++++++++++++---
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/target/linux/ipq806x/base-files/lib/upgrade/linksys.sh b/target/linux/ipq806x/base-files/lib/upgrade/linksys.sh
index ca5161a..12f25ef 100644
--- a/target/linux/ipq806x/base-files/lib/upgrade/linksys.sh
+++ b/target/linux/ipq806x/base-files/lib/upgrade/linksys.sh
@@ -55,11 +55,36 @@ platform_do_upgrade_linksys() {
 			CI_UBIPART="rootfs2"
 		fi
 
+
+		# remove "squashfs" vol (in case we are flashing over a stock image, which is also UBI)
+
+		local mtdnum="$( find_mtd_index "$CI_UBIPART" )"
+		if [ ! "$mtdnum" ]; then
+			echo "cannot find ubi mtd partition $CI_UBIPART"
+			return 1
+		fi
+
+		local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
+		if [ ! "$ubidev" ]; then
+			ubiattach -m "$mtdnum"
+			sync
+			ubidev="$( nand_find_ubi "$CI_UBIPART" )"
+		fi
+
+		if [ "$ubidev" ]; then
+
+			local squash_ubivol="$( nand_find_volume $ubidev squashfs )"
+
+			# kill volume
+			[ "$squash_ubivol" ] && ubirmvol /dev/$ubidev -N squashfs || true
+		fi
+
+
+		# complete std upgrade
 		nand_upgrade_tar "$1"
 	}
 	[ "$magic_long" = "27051956" ] && {
 		# check firmwares' rootfs types
-		local target_mtd=$(find_mtd_part $part_label)
 		local oldroot="$(linksys_get_root_magic $target_mtd)"
 		local newroot="$(linksys_get_root_magic "$1")"
 
@@ -80,9 +105,6 @@ linksys_preupgrade() {
 	export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /bin/mkdir /bin/touch"
 	export RAMFS_COPY_DATA="${RAMFS_COPY_DATA} /etc/fw_env.config /var/lock/fw_printenv.lock"
 
-	[ -f /tmp/sysupgrade.tgz ] && {
-		cp /tmp/sysupgrade.tgz /tmp/syscfg/sysupgrade.tgz
-	}
 }
 
 append sysupgrade_pre_upgrade linksys_preupgrade



More information about the lede-commits mailing list