|  | <!--#include file="header.html" --> | 
|  |  | 
|  | <h2><a name="what" />What is ToyBox?</h2> | 
|  |  | 
|  | <p>The goal of the Toybox project is to create simple implementations of all | 
|  | the important Linux command line utilities.  These implementations should | 
|  | be small (the entire project should total less than a megabyte, uncompressed), | 
|  | fast, simple, and correctly implemented (which is related to standards | 
|  | compliance, but isn't quite the same thing).  Click for | 
|  | <a href="design.html">more about the design goals</a></p> | 
|  |  | 
|  | <p>Toybox has configurable levels of functionality, and should scale from tiny | 
|  | embedded systems up to full general purpose desktop and development | 
|  | environments.  The author plans to run it on his laptop, and the | 
|  | <a href=/code/firmware>Firmware Linux</a> project is trying to get a complete | 
|  | Linux system to rebuild itself from source code using toybox.</p> | 
|  |  | 
|  | <p>Toybox is <a href=license.html>Licensed under GPL version 2</a>.</p> | 
|  |  | 
|  | <p>Toybox can be built as a single "swiss army knife" executable (ala BusyBox | 
|  | or Red Hat's Nash), or each command can be built as a traditional independent | 
|  | executable.</p> | 
|  |  | 
|  | <b><h2><a name="status" />What commands are implemented?</h2></b> | 
|  |  | 
|  | <p>The current list of commands implemented by toybox is at the top of the | 
|  | <a href=news.html>news page</a></p>.  That list is updated when new commands | 
|  | go in.</p> | 
|  |  | 
|  | <p>In general, configuring toybox for "defconfig" enables all the commands | 
|  | compete enough to be useful.  Configuring "allyesconfig" enables partially | 
|  | implemented commands as well.</p> | 
|  |  | 
|  | <p>The following commands are incomplete, but demonstrate some basic | 
|  | functionality: bzcat/bunzip2, help, mke2fs, sh/toysh, mdev.</p> | 
|  |  | 
|  | <p>The following are partially implemented commands that don't actually do | 
|  | anything yet: mke2fs.</p> | 
|  |  | 
|  | <p>Several toybox commands can do things other vesions can't.  For example:</p> | 
|  |  | 
|  | <p>The toybox "df" isn't confused by initramfs the way other df implementations | 
|  | are.  If initramfs is visible, df shows it like any other mount point.</p> | 
|  |  | 
|  | <p>The toybox "touch" command has a -l option to set the length of a file. | 
|  | This can truncate a file, or create completely sparse files.</p> | 
|  |  | 
|  | <b><h3>Command Shell</h3></b> | 
|  | <p>The Toybox Shell (toysh) aims to be a reasonable bash replacement.  It | 
|  | implements the "sh" and "toysh" commands, plus the built-in commands "cd" and | 
|  | "exit".  This is the largest single sub-project in toybox.</p> | 
|  |  | 
|  | <p>The following additional commands may be built into the shell (but not as | 
|  | separate executables): cd, exit, if, while, for, function, fg, bg, jobs, source, | 
|  | <a href="http://www.opengroup.org/onlinepubs/009695399/utilities/alias.html">alias</a>, | 
|  | export, set, unset, read, trap, and exec.  (Note: not done yet.)</p> | 
|  |  | 
|  | </ul> | 
|  |  | 
|  | <h2><a name="commands" />Which commands are planned?</h2> | 
|  |  | 
|  | <p>The toybox <a href=todo.txt>todo list</a> mentions many potential commands | 
|  | which may be added to this project.  (Whether that file is readable by anybody | 
|  | but the project's maintainer is open to debate.)</p> | 
|  |  | 
|  | <p>The criteria for a toybox 1.0 release is that a system built from just the | 
|  | Linux kernel, toybox, uClibc, and a compiler (such as tinycc) can rebuild | 
|  | itself from source code.</p> | 
|  |  | 
|  | <b><h3>Relevant Standards</h3></b> | 
|  |  | 
|  | <p>Most commands are implemented according to | 
|  | <a href=http://www.opengroup.org/onlinepubs/009695399/idx/utilities.html>The | 
|  | Single Unix Specification version 3</a> where applicable.  This does not mean | 
|  | that Toybox is implementing every SUSv3 utility: some such as SCCS and ed are | 
|  | obsolete, while others such as c99 are outside the scope of the project. | 
|  | Toybox also isn't implementing full internationalization support: it should be | 
|  | 8-bit clean and handle UTF-8, but otherwise we leave this to X11 and higher | 
|  | layers.  And some things (like $CDPATH support in "cd") await a good | 
|  | explanation of why to bother with them.  (The standard provides an important | 
|  | frame of reference, but is not infallable set of commandments to be blindly | 
|  | obeyed.)</p> | 
|  |  | 
|  | <p>The other major sources of commands are the Linux man pages, and testing | 
|  | the behavior of existing commands (although not generally looking at their | 
|  | source code).  SUSv3 does not include many basic commands such as "mount", | 
|  | "init", and "mke2fs", which are kind of nice to have.</p> | 
|  |  | 
|  | <b><h2><a name="downloads" />Download</h2></b> | 
|  |  | 
|  | <p>This project is maintained as a mercurial archive.  To get a copy of the | 
|  | current development version, either use mercurial (hg clone | 
|  | http://landley.net/toybox) or click on one of the zip/gz/bz2 links | 
|  | at the top of the <a href=/hg/toybox>mercurial archive browser</a> page to get | 
|  | an archive of the appropriate version.  Click | 
|  | <a href="/hg/toybox?cmd=tags">tags</a> to see all the tagged release | 
|  | versions ("tip" is the current development version).</p> | 
|  |  | 
|  | <p>The maintainer's <a href=/notes.html>development log</a> and the project's | 
|  | <a href=http://www2.them.com:8080/cgi-bin/mailman/listinfo/toybox>mailing | 
|  | list</a> are also good ways to track what's going on with the project.</p> | 
|  |  | 
|  | <b><h2><a name="toycans" />What's the background image on the web page?</h2></b> | 
|  |  | 
|  | <p>It's <a href=toycans-big.jpg>carefully stacked soda cans</a>.  Specifically, | 
|  | it's a bunch of the original "Coke Zero" and "Pepsi One" cans, circa 2006, | 
|  | stacked to spell out the binary values of the ascii string "Toybox", with | 
|  | null terminator at the bottom.  (The big picture's on it's side because | 
|  | the camera was held sideways to get a better shot.)</p> | 
|  |  | 
|  | <p>No, it's not photoshopped, I actually had these cans until a coworker | 
|  | who Totally Did Not Get It <sup><font size=-3><a href=http://www.timesys.com>tm</a></font></sup> threw them out one day after I'd gone home, | 
|  | thinking they were recycling.  (I still have two of each kind, but | 
|  | Pepsi One seems discontinued and Coke Zero switched its can color | 
|  | from black to grey, presumably in celebration.  It was fun while it lasted...)</p> | 
|  |  | 
|  | <!--#include file="footer.html" --> |