changeset 881:0da87d1ef528

Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
author Rob Landley <rob@landley.net>
date Sun, 08 Nov 2009 21:02:19 -0600
parents b0aeb3446aa5
children d81382a8bb66
files www/about.html www/architectures.html www/documentation.html www/footer.html www/header.html www/history.html www/index.html www/news.html www/screenshots/index.html
diffstat 9 files changed, 477 insertions(+), 61 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/about.html	Sun Nov 08 21:02:19 2009 -0600
@@ -0,0 +1,53 @@
+<!--#include file="header.html" -->
+
+<h2><a href=news.html>News: 0.9.8 released November 7, 2009</a></h2>
+
+<b><h1><a href=documentation.html>What is Firmware Linux?</a></h1></b>
+
+<blockquote>
+<p>Firmware Linux is an embedded Linux build system, designed to eliminate
+the need for cross compiling.</p>
+
+<p>The build system is a series of bash scripts which create a small native
+Linux development environment for each target, runnable on real hardware or
+under emulators such as <a href=http://qemu.org>QEMU</a>.</p>
+
+<p>Currently supported targets include arm, mips, powerpc, x86, and x86-64.
+Partial support is available for sparc, sh4, and m68k.</p>
+
+<p>For more information, see <a href=documentation.html>the documentation
+page</a>.</p>
+</blockquote>
+
+<b><h1><a href=downloads>Downloading Firmware Linux</a></h1></b>
+
+<blockquote>
+<b><h2><a href=downloads>Source Code</a></h2></b>
+<p>The current source tarball is
+<a href=downloads/firmware-0.9.7.tar.bz2>Firmware Linux version 0.9.7</a>.
+This is the series of shell scripts you run to create the various binary
+images.  See the <a href=downloads/README>README</a> for usage instructions,
+and the <a href=news.html>release notes</a>.</p>
+
+<p>Several <a href=downloads/binaries>prebuilt binary images</a>
+are available, based on the current Firmware Linux release.  The
+<a href=downloads/README>README</a> describes each tarball.  The
+release notes on the <a href=news.html>news page</a> explain recent
+changes.</p>
+
+</blockquote>
+
+<b><h1><a href=/hg/firmware>Development</a></h1></b>
+
+<p>The project maintains a <a href=/hg/firmware>development repository</a>
+using the Mercurial source control system.  This includes RSS feeds for
+<a href=/hg/firmware/rss-log>each checkin</a>
+and for <a href=/hg/firmware/rss-tags>new releases</a>.</p>
+
+<p>Questions about Firmware Linux should be addressed to the project's
+<a href=http://lists.impactlinux.com/listinfo.cgi/firmware-impactlinux.com>mailing
+list</a>, or the IRC channel #firmware on irc.freenode.org.  The project
+maintainer's <a href=http://landley.net/notes.html>blog</a> often includes notes about
+ongoing Firmware Linux development.</p>
+
+<!--#include file="footer.html" -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/architectures.html	Sun Nov 08 21:02:19 2009 -0600
@@ -0,0 +1,107 @@
+<html>
+<title>Target architectures</title>
+<body>
+
+<!--#include file="header.html" -->
+
+<hr /><h1><a name="arm" \><center>ARM</center></h1>
+
+<p>The ARM processor is popular in the embedded space because it has the best
+power consumption to performance ratio, meaning it has the longest battery
+life and smallest amount of heat generated for a given computing task.</p>
+
+<h2>Processor vs archtecture</h2>
+
+<p>Although ARM hardware has many different processor designs with varying
+clock speeds, cache sizes, and integrated peripherals, from a software
+perspective what matters is ARM
+<a href=http://www.arm.com/products/CPUs/architecture.html>architectures</a>, which are the different
+instruction sets a compiler can produce.  The architecture names have a "v"
+in them and the processor designs don't, so "ARM922T" is a hardware processor
+design which implements the "ARMv4T" software instruction set.</p>
+
+<p>The basic architectures are numbered: ARMv3, ARMv4, ARMv5, ARMv6, and
+ARMv7.  An ARMv5 capable processor can run ARMv4 binaries, ARMv6 can run ARMv5,
+and so on.  Each new architecture is a superset of the old ones, and the main
+reason to compile for newer platforms is efficiency: faster speed and better
+battery life.  (I.E. they work about like i386, i486, i586, and i686 do in
+the x86 world.  Recompiling ARMv4 code to ARMv5 code provides about a 25%
+speedup on the same hardware.)</p>
+
+<p>The oldest architecture this compatability goes back to is ARMv3 (which
+introduced 32-bit addressing), but that hardware is now obsolete.  (Not just no
+longer being sold, but mostly cycled out of the installed base.)  The oldest
+architecture still in use is "ARMv4", which should run on any ARM hardware
+still in use today (except ARMv7M, which is ARM in name only).</p>
+
+<h2>Architecture extensions</h2>
+
+<p>ARM architectures can have several instruction set extensions, indicated
+by letters after the ARMv# part.  Some (such as the letter "E" denoting the
+"Jazelle" bytecode interpreter, which provides hardware acceleration for
+running Java bytecode) can safely be ignored if you're not using them, and
+others are essentially always there in certain architectures (such as the DSP
+extension signified by the letter "E" which always seems to be present in
+ARMv5).  But some are worth mentioning:</p>
+
+<p>The "Thumb" extension (ARMv4T) adds
+a smaller instruction set capable of fitting more code in a given amount
+of memory.  Unfortunately thumb instructions sometimes run more slowly, and
+the instruction set isn't complete enough to implement a kernel, so they
+supplement rather than replace the conventional ARM instruction set.  Note
+that all ARMv5 and later processors include Thumb support by default, only
+ARMv4T offers it as an extension.  Also, a new "Thumb2" fixes most of the
+deficiencies of the original Thumb, and is part of the ARMv7 architecture.</p>
+
+<p>The VFP (Vector Floating Point) coprocessor provides hardware floating
+point acceleration.  There are some older hardware floating point options,
+and some newer ones backwards compatible with VFP, but in general you can
+treat a chip as either "software floating point" or "VFP".</p>
+
+<p>The other detail is "l" vs "b" for little-endian and big-endian.
+In theory ARM can do both (this is a compiler distinction, not a hardware
+distinction), but in practice little-endian is almost universally
+used on ARM, and most boards are wired up to support little-endian only even if
+the processor itself can theoretically handle both.</p>
+
+<p>So for example, "armv4tl" is ARMv4 with Thumb extensions, little endian.</p>
+
+<h2>Application Binary Interface</h2>
+
+<p>Linux initially implemented a somewhat ad-hoc ABI for ARM with
+<a href=http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Why-ARMs-EABI-matters/>poor
+performance and several limitations</a>, and when ARM got around to documenting
+a new one the main downside was that it was incompatible with the old
+binaries.</p>
+
+<p>So ARM has two ABIs that can run on the same hardware, the old one is
+called OABI and the new one is
+<a href=http://wiki.debian.org/ArmEabiPort>EABI</a>.  (This is a bit like
+the way BSD binaries won't run under Linux even though the hardware's the
+same, or the long ago switch from
+<a href=http://www.linuxjournal.com/article/1059>aout to ELF</a> executable
+formats.</p>
+
+<p>The oldest hardware that can run EABI is ARMv4T, so ARMv4 hardware
+without the Thumb extensions still has to use OABI.  (The kernel, C
+library, and compiler must all agree which ABI is in use or the binaries
+won't run.)</p>
+
+<h2>Further Reading</h2>
+
+<p>In theory the best reference for ARM processors is the
+<a href=http://www.arm.com>website of ARM Limited</a>, but unfortunately
+they make it somewhat hard to find information about their
+<a href=http://www.arm.com/products/CPUs/ARM920T.html>older products</a>
+and <a href=http://www.arm.com/products/CPUs/families/ARM7Family.html>many
+of their pages</a> are more concerned with advertising their newest products
+than giving the requested information.  Wikipedia may be less frustrating,
+and occasionally even accurate.</p>
+
+<hr /><h1><a name="mips" \><center>ARM</center></h1>
+<hr /><h1><a name="powerpc" \><center>ARM</center></h1>
+<hr /><h1><a name="sh" \><center>ARM</center></h1>
+<hr /><h1><a name="sparc" \><center>ARM</center></h1>
+<hr /><h1><a name="x86" \><center>ARM</center></h1>
+
+<!--#include file="footer.html" -->
--- a/www/documentation.html	Sun Nov 08 16:05:48 2009 -0600
+++ b/www/documentation.html	Sun Nov 08 21:02:19 2009 -0600
@@ -1,3 +1,5 @@
+<!--#include file="header.html" -->
+
 <h1>Documentation for Firmware Linux</h1>
 
 <p>Note, this documentation is currently under construction.  This is three
@@ -2024,3 +2026,5 @@
 you have a brick.)</p>
 
 -->
