aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ath79/generic
diff options
context:
space:
mode:
authorTomasz Maciej Nowak <tmn505@gmail.com>2022-06-07 15:58:28 +0200
committerChristian Lamparter <chunkeey@gmail.com>2022-06-24 17:10:24 +0200
commit5897c52e78e3cd3846db083d48dd9d6b47ff3a08 (patch)
tree7e1ab1b8d20adc0137fa5332180936554b81ec1d /target/linux/ath79/generic
parent5c142aad7bc018fe000789740a486c49973035b8 (diff)
downloadupstream-5897c52e78e3cd3846db083d48dd9d6b47ff3a08.tar.gz
upstream-5897c52e78e3cd3846db083d48dd9d6b47ff3a08.tar.bz2
upstream-5897c52e78e3cd3846db083d48dd9d6b47ff3a08.zip
ath79: move image check for devices with RedBoot
Don't comence the switch to RAMFS when the image format is wrong. This led to rebooting the device, which could lead to false impression that upgrade succeded. Being here, factor out the code responsible for upgrading RedBoot devices to separate file. Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
Diffstat (limited to 'target/linux/ath79/generic')
-rw-r--r--target/linux/ath79/generic/base-files/lib/upgrade/platform.sh46
-rw-r--r--target/linux/ath79/generic/base-files/lib/upgrade/redboot-fis.sh31
2 files changed, 46 insertions, 31 deletions
diff --git a/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh b/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
index 642a9891ff..f161540a68 100644
--- a/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
@@ -8,35 +8,19 @@ REQUIRE_IMAGE_METADATA=1
RAMFS_COPY_BIN='fw_printenv fw_setenv'
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
-redboot_fis_do_upgrade() {
- local append
- local sysup_file="$1"
- local kern_part="$2"
- local magic=$(get_magic_word "$sysup_file")
-
- if [ "$magic" = "7379" ]; then
- local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$')
-
- [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
-
- if grep -q "mtd1.*loader" /proc/mtd; then
- tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
- mtd -r $append write - loader:firmware
-
- else
- local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c)
-
- tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
- mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs
- fi
- else
- echo "Unknown image, aborting!"
- return 1
- fi
-}
-
platform_check_image() {
- return 0
+ local board=$(board_name)
+
+ case "$board" in
+ jjplus,ja76pf2|\
+ ubnt,routerstation|\
+ ubnt,routerstation-pro)
+ platform_check_image_redboot_fis "$1"
+ ;;
+ *)
+ return 0
+ ;;
+ esac
}
platform_do_upgrade() {
@@ -45,7 +29,7 @@ platform_do_upgrade() {
case "$board" in
adtran,bsap1800-v2|\
adtran,bsap1840)
- redboot_fis_do_upgrade "$1" vmlinux_2
+ platform_do_upgrade_redboot_fis "$1" vmlinux_2
;;
allnet,all-wap02860ac|\
araknis,an-300-ap-i-n|\
@@ -66,7 +50,7 @@ platform_do_upgrade() {
platform_do_upgrade_failsafe_datachk "$1"
;;
jjplus,ja76pf2)
- redboot_fis_do_upgrade "$1" linux
+ platform_do_upgrade_redboot_fis "$1" linux
;;
openmesh,a40|\
openmesh,a60|\
@@ -98,7 +82,7 @@ platform_do_upgrade() {
;;
ubnt,routerstation|\
ubnt,routerstation-pro)
- redboot_fis_do_upgrade "$1" kernel
+ platform_do_upgrade_redboot_fis "$1" kernel
;;
*)
default_do_upgrade "$1"
diff --git a/target/linux/ath79/generic/base-files/lib/upgrade/redboot-fis.sh b/target/linux/ath79/generic/base-files/lib/upgrade/redboot-fis.sh
new file mode 100644
index 0000000000..f45d9a2e79
--- /dev/null
+++ b/target/linux/ath79/generic/base-files/lib/upgrade/redboot-fis.sh
@@ -0,0 +1,31 @@
+platform_check_image_redboot_fis() {
+ if [ "$(get_magic_word "$1")" != "7379" ]; then
+ v "Unknown image format, aborting!"
+ return 1
+ else
+ return 0
+ fi
+}
+
+platform_do_upgrade_redboot_fis() {
+ local append
+ local sysup_file="$1"
+ local kern_part="$2"
+
+ if [ "$(get_magic_word "$sysup_file")" = "7379" ]; then
+ local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$')
+
+ [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
+
+ if grep -q "mtd1.*loader" /proc/mtd; then
+ tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
+ mtd -r $append write - loader:firmware
+
+ else
+ local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c)
+
+ tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
+ mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs
+ fi
+ fi
+}