226
|
1 <!--#include file="header.html" -->
|
|
2
|
|
3 <h2><a name="what" />What is ToyBox?</h2>
|
|
4
|
|
5 <p>The goal of the Toybox project is to create simple implementations of all
|
|
6 the important Linux command line utilities. These implementations should
|
|
7 be small (the entire project should total less than a megabyte, uncompressed),
|
|
8 fast, simple, and correctly implemented (which is related to standards
|
|
9 compliance, 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
|
|
13 embedded systems up to full general purpose desktop and development
|
|
14 environments. The author plans to run it on his laptop, and the
|
|
15 <a href=/code/firmware>Firmware Linux</a> project is trying to get a complete
|
|
16 Linux system to rebuild itself from source code using toybox.</p>
|
|
17
|
|
18 <p>Toybox is <a href=license.html>Licensed under GPL version 2</a>.</p>
|
|
19
|
|
20 <p>Toybox can be built as a single "swiss army knife" executable (ala BusyBox
|
|
21 or Red Hat's Nash), or each command can be built as a traditional independent
|
|
22 executable.</p>
|
|
23
|
|
24 <b><h2><a name="status" />What commands are implemented?</h2></b>
|
|
25
|
|
26 <p>The current list of commands implemented by toybox is at the top of the
|
|
27 <a href=news.html>news page</a></p>. That list is updated when new commands
|
|
28 go in.</p>
|
|
29
|
|
30 <p>In general, configuring toybox for "defconfig" enables all the commands
|
|
31 compete enough to be useful. Configuring "allyesconfig" enables partially
|
|
32 implemented commands as well.</p>
|
|
33
|
|
34 <p>The following commands are incomplete, but demonstrate some basic
|
|
35 functionality: bzcat/bunzip2, help, mke2fs, sh/toysh, mdev.</p>
|
|
36
|
|
37 <p>The following are partially implemented commands that don't actually do
|
|
38 anything yet: mke2fs.</p>
|
|
39
|
230
|
40 <p>Several toybox commands can do things other vesions can't. For example:</p>
|
|
41
|
|
42 <p>The toybox "df" isn't confused by initramfs the way other df implementations
|
|
43 are. If initramfs is visible, df shows it like any other mount point.</p>
|
|
44
|
|
45 <p>The toybox "touch" command has a -l option to set the length of a file.
|
|
46 This can truncate a file, or create completely sparse files.</p>
|
226
|
47
|
|
48 <b><h3>Command Shell</h3></b>
|
|
49 <p>The Toybox Shell (toysh) aims to be a reasonable bash replacement. It
|
|
50 implements the "sh" and "toysh" commands, plus the built-in commands "cd" and
|
|
51 "exit". This is the largest single sub-project in toybox.</p>
|
|
52
|
|
53 <p>The following additional commands may be built into the shell (but not as
|
|
54 separate executables): cd, exit, if, while, for, function, fg, bg, jobs, source,
|
|
55 <a href="http://www.opengroup.org/onlinepubs/009695399/utilities/alias.html">alias</a>,
|
|
56 export, set, unset, read, trap, and exec. (Note: not done yet.)</p>
|
|
57
|
|
58 </ul>
|
|
59
|
|
60 <h2><a name="commands" />Which commands are planned?</h2>
|
|
61
|
|
62 <p>The toybox <a href=todo.txt>todo list</a> mentions many potential commands
|
|
63 which may be added to this project. (Whether that file is readable by anybody
|
|
64 but the project's maintainer is open to debate.)</p>
|
|
65
|
|
66 <p>The criteria for a toybox 1.0 release is that a system built from just the
|
|
67 Linux kernel, toybox, uClibc, and a compiler (such as tinycc) can rebuild
|
|
68 itself from source code.</p>
|
|
69
|
|
70 <b><h3>Relevant Standards</h3></b>
|
|
71
|
|
72 <p>Most commands are implemented according to
|
|
73 <a href=http://www.opengroup.org/onlinepubs/009695399/idx/utilities.html>The
|
|
74 Single Unix Specification version 3</a> where applicable. This does not mean
|
|
75 that Toybox is implementing every SUSv3 utility: some such as SCCS and ed are
|
|
76 obsolete, while others such as c99 are outside the scope of the project.
|
|
77 Toybox also isn't implementing full internationalization support: it should be
|
|
78 8-bit clean and handle UTF-8, but otherwise we leave this to X11 and higher
|
|
79 layers. And some things (like $CDPATH support in "cd") await a good
|
|
80 explanation of why to bother with them. (The standard provides an important
|
|
81 frame of reference, but is not infallable set of commandments to be blindly
|
|
82 obeyed.)</p>
|
|
83
|
|
84 <p>The other major sources of commands are the Linux man pages, and testing
|
|
85 the behavior of existing commands (although not generally looking at their
|
|
86 source code). SUSv3 does not include many basic commands such as "mount",
|
|
87 "init", and "mke2fs", which are kind of nice to have.</p>
|
|
88
|
|
89 <b><h2><a name="downloads" />Download</h2></b>
|
|
90
|
|
91 <p>This project is maintained as a mercurial archive. To get a copy of the
|
|
92 current development version, either use mercurial (hg clone
|
|
93 http://landley.net/toybox) or click on one of the zip/gz/bz2 links
|
|
94 at the top of the <a href=/hg/toybox>mercurial archive browser</a> page to get
|
|
95 an archive of the appropriate version. Click
|
|
96 <a href="/hg/toybox?cmd=tags">tags</a> to see all the tagged release
|
|
97 versions ("tip" is the current development version).</p>
|
|
98
|
|
99 <p>The maintainer's <a href=/notes.html>development log</a> and the project's
|
|
100 <a href=http://www2.them.com:8080/cgi-bin/mailman/listinfo/toybox>mailing
|
|
101 list</a> are also good ways to track what's going on with the project.</p>
|
|
102
|
227
|
103 <b><h2><a name="toycans" />What's the background image on the web page?</h2></b>
|
|
104
|
|
105 <p>It's <a href=toycans-big.jpg>carefully stacked soda cans</a>. Specifically,
|
|
106 it's a bunch of the original "Coke Zero" and "Pepsi One" cans, circa 2006,
|
228
|
107 stacked to spell out the binary values of the ascii string "Toybox", with
|
|
108 null terminator at the bottom. (The big picture's on it's side because
|
|
109 the camera was held sideways to get a better shot.)</p>
|
|
110
|
|
111 <p>No, it's not photoshopped, I actually had these cans until a coworker
|
|
112 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,
|
|
113 thinking they were recycling. (I still have two of each kind, but
|
|
114 Pepsi One seems discontinued and Coke Zero switched its can color
|
|
115 from black to grey, presumably in celebration. It was fun while it lasted...)</p>
|
227
|
116
|
226
|
117 <!--#include file="footer.html" -->
|