Fix broadcom squashfs images:
authorFelix Fietkau <nbd@openwrt.org>
Tue, 15 May 2007 18:41:48 +0000 (18:41 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 15 May 2007 18:41:48 +0000 (18:41 +0000)
We switched over to appending the jffs2 eof mark to the squashfs images,
but since the squashfs is not always aligned to eraseblocksize, the eof
mark landed in the wrong place. This commit adds an extra flag to the
trx utility that can append extra data to a partition with alignment.
This is used to place the jffs2 eof mark at the right offset.

SVN-Revision: 7253

target/linux/brcm-2.4/image/Makefile
tools/firmware-utils/src/trx.c

index 6515d134c8d2208e65d09edde47a2aace8892295..46c660f7f8c05c8cebac26979eea763958ebe151 100644 (file)
@@ -19,6 +19,9 @@ define Image/Prepare
                TARGET="$(KDIR)" \
                clean install
        echo -ne "\\x00" >> $(KDIR)/loader.gz
+       rm -f $(KDIR)/fs_mark
+       touch $(KDIR)/fs_mark
+       $(call prepare_generic_squashfs,$(KDIR)/fs_mark)
 endef
 
 ifneq ($(KERNEL),2.4)
@@ -41,22 +44,17 @@ define Image/Build/USR
 endef
 
 define trxalign/jffs2-128k
--a 0x20000
+-a 0x20000 -f $(KDIR)/root.$(1)
 endef
 define trxalign/jffs2-64k
--a 0x10000
+-a 0x10000 -f $(KDIR)/root.$(1)
 endef
 define trxalign/squashfs
--a 1024
-endef
-
-define Image/Build/squashfs
-    $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
+-a 1024 -f $(KDIR)/root.$(1) -a 0x10000 -A $(KDIR)/fs_mark
 endef
 
 define Image/Build
-       $(call Image/Build/$(1))
-       $(STAGING_DIR)/bin/trx -o $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).trx -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma $(call trxalign/$(1)) -f $(KDIR)/root.$(1)
+       $(STAGING_DIR)/bin/trx -o $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).trx -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma $(call trxalign/$(1),$(1)) 
 ifneq ($(1),jffs2-128k)
        $(call Image/Build/CyberTAN,$(1),wrt54g3g,W54F,2.01.1,$(patsubst jffs2-%,jffs2,$(1)))
        $(call Image/Build/CyberTAN,$(1),wrt54g,W54G,4.60.1,$(patsubst jffs2-%,jffs2,$(1)))
index 787ffa894626ea2cac72c2261a8bda0ae9791a0e..1131238a4e7fbca48ad79af44aebf9e300871761 100644 (file)
@@ -88,7 +88,7 @@ int main(int argc, char **argv)
        char *ofn = NULL;
        char *buf;
        char *e;
-       int c, i;
+       int c, i, append;
        size_t n;
        uint32_t cur_len;
        unsigned long maxlen = TRX_MAX_LEN;
@@ -110,11 +110,15 @@ int main(int argc, char **argv)
        in = NULL;
        i = 0;
 
-       while ((c = getopt(argc, argv, "-:o:m:a:b:f:")) != -1) {
+       while ((c = getopt(argc, argv, "-:o:m:a:b:f:A:")) != -1) {
                switch (c) {
+                       case 'A':
+                               append = 1;
+                               /* fall through */
                        case 'f':
                        case 1:
-                               p->offsets[i++] = STORE32_LE(cur_len);
+                               if (!append)
+                                       p->offsets[i++] = STORE32_LE(cur_len);
 
                                if (!(in = fopen(optarg, "r"))) {
                                        fprintf(stderr, "can not open \"%s\" for reading\n", optarg);
@@ -134,6 +138,7 @@ int main(int argc, char **argv)
                                        n += ROUND - (n & (ROUND-1));
                                }
                                cur_len += n;
+                               append = 0;
 
                                break;
                        case 'o':