blob: bbfbc2655f17fea73ada6218b02decdc9d52d4ca [file] [log] [blame]
Rob Landley589f5cd2010-01-05 10:41:52 -06001<!--#include file="header.html" -->
2
Rob Landleye258af32008-01-05 18:09:49 -06003<h2><a name="what" />What is ToyBox?</h2>
4
5<p>The goal of the Toybox project is to create simple implementations of all
6the important Linux command line utilities. These implementations should
7be small (the entire project should total less than a megabyte, uncompressed),
8fast, simple, and correctly implemented (which is related to standards
9compliance, but isn't quite the same thing). Click for
10<a href="design.html">more about the design goals</a></p>
11
12<p>Toybox has configurable levels of functionality, and should scale from tiny
13embedded systems up to full general purpose desktop and development
Rob Landley4c2484f2012-01-22 19:41:42 -060014environments. The author plans to install it on his Android phone in
15place of Toolbox, and the
16<a href=/aboriginal>Aboriginal Linux</a> project is trying to get a complete
Rob Landleye258af32008-01-05 18:09:49 -060017Linux system to rebuild itself from source code using toybox.</p>
18
Rob Landley1208ca72011-11-15 03:01:41 -060019<p>Toybox is <a href=license.html>released under a simple 2-clause BSD-style
20license</a>.</p>
Rob Landleye258af32008-01-05 18:09:49 -060021
22<p>Toybox can be built as a single "swiss army knife" executable (ala BusyBox
23or Red Hat's Nash), or each command can be built as a traditional independent
24executable.</p>
25
26<b><h2><a name="status" />What commands are implemented?</h2></b>
27
28<p>The current list of commands implemented by toybox is at the top of the
Rob Landley1208ca72011-11-15 03:01:41 -060029<a href=news.html>news page</a>. That list is updated when new commands
Rob Landley4c2484f2012-01-22 19:41:42 -060030go in. The list of commands yet to implement for the 1.0 release is in the
31<a href=todo.txt>todo list</a>.</p>
Rob Landleye258af32008-01-05 18:09:49 -060032
33<p>In general, configuring toybox for "defconfig" enables all the commands
34compete enough to be useful. Configuring "allyesconfig" enables partially
35implemented commands as well.</p>
36
Rob Landley4c2484f2012-01-22 19:41:42 -060037<p>Several toybox commands can do things other vesions can't. For example
38the toybox "df" isn't confused by initramfs the way other df implementations
Rob Landleybd915512008-01-07 20:28:26 -060039are. If initramfs is visible, df shows it like any other mount point.</p>
40
Rob Landleye258af32008-01-05 18:09:49 -060041<b><h3>Command Shell</h3></b>
42<p>The Toybox Shell (toysh) aims to be a reasonable bash replacement. It
43implements the "sh" and "toysh" commands, plus the built-in commands "cd" and
44"exit". This is the largest single sub-project in toybox.</p>
45
46<p>The following additional commands may be built into the shell (but not as
47separate executables): cd, exit, if, while, for, function, fg, bg, jobs, source,
Rob Landley4c2484f2012-01-22 19:41:42 -060048<a href="http://opengroup.org/onlinepubs/9699919799/utilities/alias.html">alias</a>,
Rob Landleye258af32008-01-05 18:09:49 -060049export, set, unset, read, trap, and exec. (Note: not done yet.)</p>
50
51</ul>
52
53<h2><a name="commands" />Which commands are planned?</h2>
54
55<p>The toybox <a href=todo.txt>todo list</a> mentions many potential commands
56which may be added to this project. (Whether that file is readable by anybody
Rob Landley4c2484f2012-01-22 19:41:42 -060057but the project's maintainer is open to debate.) The roadmap wiki in the
58nav bar has a more human readable version.</p>
Rob Landleye258af32008-01-05 18:09:49 -060059
60<p>The criteria for a toybox 1.0 release is that a system built from just the
Rob Landley4c2484f2012-01-22 19:41:42 -060061Linux kernel, toybox, C library (such as uClibc), and a compiler (such as
62tinycc) can rebuild itself from source code.</p>
Rob Landleye258af32008-01-05 18:09:49 -060063
64<b><h3>Relevant Standards</h3></b>
65
66<p>Most commands are implemented according to
Rob Landley4c2484f2012-01-22 19:41:42 -060067<a href=http://opengroup.org/onlinepubs/9699919799/idx/utilities.html>The
68Single Unix Specification version 4</a> where applicable. This does not mean
Rob Landleye258af32008-01-05 18:09:49 -060069that Toybox is implementing every SUSv3 utility: some such as SCCS and ed are
70obsolete, while others such as c99 are outside the scope of the project.
71Toybox also isn't implementing full internationalization support: it should be
728-bit clean and handle UTF-8, but otherwise we leave this to X11 and higher
73layers. And some things (like $CDPATH support in "cd") await a good
74explanation of why to bother with them. (The standard provides an important
75frame of reference, but is not infallable set of commandments to be blindly
76obeyed.)</p>
77
78<p>The other major sources of commands are the Linux man pages, and testing
79the behavior of existing commands (although not generally looking at their
Rob Landley4c2484f2012-01-22 19:41:42 -060080source code), including the commands in Android's toolbox. SUSv4 does not
81include many basic commands such as "mount", "init", and "mke2fs", which are
82kind of nice to have.</p>
Rob Landleye258af32008-01-05 18:09:49 -060083
84<b><h2><a name="downloads" />Download</h2></b>
85
86<p>This project is maintained as a mercurial archive. To get a copy of the
87current development version, either use mercurial (hg clone
Rob Landleyf83305e2012-02-03 22:39:55 -060088http://landley.net/hg/toybox) or click on one of the zip/gz/bz2 links
Rob Landleye258af32008-01-05 18:09:49 -060089at the top of the <a href=/hg/toybox>mercurial archive browser</a> page to get
90an archive of the appropriate version. Click
91<a href="/hg/toybox?cmd=tags">tags</a> to see all the tagged release
92versions ("tip" is the current development version).</p>
93
94<p>The maintainer's <a href=/notes.html>development log</a> and the project's
Rob Landley4c2484f2012-01-22 19:41:42 -060095<a href=http://lists.landley.net/listinfo.cgi/toybox-landley.net>mailing
Rob Landleye258af32008-01-05 18:09:49 -060096list</a> are also good ways to track what's going on with the project.</p>
97
Rob Landley08671ef2009-09-30 23:30:26 -050098<b><h2><a name="toycans" />What's the toybox logo image?</h2></b>
Rob Landleyb9d0cf12008-01-05 18:13:19 -060099
100<p>It's <a href=toycans-big.jpg>carefully stacked soda cans</a>. Specifically,
101it's a bunch of the original "Coke Zero" and "Pepsi One" cans, circa 2006,
Rob Landley797a4c32008-01-05 18:23:30 -0600102stacked to spell out the binary values of the ascii string "Toybox", with
103null terminator at the bottom. (The big picture's on it's side because
104the camera was held sideways to get a better shot.)</p>
105
106<p>No, it's not photoshopped, I actually had these cans until a coworker
107who 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,
108thinking they were recycling. (I still have two of each kind, but
109Pepsi One seems discontinued and Coke Zero switched its can color
110from black to grey, presumably in celebration. It was fun while it lasted...)</p>
Rob Landley589f5cd2010-01-05 10:41:52 -0600111
112<!--#include file="footer.html" -->