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 <yszhou4t...@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@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel