Re: [Q] TinyLinux project status (resend)


Rob Landley
 

On 04/24/2012 03:06 PM, Ezequiel GarcĂ­a wrote:
Hi,

2012/4/24 Gustavo Sverzut Barbieri <barbieri@...>:
It seems Linux is not aiming that low after all, however a little
effort to try to un-bloat the current
state of things can't hurt, right?
Do you know the state of uCLinux, when those options are enabled it
should be better, no? Or 1.5Mb is with such options?
To avoid confusion: uclinux is basically a linux distribution; it is
made of a linux kernel and a filesystem.
The kernel included in latest uclinux distribution file is 3.x series,
and it is pretty much equally to a vanilla
kernel (as compiled from git).

So, when compiling for m68k (coldfire) with just the bare minimum
options enabled: block layer, console drivers,
romfs, I got a 1.5 MB kernel. I was shocked by the bigness of the
number, but it doesn't seem to be easily
reduced.
Different processors have different machine code, some of which is more
space-efficient than others.

My Aboriginal Linux project cross compiles the same ~7 packages to a
dozen different targets (with the goal of getting a native development
environment you can run under qemu). I post binaries at
http://landley.net/aboriginal/bin and here are the sizes of a few files
from the root-filesystem tarballs under different architectures:

456432 root-filesystem-armv5l/bin/busybox
209600 root-filesystem-armv5l/bin/make
335484 root-filesystem-armv5l/lib/libuClibc-0.9.32.1.so
539015 root-filesystem-armv5l/usr/tools/bin/gcc

354308 root-filesystem-i586/bin/busybox
179216 root-filesystem-i586/bin/make
273640 root-filesystem-i586/lib/libuClibc-0.9.32.1.so
475934 root-filesystem-i586/usr/tools/bin/gcc

358996 root-filesystem-i686/bin/busybox
187952 root-filesystem-i686/bin/make
281832 root-filesystem-i686/lib/libuClibc-0.9.32.1.so
474169 root-filesystem-i686/usr/tools/bin/gcc

448708 root-filesystem-m68k/bin/busybox
220264 root-filesystem-m68k/bin/make
424756 root-filesystem-m68k/lib/libuClibc-0.9.32.1.so
489885 root-filesystem-m68k/usr/tools/bin/gcc

659504 root-filesystem-mips/bin/busybox
304204 root-filesystem-mips/bin/make
464632 root-filesystem-mips/lib/libuClibc-0.9.32.1.so
579962 root-filesystem-mips/usr/tools/bin/gcc

476852 root-filesystem-powerpc/bin/busybox
222124 root-filesystem-powerpc/bin/make
341680 root-filesystem-powerpc/lib/libuClibc-0.9.32.1.so
487931 root-filesystem-powerpc/usr/tools/bin/gcc

388252 root-filesystem-sh4/bin/busybox
202036 root-filesystem-sh4/bin/make
310628 root-filesystem-sh4/lib/libuClibc-0.9.32.1.so
210712 root-filesystem-sh4/usr/tools/bin/gcc

482168 root-filesystem-sparc/bin/busybox
228876 root-filesystem-sparc/bin/make
358432 root-filesystem-sparc/lib/libuClibc-0.9.32.1.so
524888 root-filesystem-sparc/usr/tools/bin/gcc

464544 root-filesystem-x86_64/bin/busybox
215808 root-filesystem-x86_64/bin/make
364992 root-filesystem-x86_64/lib/libuClibc-0.9.32.1.so
634843 root-filesystem-x86_64/usr/tools/bin/gcc

Note how the sizes are all over the place for the same tools built in
the same configuration by the same compiler version, just for different
targets. I put both i586 and i686 in there to show how much variation
you can get between minor architecture variants.

Also, what format is that kernel in? If it's vmlinux, that's A) not
compressed B) has some ELF overhead.

And we are not even talking about dynamic footprint, or filesystem requirements!
True. There's probably a lot that can get chopped out of there.

Rob
--
GNU/Linux isn't: Linux=GPLv2, GNU=GPLv3+, they can't share code.
Either it's "mere aggregation", or a license violation. Pick one.

Join Celinux-dev@lists.celinuxforum.org to automatically receive all group messages.