[OLPC-devel] Re: Not so good news (Was: good news)

Richard Smith smithbone at gmail.com
Sat Aug 5 06:36:00 EDT 2006


> Interesting.  I haven't seen that patch.  It does explain why we can't
> figure out the linux version.  I would actually have suspected a bzImage and
> a well compressed initramfs (cpio not built into the kernel) would have been
> smaller than nrv2b compression.

See a few messages back in this thread. You need the latest linuxbios
svn and the latest buildrom git pull.

> If there is truly a gain to doing compression like this?  nrv2b is a decent
> compressor but I think for large sizes gzip is probably the better compressor.
> I believe I have a formula for a compressor of arbitrary ELF executables
> if anyone is interested.  I have never seen the value in putting the decompressor
> in LinuxBIOS for this stuff.

Since Carl-Daniel is out for 2 weeks and unable to respond heres the
corresponding snips from this thread on the why of the nrv2b
compression.

Carl-Daniel:
=====
Since the ELF image (and mkelfImage) make handling of the payload
easier, I created a solution which still uses mkelfImage and saves
>20k. How?
The new ELF image is built from vmlinux (uncompressed) and initrd
(uncompressed). That saves us ~25k decompression code and ~5k 16bit
code. However, the resulting ELF image is *big*. To solve that
problem, the complete ELF image as a whole is compressed with nrv2b
(and nrv2b decompression is already supported in LinuxBIOS). While
nrv2b compression is less efficient than gzip compression, the loss
due to worse compression is only ~10k. The net effect of this change
is to save 20k.
=====

Which was later verifed:

=====
>>Also, when I did measure it, I found that
>>the size of (bzImage + gzip'ed initrd) was smaller than (nrv2b
>>compressed mkelfimage output with vmlinux and initrd). Maybe something
>>changed, but I would like to see the numbers one more time on final
>>output. So do a buildrom pass and let me know what you're seeing on olpc
>>.elf file vs. what you are doing. Final numbers of the payload, I mean.
>
> nrv2b(vmlinux + initrd.uncompressed):
> Payload 808426 (76310 bytes free in ROM)
>
> bzImage + initrd.gz:
> 825175 bytes (59561 bytes free in ROM)

> Thats a delta of 16k.35 Kbytes.
> Jordan

Although it looks like nrv2b will win :-)
good news, 16k is always welcome.
====

So thats why we are trying to make this work.

-- 
Richard A. Smith



More information about the Devel mailing list