[Mageia-dev] [ANN] unbloated installer stage1

Per Øyvind Karlsen peroyvind at mandriva.org
Tue Jan 24 22:03:06 CET 2012

Den 13:09 24. januar 2012 skrev Thierry Vignaud
<thierry.vignaud at gmail.com> følgende:
> Hi
> Over the years, stage1 (both  all.rdz, boot.iso, ...) got bigger & bigger:
> 10.0-10.1: 8Mo
> 10.2-2005: 15M      <=======
> 2006.0: 13M
> 2007.0: 14M
> 2007.1: 10M
> 2008.0-2008.1: 12M
> 2009.0: 26M      <=======
> 2009.1: 32M      <=======
> 2010.0: 33M
> 2010.1: 36M (37M on 64 bit)
> 2011   : 44M
> mga1  : 39M (40M on 64bit) (NEW: 53M on non-free 64 bit...)
> I've reduced this by:
> - removing alt1 (x86_64 only for now):
> - removing busybox
> - compressing initrd with XZ instead of gzip: only good on firmware
> - re compressing kernel modules with XZ instead of gzip:
lzma supports much bigger dictionaries than zlib, so in stead of
compressing the kernel modules individually, you'd achieve much better
compression by just letting them be compressed once as part
of the initrd as they'd all share one big dictionary. :)
lzma also has several options you may tune to improve compression even
> Removing alt1 (x86_64 only for now) saved 20Mb on boot.iso (50%)
> and on boot-nonfree.iso (43%).
> Removing busybox saved 1B (5.7% of all.rdz, 5% of boot.iso,
> 3.7% of boot-nonfree.iso)
Why not replace all the programs possible with busybox alternatives
and link everything against uClibc rather than glibc?
> Compressing initrd with XZ instead of gzip saved 2Mo (7.7%) on
> boot-nonfree.iso (better compressed firmwares).
avoiding compression of any individual files (not just kernel modules) and just
compress them all together once will help increase compression ratio.
> Re-compressing kernel modules with XZ instead of gzip saved -2.4Mb (15.9%)
> on all.rdz, -2Mb (10.5%) on boot.iso, -2mb on boot-nonfree.iso (8.3%)
> Total gain on boot.iso: -23Mb (57.5%) on x86_64 (less on i586)
> This should save space on ISOs too (we could save more by
> not including install/images on ISOs btw)
> There's a minor drawback: KA install won't work anymore but
> it's a niche. Is there someone using that feature?
> The proper way to support it would be to either:
> - have a stage1.5 for KA with busybox
> - include a static mke2fs (compiled against dietlibc)
compile everything against shared uClibc libraries in stead! :)
There might also be a gain in using the new x32abi introduced in
latest kernels..
> - disable KA support

To give an example, by applying these "tricks" to mkinitrd in the
past, I managed
to reduce it's size all the way down to just below 1MB (which also
added a full-featured
busybox build for rescue environment, going further and using a
minimal busybox build
and dropping plymouth I managed to push it further down to 100KB! :).

Per Øyvind

More information about the Mageia-dev mailing list