Mercurial > hg > aboriginal
changeset 167:fb85c94aabad
Forgot to add bits of the web page to the repository.
author | Rob Landley <rob@landley.net> |
---|---|
date | Tue, 01 May 2007 16:06:09 -0400 |
parents | 87feb7deddbc |
children | d7cae31e3876 |
files | www/about.html |
diffstat | 1 files changed, 84 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/about.html Tue May 01 16:06:09 2007 -0400 @@ -0,0 +1,84 @@ +<!--#include file="header.html" --> + +<h2>What is Firmware Linux?</h2> + +<p>Firmware Linux is build system that produces a bootable single file linux +system for various hardware platforms. Along the way, the build produces a +<a href=downloads/cross-compiler>relocatable cross compiler for the target +hardware</a>, and also a <a href=downloads/mini-native>native build +environment</a>.</p> + +<p>The build system is a series of shell scripts, which download, compile, +and use the appropriate source packages to generate the output files. These +shell scripts are written to be easily read and modified.</p> + +<p>The system built by these scripts consists of the following source +packages:</p> + +<ul> +<li>linux 2.6.21</li> +<li>busybox 1.2.2</li> +<li>uclibc 0.9.29</li> +<li>gcc 4.1.2</li> +<li>binutils 2.17</li> +<li>make 3.81</li> +<li>bash 2.05 b</li> +</li> + +<!-->[Note: this paragraph is a TODO item.] The final Firmware Linux image is one +file containing a kernel, +initramfs, +read-only root filesystem, and cryptographic signature. You can boot Linux +from this file as if it was a normal kernel image. (A slightly modified LILO +is used to do this on x86. Patches for other bootloaders are a to-do item.) +You can upgrade your entire OS (and any applications in the root filesystem) +atomically, by downloading a new file and pointing your bootloader at it.--!> + +<p>Firmware Linux is licensed under GPL version 2. Its component packages are +licensed under their respective licenses (mostly GPL and LGPL).</p> + +<h2>How do I use it?</h2> + +<p><b>build.sh</b>: Start here. This is the master script which runs all the +other build stages. It takes one argument, the platform to build for. (Run it +with no arguments to see a list of supported platforms.) The individual stage +scripts can also be run individually, with the same argument as build.sh.</p> + +<p><b>download.sh</b>: This script checks the sources/packages directory for +source tarballs, and downloads any that are missing or have invalid SHA1 +checksums. It also deletes any old files in sources/packages not used by the +current build version, and populates sources/build-links with +version-independent symlinks for use by later build stages.</p> + +<p><b>cross-compiler.sh</b>: This script produces a cross compiler for the +indicated target platform. The working copy is produced in the build +directory, and a copy is saved as "cross-compiler-$ARCH.tar.bz2" for use +outside the build system. This cross compiler is fully relocatable (using the +wrapper script in sources/toys/gcc-uClibc.c), so and any normal user can +extract it into their home directory, add cross-compiler-$ARCH/bin to their +$PATH, and run $ARCH-gcc to create target binaries. It contains gcc, binutils, +linux kernel headers, and the uClibc C library.</p> + +<p>The cross compiler script also builds squashfs tools, a target platform +emulator (QEMU), and uses the emulator to confirm that the cross compiler +works. This script can take an optional first argument, <b>--short</b>, to +skip those steps. This is useful if you want to build several cross compilers +without multiple copies of QEMU. (The short build will also delete the +build/cross-compiler-$ARCH directory after tarring it up, since the result +isn't usable by later build stages.)</p> + +<p><b>mini-native.sh</b>: This script uses the cross compiler to create +a minimal native build environment for the target platfrom. This native +environment consists of just seven packages: busybox, uClibc, the linux kernel, +gcc, binutils, make, and bash. This is a fully self-hosting development +environment, capable of rebuilding itself from source code, organized as a +<a href=http://www.linuxfromscratch.org>Linux From Scratch</a> /tools +directory. It also produces a bootable Linux kernel for the target platform, +and packages the /tools directory as a squashfs image for use by QEMU.</p> + +<p><b>package-mini-native.sh</b>: This script creates an ext2 filesystem image +for use with qemu. It currently does this using a User Mode Linux image +created by the host-tools.sh script.</p> + +<p><b>More to come...</b></p> +<!--#include file="footer.html" -->