[OpenWrt-Devel] [PATCH] gemini: Support sysupgrade on DIR-685
Linus Walleij
linus.walleij at linaro.org
Sun May 5 08:23:27 EDT 2019
This makes sysupgrade work on the D-Link DIR-685 after
initial factory install.
We create the platform.sh script to support sysupgrade
on more targets as we move on with sysupgrade support.
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
.../gemini/base-files/lib/upgrade/platform.sh | 54 +++++++++++++++++++
target/linux/gemini/image/Makefile | 3 +-
2 files changed, 56 insertions(+), 1 deletion(-)
create mode 100644 target/linux/gemini/base-files/lib/upgrade/platform.sh
diff --git a/target/linux/gemini/base-files/lib/upgrade/platform.sh b/target/linux/gemini/base-files/lib/upgrade/platform.sh
new file mode 100644
index 000000000000..0c6fc44ee725
--- /dev/null
+++ b/target/linux/gemini/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,54 @@
+wrgg_get_image_magic() {
+ get_image "$@" | dd bs=4 count=1 skip=8 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
+}
+
+platform_find_part_size() {
+ local first dev size erasesize name
+ while read dev size erasesize name; do
+ name=${name#'"'}; name=${name%'"'}
+ [ "$name" = "$1" ] && {
+ echo "$size"
+ break
+ }
+ done < /proc/mtd
+}
+
+platform_check_image() {
+ local board=$(board_name)
+ # TODO: check size of sysupgrade image
+
+ case "$board" in
+ dlink,dir-685 )
+ local magic=$(wrgg_get_image_magic "$1")
+ [ "$magic" != "21030820" ] && {
+ echo "Invalid image. Bad magic for DIR-685."
+ return 1
+ }
+ echo "Image looks OK"
+ return 0
+ ;;
+ esac
+
+ echo "Sysupgrade is not yet supported on $board."
+ return 1
+}
+
+platform_do_upgrade() {
+ local board=$(board_name)
+
+ v "board=$board"
+ case "$board" in
+ dlink,dir-685 )
+ # This will overwrite "firmware" which means that the
+ # partitions "kernel", "rootfs" and "rootfs_data" get
+ # overwritten in the flash. The "kernel" image has the
+ # necessary boot loader magic attached to it, and after
+ # the "rootfs" there is an empty space marker for "rootfs_data"
+ PART_NAME=firmware
+ default_do_upgrade "$ARGV"
+ ;;
+ *)
+
+ ;;
+ esac
+}
diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile
index 8fec250f186a..a7001eb0068a 100644
--- a/target/linux/gemini/image/Makefile
+++ b/target/linux/gemini/image/Makefile
@@ -143,9 +143,10 @@ define Device/dlink_dir-685
DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES) \
kmod-switch-rtl8366rb swconfig \
kmod-rt2800-pci
- IMAGES := factory.bin
+ IMAGES := factory.bin sysupgrade.bin
# Pad to 128k erase blocks with 160 bytes WRGG header
IMAGE/factory.bin := append-kernel | pad-offset 128k 160 | append-rootfs | dir685-pad-rootfs | dir685-image
+ IMAGE/sysupgrade.bin := append-kernel | pad-offset 128k 160 | dir685-image | append-rootfs | dir685-pad-rootfs
endef
TARGET_DEVICES += dlink_dir-685
--
2.20.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list