[OpenWrt-Devel] [RFC] ar71xx: fix seama factory type image generation.

Yousong Zhou yszhou4tech at gmail.com
Sun Sep 14 10:07:22 EDT 2014


Currently JFFS2 end-of-filesystem marker 0xdeadc0de is included the
computation of image's MD5 checksum as part of the seama header.  But
OpenWrt will erase blocks including and after the marker thus
invalidating the checksum after the first boot.

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
This has been tested on Qihoo C301 by flashing through OEM U-Boot.  Other
devices including MyNet-N600 and MyNet-N750 may need to be tested.

 target/linux/ar71xx/image/Makefile |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index b374391..bce8eb8 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -673,13 +673,15 @@ define Image/Build/Seama
 	-rm -f $(KDIR_TMP)/image-$(2).tmp
 	$(call CatFiles,$(KDIR_TMP)/loader-$(2).bin.lzma,$$$$(($(6) - 64)),$(KDIR)/root.$(1),$(7),$(KDIR_TMP)/image-$(2).tmp)
 	[ -e "$(KDIR_TMP)/image-$(2).tmp" ] && { \
+		head -c -4 "$(KDIR_TMP)/image-$(2).tmp" > "$(KDIR_TMP)/image-$(2).no-jffs2mark.tmp"; \
 		$(STAGING_DIR_HOST)/bin/seama \
-		-i $(KDIR_TMP)/image-$(2).tmp \
+		-i $(KDIR_TMP)/image-$(2).no-jffs2mark.tmp \
 		-m "dev=/dev/mtdblock/1" -m "type=firmware"; \
 		$(STAGING_DIR_HOST)/bin/seama \
 			-s $(call imgname,$(1),$(2))-factory.bin \
 			-m "signature=$(5)" \
-			-i $(KDIR_TMP)/image-$(2).tmp.seama; \
+			-i $(KDIR_TMP)/image-$(2).no-jffs2mark.tmp.seama; \
+		tail -c 4 "$(KDIR_TMP)/image-$(2).tmp" >> $(call imgname,$(1),$(2))-factory.bin; \
 	}
 	cat $(KDIR_TMP)/loader-$(2).bin.lzma > $(KDIR_TMP)/image-$(2)-sysupgrade.tmp
 	$(STAGING_DIR_HOST)/bin/seama \
-- 
1.7.10.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list