Fedora Useless for Small Appliances

If you’re drinking the Fedora Moonshine, you’ll believe:

ISV building an
appliance product? Make an RPM, identify the minimal number of
packages needed for an appliance around that RPM, then build a
distro and a live image. Easy as moon pie.

The methanol in the Moonshine is the coarseness of package dependencies. Need grub in your appliance so you can do kernel updates? You have to take 6MB of Fedora artwork and the CUPS printing libraries. Don’t need kerberos? Too bad, you can’t get rid of it without just about everything else. The list goes on, every time I try to remove something I don’t need, I suddenly have to uninstall the kernel (OK, only sometimes, the rest of the time I have to sacrifice initscripts).

Installing a very ‘lean’ system, with just 16 out of 92 of the packages in the Base group with no other groups selected popped my distro up over 450MB. To add X11 and the driver for my card with Firefox topped a gig.

Installation on a small machine is even tough – at 256MB of RAM it wants to turn on swap immediately, and 512MB of disk wasn’t enough to install this sub-base system.

It’s too bad, I built a CD-boot network appliance based on a customized Redhat 9 distro (before the term LiveCD had been coined) and at that point things more much more rational. Sure, it’s more work to break a package down into its constituent parts and come up with real dependency trees, but that’s what a distro is for – so that kind of work is centralized. I can’t believe that somebody can’t come up with an automated way to build graphs of parts and dependencies (using ldd, CPAN, et. al.) and automatically divide software into optimal sub-packages. This sounds like a very normal topic for a masters’ thesis.

I was really hoping for great things from the automated LiveCD stuff, and revisor works quite well, but it solves package dependencies it’s told about by RPM, there’s not much it can do to help me out here.

I’ve also been playing with SLAX, which has all that stuff I need in the 1GB Fedora install and a bunch of crap I haven’t removed yet (like OpenOffice) in under 200MB on disk. I need to get this distro down to under 128MB for production of the appliance I’m building, which I can probably do with SLAX, though I haven’t explored it enough yet to be certain. The lack of package management and the lack of source for most modules that have been contributed makes SLAX a cool user distro, but hard for an embedded developer to embrace. I really do think it’s a well-designed fun little system though – it does alot the way I designed the aforementioned primordial network appliance I designed half a decade ago – and it aggressively tracks the 2.6 kernel which is great.

Tomorrow we try gentoo.