# HG changeset patch
# User Rob Landley FWL builds a cross-compiler and then uses it to build a minimal system with
-a native compiler, BusyBox and uClibc. Then it runs this minimal system
-under an emulator (QEMU) and natively builds the final system. It then
+ 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) to natively build the final system. Finally it
packages the resulting system (kernel, initramfs, and root filesystem) into
-a single file that can boot and run (using a modified version of LILO on
-x86).Executive summary
+
+
Firmware Linux builds in stages:
@@ -34,13 +35,13 @@ for the target.Because cross-compiling is persnickety and difficult, we do as little of -it as possible. We use the cross-compiler to generate a native build -environment for the target, and then run the rest of the build under an -emulator.
+it as possible. Instead we use the cross-compiler to generate the smallest +possible native build environment for the target, and then run the rest of the +build in that environment, under an emulator. -The minimal build environment you can boot into and build a complete Linux -system under is the Linux kernel, binutils, gcc, uClibc, BusyBox, make, and -bash. The emulator we use to run this is QEMU, so we build that too.
+The emulator we use is QEMU. The minimal build environment powerful enough +to boot and compile a complete Linux system requires seven packages: the Linux +kernel, binutils, gcc, uClibc, BusyBox, make, and bash.
A trick to accelerate the build is to use distcc to call out to the cross-compiler, feeding the results back into the emulator through the virtual -network. This is still a TODO item.
+network. (This is still a TODO item.)Stage 3 is a fairly straightforward Linux From Scratch approach, -except that we use BusyBox and uClibc in place of a couple dozen other -packages.
+except that we use BusyBox and uClibc instead of the gnu packages.