view www/index.html @ 31:3e2c3a3095d8

Update web page.
author Rob Landley <>
date Sun, 10 Dec 2006 23:31:28 -0500
parents bed493dc4358
children 21e058fa3676
line wrap: on
line source

<title>Firmware Linux</title>
<h1>Firmware Linux</h1>

<p><a href=>Changeset 27</a> builds
a relocatable armv4l cross-compile toolchain!  Download the tarball,
run ./, then run ./, then grab the "build/cross-compiler"
directory and use "bin/armv4l-unknown-linux-gnu-gcc" out of that (which
I admit is a bit of a mouthful, for which I blame the FSF).</p>

<b><h2>What is it?</h2></b>

<p>Firmware Linux is an embedded Linux distribution builder that creates a
bootable single file Linux system, based on uClibc and BusyBox/toybox.  It's
basically a shell script that builds a complete Linux system from source code.</p>

<p>FWL builds a cross-compiler and then uses it to build a minimal system
containing a native compiler, BusyBox and uClibc.  Then it runs this minimal
system under an emulator (QEMU) and natively builds the final system.  Finally
it packages the resulting system (kernel, initramfs, and root filesystem) into
one big bootable file.</p>

<p>Here is a description of <a href=design.html>the design of Firmware
Linux</a>.  That's the new (QEMU-based, capable of cross-compiling for non-x86)
design I'm working on now.  The old (UML-based, x86 only) design is described


<p>The current stuff is available from <a href=/hg/firmware>the mercurial
repository</a>.  That's the new (QEMU-based, capable of cross-compiling for
different hardware platforms) design I'm working on now, and where new
development happens.  To use it, download the tarball and run "./".</p>

<p>The old (UML-based, x86 only) design is still available from <a href=old>the
old website</a>, which is hideously out of date but contains a working
(ancient) version.</p>


<p>Here's a quick <a href=build-process.html>overview of the Firmware Linux
build process</a>.</p>

<p>Here is a description of <a href=design.html>the design of Firmware

<p>As always, read <a href=/notes.html>my development log</a> to see what I've
been up to on this project. 


<p>I've been working on this project on and off since 1999, it's what 
got me into BusyBox and uClibc and compilers and so on.  Now it's where I put
together everything else I'm doing (like toybox and tinygcc) to see what
actually works and give it a good stress-test.  (Eating your own dogfood,
and all that.)</p>

<p>When the Firmware Linux project started, busybox applets like sed and sort
weren't powerful enough to handle the "./configure; make; make install" of
packages like binutils or gcc.  Busybox was usable in an embedded router or
rescue floppy, but trying to get real work done with it revealed numerous
bugs and limitations.</p>

<p>So I spent about 3 years improving Busybox (and pestering other people into
improving their bits), and along the way accidentally become the BusyBox
maintainer (at least until the project's crazy-uncle founder showed up and
<a href=>drove me away again</a>).  The result
is that in Firmware Linux, Busybox now functions as an effective replacement
for bzip2, coreutils, diffutils, e2fsprogs, file, findutils, gawk, grep,
inetutils, less, modutils, net-tools, patch, procps, sed, shadow, sysklogd,
sysvinit, tar, util-linux, and vim.  I was in the process of writing a new
shell to replace bash with when I left.</p>

<p>Firmware Linux stalled while I was BusyBox maintainer (2005-2006) due to
lack of time, and since that ended most of my spare programming time has gone
into launching toybox.  But one of the main goals of toybox is to replace
BusyBox in Firmware Linux, so as toybox matures it'll naturally lead to more
of my time spent working on FWL.</p>

<p>My server does not currently run on Firmware Linux.  Making it do so
is a TODO item.  After that, I'd like to get it to the point where I can
use it on my laptop. :)</p>


<p>My name is Rob Landley and my email address is
My <a href=notes.html>development log</a> is probably the best way to keep
track of what I'm working on, although I'll start a mailing list if enough
people pester me.</p>

<p>I need to reorganize this web page.</p>