Re: [PATCH -v1] MIPS: add support for gzip/bzip2/lzma compressed kernel images

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux