From 63300d3d91376573cbe837e745483d9b20d77c17 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 15 May 2007 18:41:48 +0000 Subject: [PATCH] Fix broadcom squashfs images: 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 | 16 +++++++--------- tools/firmware-utils/src/trx.c | 11 ++++++++--- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/target/linux/brcm-2.4/image/Makefile b/target/linux/brcm-2.4/image/Makefile index 6515d134c8d2..46c660f7f8c0 100644 --- a/target/linux/brcm-2.4/image/Makefile +++ b/target/linux/brcm-2.4/image/Makefile @@ -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))) diff --git a/tools/firmware-utils/src/trx.c b/tools/firmware-utils/src/trx.c index 787ffa894626..1131238a4e7f 100644 --- a/tools/firmware-utils/src/trx.c +++ b/tools/firmware-utils/src/trx.c @@ -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': -- 2.30.2