In Building a builder for tiny lamps, I described my progress creating an environment for experimenting with Pile of Lamps.
That article left off with plans to build a working default distro with T2, then create a new minimalist target configuration.
Well, I did manage to get a working default distro.
On to creating my own target definition.
I created a new target, started the "death by build iterations", then ran into problems. I'll spare the ugly details, but suffice it to say I spent more time surfing through piles of shell build scripts than creating an actual distro.
This brings us to version 0.7 of my workbench. :-)
I'm still running VirtualBox, but am now using Buildroot, from the uClibc folks, for the toolchain. I used uClibc and BusyBox years ago, and was contemplating its use for this project anyway.
As an added bonus, the builds take considerably less time than with T2.
So where am I at now? Well, I have a booting CD image and am working through the details of turning it into an installation disk.
The CD iso image is just over 19MB, with an installation payload. I have plans to make it smaller. At around 4MB, the kernel modules in /lib/modules are a notable contributor to the size. The virtual machine environment provides a predictable list of required drivers, but I need to go through the exercise of trimming down the list in the kernel configuration.
As for problems, the only one I've run encountered thus far is the fact that Buildroot doesn't include a boot loader in the list of packages available for target environments. Hmm... It's intended for embedded environments, so I'm only mildly surprised. I managed to shoehorn in a statically compiled version of grub, so it's no big deal.
I have a preliminary root filesystem for the hard drive installation. It still needs work, but it's enough to boot from a virtual disk image in Virtualbox.
The current distro installed on a hard drive contains the following primary elements:
- Linux 2.6.23 (need to bump to latest patchlevel)
- uClibc 0.9.29
- Busybox 1.7.2 (not sure why it's not at 1.8.2)
The first order of business is to convert my hard drive installation notes into a script that runs from the CD boot.
I've started to add some additional packages.
installed, but it dumps core - investigating...
- and a scripting language
(sadly, the perl port is very minimal - will need to ponder)
- and a database
(still researching - berkeleydb and sqlite recipes are included in buildroot - will need to ponder)
I'm also considering trimming down some of the BusyBox applets enabled by default. This is not to reduce the size - it's more to reduce the number of moving parts. E.g. fdformat and unix2dos probably aren't necessary. It's questionable whether the filesystem creation utilities are needed as well. The original concept was to only provide enough to perform the task at hand.
With luck I'm hoping my next status update will report an alpha release CD-based installer that produces a ready-to-use minimal LAMP instance. Fun stuff...
I haven't yet decided on a name for the distribution. The tentative name is aloofix. I've love to hear recommendations for a better name.
More to come...
Until next time...