+
+<!--#include file="footer.html" -->
--- a/www/footer.html	Sun Nov 08 16:05:48 2009 -0600
+++ b/www/footer.html	Sun Nov 08 21:02:19 2009 -0600
@@ -1,7 +1,5 @@
 </td></tr></table>
 <hr />
 <table width="100%">
-<tr><td>Copyright 2002, 2008 Rob Landley &lt;rob@landley.net&gt;</td></tr>
+<tr><td>Copyright 2002, 2009 Rob Landley &lt;rob@landley.net&gt;</td></tr>
 </table>
-</body>
-</html>
--- a/www/header.html	Sun Nov 08 16:05:48 2009 -0600
+++ b/www/header.html	Sun Nov 08 21:02:19 2009 -0600
@@ -1,9 +1,4 @@
-<html>
-<head>
-<title>Firmware Linux</title>
-</head>
-<body>
-<table border=0 cellpadding=0 cellspacing=0>
+<table border=0 cellpadding=4 cellspacing=0>
 <tr><td>
   <table border=0 cellspacing=1 cellpadding=4>
     <tr><td><h1>Firmware Linux</h1></td></tr>
@@ -13,8 +8,9 @@
 <tr><td valign=top>
   <b>About</b>
   <ul>
-    <li><a href="index.html">Intro</a></li>
     <li><a href="news.html">News</a></li>
