On Mon, Aug 10, 2009 at 04:49:14PM +0800, Wu Zhangjin wrote: > This patch will help to generate smaller kernel images for linux-MIPS, > > Here is the effect when using lzma: > > $ ls -sh vmlinux > 7.1M vmlinux > $ ls -sh arch/mips/boot/compressed/vmlinuz > 1.5M arch/mips/boot/compressed/vmlinuz > > Have tested the 32bit kernel on Qemu/Malta and 64bit kernel on FuLoong > Mini PC. both of them work well. ip27_defconfig: CHK include/linux/compile.h (standard_in) 1: parse error (standard_in) 1: parse error AS arch/mips/boot/compressed/head.o arch/mips/boot/compressed/head.S: Assembler messages: arch/mips/boot/compressed/head.S:78: Error: Number (0xa800000000021bf0) larger than 32 bits make[1]: *** [arch/mips/boot/compressed/head.o] Error 1 rm200_defconfig: $ make [...] IHEX2FW firmware/whiteheat.fw IHEX2FW firmware/keyspan_pda/keyspan_pda.fw IHEX2FW firmware/keyspan_pda/xircom_pgs.fw [ralf@h5 linux-queue]$ ll vmlinuz lrwxrwxrwx 1 ralf ralf 33 2009-10-12 03:30 vmlinuz -> arch/mips/boot/compressed/vmlinuz* [ralf@h5 linux-queue]$ ll arch/mips/boot/compressed/vmlinuz -rwxrwxr-x 1 ralf ralf 1675346 2009-10-12 03:30 arch/mips/boot/compressed/vmlinuz* [ralf@h5 linux-queue]$ make distclean CLEAN arch/mips/boot (standard_in) 1: parse error [...] For rm200 we need an ECOFF zimage. malta_defconfig: $ mkdir ../build-malta $ make O=../build-malta malta_defconfig [...] $ cd ../build-malta $ make [...] $ make distclean make -C /home/ralf/src/linux/linux-queue O=/home/ralf/src/linux/build-malta/. distclean CLEAN arch/mips/boot (standard_in) 1: parse error $ By default we generate a binary that is not ELF file for malta, so a compressed kernel should be in that format also. $ make help [...] Architecture specific targets (mips): install - install kernel into /boot vmlinux.ecoff - ECOFF boot image vmlinux.bin - Raw binary boot image vmlinux.srec - SREC boot image vmlinuz - Compressed boot image [...] $ make vmlinuz make: *** No rule to make target `vmlinuz'. Stop. $ > diff --git a/arch/mips/Makefile b/arch/mips/Makefile > index 861da51..300b996 100644 > --- a/arch/mips/Makefile > +++ b/arch/mips/Makefile > @@ -709,7 +709,10 @@ vmlinux.64: vmlinux > > makeboot =$(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) $(1) > > -all: $(all-y) > +all: $(all-y) zImage > + > +zImage: vmlinux > + $(Q)$(MAKE) $(build)=arch/mips/boot/compressed $@ LOADADDR=$(load-y) Several systems rely on the firmware for memory usage information. With a compressed kernel this information will be inaccurate. This is a somewhat hard problem to solve so I suggest to only enable compressed kernels on systems where they're known to work. Ralf