Skip to contentSkip to conversation

Booting uncompressed kernel image

DISCUSSION Matteo Fortini 2 participants 2 messages Jan 26, 2009

lore
Share & tools
lore
#0 lore raw

Hi all,
I built an uncompressed uImage using mkimage --no-gzip -C none in the wrapper scripts.

Only, u-boot recognizes it as uncompressed and launches the kernel properly (it's around 4MB), but in the end linux just prints OK
and stops.

Has anyone done the same?

Thanks ,
Matteo

#1 lore raw
Quoted 6 lines · Matteo Fortini

Hi all,
I built an uncompressed uImage using mkimage --no-gzip -C none in the wrapper scripts.
Only, u-boot recognizes it as uncompressed and launches the kernel properly (it's around 4MB), but in the end linux just prints OK and stops.

Powerpc make compress the bin image with gzip first, before it generates the image header. If the u-boot reads the image header properly doesn't mean that the kernel is really unpacked.

Quoted 2 lines

Has anyone done the same?

me ;-) I did it with a mpc5200b board and linux 2.6.23. You can try the patch attached to this mail. It worked for me[TM]. ;-)

Cheers
Luotao Fu

Signature · 4 lines
Pengutronix e.K.                           | Dipl.-Ing. Luotao Fu        |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

Subject: Create an uncomrpessed uImage
From: Luotao Fu <[email protected]>

This one adds a make target to create an uncomrpessed uImage format for powerpc, which is usable by uboot. We call the target nuImage for now. We need this to verify if we can boost up the boot speed.

---
 arch/powerpc/Makefile      |    2 +-
 arch/powerpc/boot/Makefile |    3 +++
 arch/powerpc/boot/wrapper  |   15 ++++++++++++++-
 3 files changed, 18 insertions(+), 2 deletions(-)
powerpc/boot/wrapper renamed from powerpc/boot/wrapper.orig +14 -1
Index: arch/powerpc/boot/wrapper
===================================================================
@@ -133,7 +133,7 @@ coff)
     platformo=$object/of.o
     lds=$object/zImage.coff.lds
     ;;
-miboot|uboot)
+miboot|uboot|decuboot)
     # miboot and U-boot want just the bare bits, not an ELF binary
     ext=bin
     objflags="-O binary"
@@ -190,6 +190,19 @@ uboot)
     fi
     exit 0
     ;;
+decuboot)
+    rm -f "$ofile"
+    vmz_uncomp=`basename $vmz $gzip`
+    gunzip -c $vmz > $vmz_uncomp
+    mkimage -A ppc -O linux -T kernel -C none -a 00000000 -e 00000000 \
+	$uboot_version -d "$vmz_uncomp" "$ofile"
+    rm $vmz_uncomp
+    vmz="$vmz$gzip"
+    if [ -z "$cacheit" ]; then
+	rm -f "$vmz"
+    fi
+    exit 0
+    ;;
 esac
 
 addsec() {
powerpc/boot/Makefile renamed from powerpc/boot/Makefile.orig +3 -0
Index: arch/powerpc/boot/Makefile
===================================================================
@@ -195,6 +195,9 @@ $(obj)/zImage.initrd.ps3: vmlinux  $(wra
 $(obj)/uImage: vmlinux $(wrapperbits)
 	$(call if_changed,wrap,uboot)
 
+$(obj)/nuImage: vmlinux $(wrapperbits)
+	$(call if_changed,wrap,decuboot)
+
 $(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits)
 	$(call if_changed,wrap,cuboot-$*,$(dts))
 
powerpc/Makefile renamed from powerpc/Makefile.orig +1 -1
Index: arch/powerpc/Makefile
===================================================================
@@ -148,7 +148,7 @@ all: $(KBUILD_IMAGE)
 
 CPPFLAGS_vmlinux.lds	:= -Upowerpc
 
-BOOT_TARGETS = zImage zImage.initrd uImage
+BOOT_TARGETS = zImage zImage.initrd uImage nuImage
 
 PHONY += $(BOOT_TARGETS)