+    <li><a href="about.html">About</a></li>
+    <li><a href="screenshots">Screenshots</a></li>
     <li><a href="documentation.html">Documentation</a></li>
     <li><a href="downloads/README">README</a></li>
   </ul>
@@ -22,12 +18,13 @@
   <ul>
     <li><a href="/hg/firmware">Mercurial Repository</a></li>
     <li><a href="downloads">Release Tarballs</a></li>
+    <li><a href="downloads/binaries">Prebuilt Binaries</a></li>
   </ul>
   <b>Development</b>
   <ul>
+    <li><a href="http://lists.impactlinux.com/listinfo.cgi/firmware-impactlinux.com">Mailing List</a></li>
+    <li>IRC #edev on irc.freenode.org</li>
     <li><a href="http://landley.net/notes.html">Maintainer's Blog</a></li>
-    <li><a href="http://lists.impactlinux.com/listinfo.cgi/firmware-impactlinux.com">Mailing List</a></li>
-    <li>IRC #firmware on irc.freenode.org</li>
   </ul>
 </td>
 
--- a/www/history.html	Sun Nov 08 16:05:48 2009 -0600
+++ b/www/history.html	Sun Nov 08 21:02:19 2009 -0600
@@ -1,5 +1,7 @@
 <title>History of Firmware Linux</title>
 
+<!--#include file="header.html" -->
+
 <h1>Where did "Firmware Linux" come from?  Our story so far...</h1>
 
 <p>My name is Rob Landley, and I've been working on Firmware Linux on and off
