[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