In case you haven’t read about it elsewhere, a new branch of the Linux kernel called -tiny was quietly released last month. Its main intent is for embedded systems, but I can see all sorts of uses for it. The smaller the kernel, the faster it loads off a floppy, so it’d be great for boot disks. Likewise for diskless machines that boot off the network.
Some people claim that compiling the kernel with the -Os parameter, as this branch permits, causes faster operation than compilations with the normal -O2. The theory is that the system spends more time in user space than in kernel space, and therefore, the kernel will almost never be in system cache, and therefore, the smaller it is, the faster it will operate. I’m sure someone who knows some specifics of how CPUs and caches work could validate or refute this. Even Steve DeLassus, who has both an electrical engineering and a computer science degree from one of the best universities in the world for that kind of thing, admits that sometimes these specifics get over his head. So if Steve doesn’t always know, then how am I supposed to know?
But the argument sounds good on paper.
With this kernel slimmed down as much as possible (no networking), it can boot in 2 megs. With networking, it can boot in 2.5 megs. With a comfortable set of features, it runs in 4-8 megs, which a mainline kernel doesn’t always do anymore.
Obviously, this is a perfect companion for projects like asmutils and uClibc/Busybox/Tinylogin.