--- a/www/index.html	Sun Nov 08 16:05:48 2009 -0600
+++ b/www/index.html	Sun Nov 08 21:02:19 2009 -0600
@@ -1,49 +1,1 @@
-<h2><a href=news.html>News: 0.9.8 released November 7, 2009</a></h2>
-
-<b><h1><a href=documentation.html>What is Firmware Linux?</a></h1></b>
-
-<blockquote>
-<p>Firmware Linux is an embedded Linux build system, designed to eliminate
-the need for cross compiling.</p>
-
-<p>The build system is a series of bash scripts which create a small native
-Linux development environment for each target, runnable on real hardware or
-under emulators such as <a href=http://qemu.org>QEMU</a>.</p>
-
-<p>Currently supported targets include arm, mips, powerpc, x86, and x86-64.
-Partial support is available for sparc, sh4, and m68k.</p>
-
-<p>For more information, see <a href=documentation.html>the documentation
-page</a>.</p>
-</blockquote>
-
-<b><h1><a href=downloads>Downloading Firmware Linux</a></h1></b>
-
-<blockquote>
-<b><h2><a href=downloads>Source Code</a></h2></b>
-<p>The current source tarball is
-<a href=downloads/firmware-0.9.7.tar.bz2>Firmware Linux version 0.9.7</a>.
-This is the series of shell scripts you run to create the various binary
-images.  See the <a href=downloads/README>README</a> for usage instructions,
-and the <a href=news.html>release notes</a>.</p>
-
-<p>Several <a href=downloads/binaries>prebuilt binary images</a>
-are available, based on the current Firmware Linux release.  The
-<a href=downloads/README>README</a> describes each tarball.  The
-release notes on the <a href=news.html>news page</a> explain recent
-changes.</p>
-
-</blockquote>
-
-<b><h1><a href=/hg/firmware>Development</a></h1></b>
-
-<p>The project maintains a <a href=/hg/firmware>development repository</a>
-using the Mercurial source control system.  This includes RSS feeds for
-<a href=/hg/firmware/rss-log>each checkin</a>
-and for <a href=/hg/firmware/rss-tags>new releases</a>.</p>
-
-<p>Questions about Firmware Linux should be addressed to the project's
-<a href=http://lists.impactlinux.com/listinfo.cgi/firmware-impactlinux.com>mailing
-list</a>, or the IRC channel #firmware on irc.freenode.org.  The project
-maintainer's <a href=http://landley.net/notes.html>blog</a> often includes notes about
-ongoing Firmware Linux development.</p>
+news.html
\ No newline at end of file
--- a/www/news.html	Sun Nov 08 16:05:48 2009 -0600
+++ b/www/news.html	Sun Nov 08 21:02:19 2009 -0600
@@ -1,3 +1,5 @@
+<!--#include file="header.html" -->
+
 <b><h1>News</h1></b>
 
 <h2>November 7, 2009</h2>
@@ -762,3 +764,5 @@
 
 <h2>August 6, 2006</h2>
 <p>Mecurial repository created.  Nothing to see yet, move along...</p>
