Hi,
On Mon, 2009-10-12 at 04:34 +0200, Ralf Baechle wrote:
> 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
>
Seems something wrong in the Makefile, will fix it later, here it is:
[...]
/bin/sh: 0x0xa80000000001c000: value too great for base (error token is
"0x0xa80000000001c000")
Building modules, stage 2.
AS arch/mips/boot/compressed/head.o
CC arch/mips/boot/compressed/decompress.o
GZIP arch/mips/boot/compressed/vmlinux.gz
CC arch/mips/boot/compressed/dbg.o
MODPOST 137 modules
CC arch/mips/boot/compressed/dummy.o
arch/mips/boot/compressed/head.S: Assembler messages:
arch/mips/boot/compressed/head.S:47: Error: Number (0xa800000000021bf0)
larger than 32 bits
[...]
> 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.
>
Okay, will fix it later.
> 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
This "parse error" will be fixed by tuning the Makefile via adding
something like " blabla 2>/dev/null".
> $
>
> 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.
> $
>
it should be
$ make zImage
will replace "vmlinuz - Compressed boot image" to "zImage - Compressed
boot image", or, fix "make vmlinuz" itself.
> > 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.
Okay, I will add a new kernel option for this, and also, the
DEBUG(dbg.[hc]) part will be selectable with a new kernel option too.
Thanks & Regards,
Wu Zhangjin
|