ar71xx: fix seama factory type image generation.
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 14 Oct 2014 12:21:41 +0000 (12:21 +0000)
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 14 Oct 2014 12:21:41 +0000 (12:21 +0000)
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@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42915 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/ar71xx/image/Makefile

index c307abe..78e2d70 100644 (file)
@@ -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 \