+
+<!--#include file="footer.html" -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/screenshots/index.html	Sun Nov 08 21:02:19 2009 -0600
@@ -0,0 +1,299 @@
+<html>
+<title>Available Targets</title>
+<body>
+<p>Each $TARGET includes some or all of the following links.  Click on
+the link name to get a description.</p>
+<ul>
+<li><a href="#screenshot">Screenshot</a></li>
+<li><a href="#crosscompiler">Cross Compiler</a></li>
+<li><a href="#nativecompiler">Native Compiler</a></li>
+<li><a href="#rootfilesystem">Root Filesystem</a></li>
+<li><a href="#systemimage">System Image</a></li>
+<li><a href="#busybox">Static Busybox Binary</a></li>
+<li><a href="#dropbear">Static Dropbear Binary</a></li>
+<li><a href="#strace">Static Strace Binary</a></li>
+</ul>
+
+<table>
+<tr>
+<td colspan=100%>
+<hr /><h1><center><a href="../architectures.html#arm">ARM</a></center></h1>
+<hr />
+</td>
+</tr>
+
+<tr>
+
+<td>
+<center>
+<h2>ARMv4l</h2>
+<p>ARMv4, little endian, soft float, OABI</p>
+<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre>
+<!--#include file="screenshot-armv4l.html" -->
+</pre></font></td></tr></table>
+</center>
+</td>
+
+<td>
+<ul>
+<li><a href=screenshot-armv4l.txt>screenshot</a></li>
+<li><a href=cross-compiler-armv4l.tar.bz2>cross compiler</a></li>
+<li><a href=native-compiler-armv4l.tar.bz2>native compiler</a></li>
+<li><a href=root-filesystem-armv4l.tar.bz2>root filesystem</a></li>
+<li><a href=system-image-armv4l.tar.bz2>system image</a></li>
+<hr />
+<li><a href=busybox-armv4l>busybox binary</a></li>
+<li><a href=dropbearmulti-armv4l>dropbear binary</a></li>
+<li><a href=strace-armv4l>strace binary</a></li>
+</ul>
+</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>
+<h2>ARMv4tl</h2>
+<p>ARMv4t, little endian, soft float, EABI</p>
+<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre>
+<!--#include file="screenshot-armv4tl.html" -->
+</pre></font></td></tr></table>
+</center>
+</td>
+
+<td>
+<ul>
+<li><a href=screenshot-armv4tl.txt>screenshot</a></li>
+<li><a href=cross-compiler-armv4tl.tar.bz2>cross compiler</a></li>
+<li><a href=native-compiler-armv4tl.tar.bz2>native compiler</a></li>
+<li><a href=root-filesystem-armv4tl.tar.bz2>root filesystem</a></li>
+<li><a href=system-image-armv4tl.tar.bz2>system image</a></li>
+<hr />
+<li><a href=busybox-armv4tl>busybox binary</a></li>
+<li><a href=dropbearmulti-armv4tl>dropbear binary</a></li>
+<li><a href=strace-armv4tl>strace binary</a></li>
+</ul>
+</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>
+<h2>ARMv5l</h2>
+<p>ARMv5, little endian, VFP, EABI</p>
+<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre>
+<!--#include file="screenshot-armv5l.html" -->
+</pre></font></td></tr></table>
+</center>
+</td>
+
+<td>
+<ul>
+<li><a href=screenshot-armv5l.txt>screenshot</a></li>
+<li><a href=cross-compiler-armv5l.tar.bz2>cross compiler</a></li>
+<li><a href=native-compiler-armv5l.tar.bz2>native compiler</a></li>
+<li><a href=root-filesystem-armv5l.tar.bz2>root filesystem</a></li>
+<li><a href=system-image-armv5l.tar.bz2>system image</a></li>
+<hr />
+<li><a href=busybox-armv5l>busybox binary</a></li>
+<li><a href=dropbearmulti-armv5l>dropbear binary</a></li>
+<li><a href=strace-armv5l>strace binary</a></li>
+</ul>
+</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>
+<h2>ARMv6l</h2>
+<p>ARMv6, little endian, VFP, EABI</p>
+<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre>
+<!--#include file="screenshot-armv6l.html" -->
+</pre></font></td></tr></table>
+</center>
+</td>
+
+<td>
+<ul>
+<li><a href=screenshot-armv6l.txt>screenshot</a></li>
+<li><a href=cross-compiler-armv6l.tar.bz2>cross compiler</a></li>
+<li><a href=native-compiler-armv6l.tar.bz2>native compiler</a></li>
+<li><a href=root-filesystem-armv6l.tar.bz2>root filesystem</a></li>
+<li><a href=system-image-armv6l.tar.bz2>system image</a></li>
+<hr />
+<li><a href=busybox-armv6l>busybox binary</a></li>
+<li><a href=dropbearmulti-armv6l>dropbear binary</a></li>
+<li><a href=strace-armv6l>strace binary</a></li>
+</ul>
+</center>
+</td>
+</tr>
+
+<tr>
+<td colspan=100%>
+<hr /><h1><center>i686</center></h1><hr />
+</td>
+</tr>
+
+
+
+<tr>
+
+<td>
+<center>
+<h2>i686</h2>
+<table bgcolor=#000000><tr><td><font color=#ffffff size=-2><pre>
+<!--#include file="screenshot-i686.html" -->
+</pre></font></td></tr></table>
+</center>
+</td>
+
+<td>
+<ul>
+<li><a href=screenshot-i686.txt>screenshot</a></li>
+<li><a href=cross-compiler-i686.tar.bz2>cross compiler</a></li>
+<li><a href=native-compiler-i686.tar.bz2>native compiler</a></li>
+<li><a href=root-filesystem-i686.tar.bz2>root filesystem</a></li>
+<li><a href=system-image-i686.tar.bz2>system image</a></li>
+
+<hr />
+
+<li><a href=i686-busybox>busybox binary</a></li>
+<li><a href=i686-dropbearmulti>dropbear binary</a></li>
+<li><a href=i686-strace>strace binary</a></li>
+</ul>
+</center>
+</td>
+
+</tr>
+</table>
+
+
+
+
+<ul>
+<hr />
+<li>
+<p><a name="screenshot" /><b>Screenshot</b> - The boot messages produced by launching this system
+image under qemu (using the "run-emulator.sh" script included in each system
+image tarball), and then typing "cat /proc/cpuinfo" inside the emulated system.</p>
+</li>
+
+<hr />
+
+<li>
+<p><a name="crosscompiler" /><b>Cross Compiler</b> - A compiler which runs on a standard PC host (x86
+or x86-64 Linux system) and produces output binaries for the specified $TARGET
+architecture (Linux binaries linked against uClibc).  To use, extract the
+tarball and add its "bin" subdirectory to your $PATH, and then compile
+with $TARGET-cc as your compiler name, such as:</p>
+
+<blockquote>
+<pre>
+mips-cc root-filesystem-mips/usr/src/thread-hello2.c -lpthread -static -o hello
+</pre>
+</blockquote>
+
+<p>The "bin" subdirectory contains a bunch of tools prefixed with the $TARGET
+name followed by a dash, such as "powerpc-strip".  The "lib" subdirectory
+contains shared libraries built for the target, including uClibc as the
+standard C library to link binaries against and uClibc++ as the standard
+C++ library.  The "include" subdirectory contains the header files
+#included by programs.</p>
+</li>
+
+<hr />
+
+<li>
+<p><a name="nativecompiler" /><b>Native Compiler</b> - A compiler which runs on the $TARGET and
+produces output binaries which also run on the $TARGET.</p>
+
+<p>You should be able to extract this inside an existing target system, add
+its "bin" directory to the $PATH, and use it as you would the cross compiler.
+(Except its binaries have no $TARGET- prefixes.)</p>
+</li>
+
+<hr />
+
+<li>
+<p><a name="rootfilesystem" /><b>Root Filesystem</b> - A root filesystem for the target, suitable for
+chroot-ing into, containing the smallest/simplest Linux development environment
+capable of rebuilding itself from source code.</p>
+
+<p>This system is based on busybox and uClibc, includes a native compiler
+toolchain (binutils, gcc, linux headers), additional development utilities
+(make, bash, distcc), and miscelaneous files and directories (such as some /etc
+files and an sbin/init.sh boot script).</p>
+</li>
+
+<hr />
+
+<li>
+<p><a name="systemimage" /><b>System Image</b> - A bootable linux kernel and filesystem image
+configured for use with the emulator QEMU.</p>
+
+<p>The filesystem image contains the same set of files as the root filesystem
+tarball, this time packaged into a squashfs.  It also has Linux kernel
+configured for qemu, and shell scripts to launch qemu to run this kernel
+with this filesystem image.</p>
+</li>
+
+<hr />
+
+<li>
+<p><a name="busybox" /><b>Static Busybox Binary</b> - Busybox implements
+hundreds of standard [LINK] command line utilities in a single binary,
+generally smaller than one megabyte.</p>
+
+<p>Busybox is a "swiss army knife" binary, which behaves differently based on
+the name of its executable.  This means that populating a directory of
+symlinks to the busybox binary can provide access to all these commands
+without requiring multiple copies of the binary.</p>
+
+<p>This binary is statically linked against uClibc, so can be run
+independently on a target system, in a chroot environment, or via QEMU
+application emulation.</p>
+</li>
+
+<hr />
+
+<li>
+<p><a name="dropbear" /><b>Static Dropbear Binary</b> - Dropbear is
+a combination ssh server and client (and scp, and an encryption key generator)
+in a single executable (another "swiss army knife" binary) that weighs in at
+around 100k.</p>
+
+<p>This binary is statically linked against uClibc for maximum
+portability.</p>
+</li>
+
+<hr />
+
+<li>
+<p><a name="strace" /><b>Static Strace Binary</b> - Strace is a
+debugging tool that runs a child process, sniffing all the child's
+system calls and printing a description of them to stderr, ala:</p>
+
+<blockquote>
+<pre>
+execve("/bin/false", ["false"], [/* 34 vars */]) = 0
+brk(0)                                  = 0x14ca000
+mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb
+e69a44000
+access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
+...
+</pre>
+</blockquote>
+
+<p>And so on.  If a binary is failing or hanging, strace can give you an
+idea of what it's doing, at least when it interacts with the rest of the
+system.</p>
+
+<p>This binary is statically linked against uClibc for maximum portability.</p>
+</li>
+</ul>
+
+</body>
+</html>