---
I tried to use LZMA-compressed loader for LZMA-compressed kernel. We
can't juse use CFE's bootloader to load standard LZMA-compressed kernel,
because CFE doesn't support LZMA compression with dictionary.

Not using dictionary results in not optimal size of compressed kernel.

Unfortunately this patch DOES NOT work, booting hangs on
Starting program at 0x80001000

Does anyone see any mistake in my code? Hauke?

P.S.
Don't be angry at me for hardcoding
/home/zajec/openwrt.git/staging_dir/host
it was quick hack for not-accessible $(STAGING_DIR_HOST)
---
 target/linux/brcm47xx/image/Makefile               |   13 +++++++++++++
 target/linux/brcm47xx/image/lzma-loader/Makefile   |    2 +-
 .../linux/brcm47xx/image/lzma-loader/src/Makefile  |    5 ++++-
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/target/linux/brcm47xx/image/Makefile 
b/target/linux/brcm47xx/image/Makefile
index b247571..5243b84 100644
--- a/target/linux/brcm47xx/image/Makefile
+++ b/target/linux/brcm47xx/image/Makefile
@@ -13,12 +13,14 @@ endef
 
 define Image/Prepare
        cat $(KDIR)/vmlinux | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 
-lp2 -pb2 > $(KDIR)/vmlinux.lzma
+
        rm -f $(KDIR)/loader.gz
        $(MAKE) -C lzma-loader \
                BUILD_DIR="$(KDIR)" \
                TARGET="$(KDIR)" \
                clean install
        echo -ne "\\x00" >> $(KDIR)/loader.gz
+
        rm -f $(KDIR)/fs_mark
        echo -ne '\xde\xad\xc0\xde' > $(KDIR)/fs_mark
        $(call prepare_generic_squashfs,$(KDIR)/fs_mark)
@@ -104,10 +106,20 @@ define Image/Build/Chk
        $(STAGING_DIR_HOST)/bin/mkchkimg -o $(BIN_DIR)/openwrt-$(2)-$(5).chk -k 
$(BIN_DIR)/$(IMG_PREFIX)-$(1).trx -b $(3) -r $(4)
 endef
 
+define Image/Build/ChkWNDR4500
+       $(STAGING_DIR_HOST)/bin/mkchkimg -o $(BIN_DIR)/openwrt-$(2)-$(5).chk -k 
$(BIN_DIR)/$(IMG_PREFIX)-$(1)-wndr4500.trx -b $(3) -r $(4)
+endef
+
 define Image/Build
        $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx \
                -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma \
                $(call trxalign/$(1),$(1))
+
+       # Loader compressed with non-optimal LZMA (without dictionary) - for 
WNDR4500
+       $(STAGING_DIR_HOST)/bin/trx -o 
$(BIN_DIR)/$(IMG_PREFIX)-$(1)-wndr4500.trx \
+               -f $(KDIR)/loader.lzma -f $(KDIR)/vmlinux.lzma \
+               $(call trxalign/$(1),$(1))
+
        $(call Image/Build/$(1),$(1))
        $(call Image/Build/Motorola,$(1),wr850g,1,$(1))
        $(call Image/Build/USR,$(1),usr5461,$(1))
@@ -117,6 +129,7 @@ define Image/Build
 #      $(call Image/Build/Chk,$(1),wndr3400_v1,U12H155T00_NETGEAR,2,$(patsubst 
jffs2-%,jffs2,$(1)))
 #      $(call 
Image/Build/Chk,$(1),wndr3400_vcna,U12H155T01_NETGEAR,2,$(patsubst 
jffs2-%,jffs2,$(1)))
 #      $(call Image/Build/Chk,$(1),wndr4000,U12H181T00_NETGEAR,2,$(patsubst 
jffs2-%,jffs2,$(1)))
+#      $(call 
Image/Build/ChkWNDR4500,$(1),wndr4500,U12H189T00_NETGEAR,1,$(patsubst 
jffs2-%,jffs2,$(1)))
        $(call Image/Build/Chk,$(1),wnr834b_v2,U12H081T00_NETGEAR,2,$(patsubst 
jffs2-%,jffs2,$(1)))
 #      $(call Image/Build/Chk,$(1),wnr2000v2,U12H114T00_NETGEAR,2,$(patsubst 
jffs2-%,jffs2,$(1)))
 #      $(call Image/Build/Chk,$(1),wnr3500L,U12H136T99_NETGEAR,2,$(patsubst 
jffs2-%,jffs2,$(1)))
diff --git a/target/linux/brcm47xx/image/lzma-loader/Makefile 
b/target/linux/brcm47xx/image/lzma-loader/Makefile
index 5dd6f50..c274f98 100644
--- a/target/linux/brcm47xx/image/lzma-loader/Makefile
+++ b/target/linux/brcm47xx/image/lzma-loader/Makefile
@@ -26,7 +26,7 @@ install:
 
 ifneq ($(TARGET),)
 install: compile
-       $(CP) $(PKG_BUILD_DIR)/loader.gz $(PKG_BUILD_DIR)/loader.elf $(TARGET)/
+       $(CP) $(PKG_BUILD_DIR)/loader.gz $(PKG_BUILD_DIR)/loader.lzma 
$(PKG_BUILD_DIR)/loader.elf $(TARGET)/
 endif
 
 clean:
diff --git a/target/linux/brcm47xx/image/lzma-loader/src/Makefile 
b/target/linux/brcm47xx/image/lzma-loader/src/Makefile
index 3320e56..6de20c5 100644
--- a/target/linux/brcm47xx/image/lzma-loader/src/Makefile
+++ b/target/linux/brcm47xx/image/lzma-loader/src/Makefile
@@ -34,7 +34,7 @@ SEDFLAGS      := 
s/BZ_TEXT_START/$(BZ_TEXT_START)/;s/TEXT_START/$(TEXT_START)/
 
 OBJECTS                := head.o data.o
 
-all: loader.gz loader.elf
+all: loader.gz loader.lzma loader.elf
 
 # Don't build dependencies, this may die if $(CC) isn't gcc
 dep:
@@ -44,6 +44,9 @@ install:
 loader.gz: loader
        gzip -nc9 $< > $@
 
+loader.lzma: loader
+       /home/zajec/openwrt.git/staging_dir/host/bin/lzma e -d16 $< $@
+
 loader.elf: loader.o
        cp $< $@
 
-- 
1.7.7

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to