<html><head><title>toybox roadmap</title>
<!--#include file="header.html" -->
<title>Toybox Roadmap</title>

<h2>Goals and use cases</h2>

<p>We have several potential use cases for a new set of command line
utilities, and are using those to determine which commands to implement
for Toybox's 1.0 release.</p>

<p>The most interesting standards are POSIX-2008 (also known as the Single
Unix Specification version 4) and the Linux Standard Base (version 4.1).
The main test harness including toybox in Aboriginal Linux and if that can
build itself using the result to build Linux From Scratch (version 6.8).
We also aim to replace Android's Toolbox.</p>

<p>At a secondary level we'd like to meet other use cases. We've analyzed
the commands provided by similar projects (klibc, sash, sbase, s6, embutils,
nash, and beastiebox), along with various vendor configurations of busybox,
and some end user requests.</p>

<p>Finally, we'd like to provide a good replacement for the Bash shell,
which was the first program Linux ever ran and remains the standard shell
of Linux no matter what Ubuntu says. This doesn't mean including the full
set of Bash 4.x functionality, but does involve {various,features} beyond
posix.</p>

<p>See the <a href=status.html>status page</a> for the combined list
and progress towards implementing it.</p>

<ul>
<li><a href=#susv4>POSIX-2008/SUSv4</a></li>
<li><a href=#sigh>Linux "Standard" Base</a></li>
<li><a href=#dev_env>Development Environment</a></li>
<li><a href=#android>Android Toolbox</a></li>
<li>Miscelaneous: <a href=#klibc>klibc</a>, <a href=#glibc>glibc</a>,
<a href=#sash>sash</a>, <a href=#sbase>sbase</a>, <a href=#s6>s6</a>...</li>
</ul>

<hr />
<a name="standards">
<h2>Use case: standards compliance.</h2>

<h3><a name=susv4 /><a href="#susv4">POSIX-2008/SUSv4</a></h3>
<p>The best standards are the kind that describe reality, rather than
attempting to impose a new one.  (I.E. a good standard should document, not
legislate.)</p>

<p>The kind of standards which describe existing reality tend to be approved by
more than one standards body, such ANSI and ISO both approving C.  That's why
the IEEE POSIX committee's 2008 standard, the Single Unix Specification version
4, and the Open Group Base Specification edition 7 are all the same standard
from three sources.</p>

<p>The <a href="http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html">"utilities"
section</a>
of these standards is devoted to the unix command line, and are the best such
standard for our purposes.  (My earlier work on BusyBox was implemented with
regard to SUSv3, an earlier version of this standard.)</p>

<h3>Problems with the standard</h3>

<p>Unfortunately, these standards describe a subset of reality, lacking any
mention of commands such as init, login, or mount required to actually boot a
system. It provides ipcrm and ipcs, but not ipcmk, so you can use System V IPC
resources but not create them.</p>

<p>These standards also contain a large number of commands that are
inappropriate for toybox to implement in its 1.0 release.  (Perhaps some of
these could be reintroduced in later releases, but not now.)</p>

<p>Starting with the full "utilities" list, we first remove generally obsolete
commands (compess ed ex pr uncompress uccp uustat uux), commands for the
pre-CVS "SCCS" source control system (admin delta get prs rmdel sact sccs unget
val what), fortran support (asa fort77), and batch processing support (batch
qalter qdel qhold qmove qmsg qrerun qrls qselect qsig qstat qsub).</p>

<p>Some commands are for a compiler toolchain (ar c99 cflow ctags cxref gencat
iconv lex m4 make nm strings strip tsort yacc), which is outside of toybox's
mandate and should be supplied externally.  (Again, some of these may be
revisited later, but not for toybox 1.0.)</p>

<p>Some commands are part of a command shell, and cannot be implemented as
separate executables (alias bg cd command fc fg getopts hash jobs kill read
type ulimit umask unalias wait).  These may be revisited as part of a built-in
toybox shell, but are not exported into $PATH via symlinks.  (If you fork a
child process and have it "cd" then exit, you've accomplished nothing.)</p>

<p>A few other commands are judgement calls, providing command-line
internationalization support (iconv locale localedef), System V inter-process
communication (ipcrm ipcs), and cross-tty communication from the minicomputer
days (talk mesg write).  The "pax" utility was supplanted by tar, "mailx" is
a command line email client, and "lp" submits files for printing to... what
exactly?  (cups?)  The standard defines crontab but not crond.</p>

<p>Removing all of that leaves the following commands, which toybox should
implement:</p>

<blockquote><b>
<span id=posix>
at awk basename bc cal cat chgrp chmod chown cksum cmp comm cp
csplit cut date dd df diff dirname du echo env expand expr false file find
fold fuser getconf grep head id join kill link ln logger logname ls man
mkdir mkfifo more mv newgrp nice nl nohup od paste patch pathchk printf ps
pwd renice rm rmdir sed sh sleep sort split stty tabs tail tee test time
touch tput tr true tty uname unexpand uniq unlink uudecode uuencode vi wc
who xargs zcat
</span>
</b></blockquote>

<h3><a name=sigh /><a href="#sigh">Linux Standard Base</a></h3>

<p>One attempt to supplement POSIX towards an actual usable system was the
Linux Standard Base. Unfortunately, the quality of this "standard" is
fairly low.</p>

<p>POSIX allowed its standards process to be compromised
by leaving things out, thus allowing IBM mainframes and Windows NT to drive
a truck through the holes and declare themselves compilant. But it means what
they DID standardize tends to be respected.</p>

<p>The Linux Standard Base's failure mode is different, they respond to
pressure by including special-case crap, such as allowing Red Hat to shoehorn
RPM on the standard even though all sorts of distros (Debian, Slackware, Arch,
Gentoo) don't use it and probably never will. This means anything in the LSB is
at best a suggestion: arbitrary portions of this standard are widely
ignored.</p>

<p>The LSB does specify a <a href=http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cmdbehav.html>list of command line
utilities</a>:</p>

<blockquote><b>
ar at awk batch bc chfn chsh col cpio crontab df dmesg du echo egrep 
fgrep file fuser gettext grep groupadd groupdel groupmod groups 
gunzip gzip hostname install install_initd ipcrm ipcs killall lpr ls 
lsb_release m4 md5sum mknod mktemp more mount msgfmt newgrp od passwd 
patch pidof remove_initd renice sed sendmail seq sh shutdown su sync 
tar umount useradd userdel usermod xargs zcat
</b></blockquote>

<p>Where posix specifies one of those commands, LSB's deltas tend to be
accomodations for broken tool versions which aren't up to date with the
standard yet. (See <a href=http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/more.html>more</a> and <a href=http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/xargs.html>xargs</a>
for examples.)</p>

<p>Since we've already committed to using our own judgement to skip bits of
POSIX, and LSB's "judgement" in this regard is purely bug workarounds to declare
various legacy tool implementations "compliant", this means we're mostly
interested in the set of tools that aren't specified in posix at all.</p>

<p>Of these, gettext and msgfmt are internationalization, install_initd and
remove_initd aren't present on ubuntu 10.04, lpr is out of scope, and
lsb_release is a distro issue (it's a nice command, but the output of
lsb_release -a is the name and version number of the linux distro you're
running, which toybox doesn't know).</p>

<p>This leaves:</p>

<blockquote><b>
<span id=lsb>
chfn chsh dmesg egrep fgrep groupadd groupdel groupmod groups
gunzip gzip hostname install killall md5sum
mknod mktemp mount passwd pidof sendmail seq shutdown
su sync tar umount useradd userdel usermod zcat
</span>
</b></blockquote>

<hr />
<a name="dev_env">
<h2><a href="#dev_env">Use case: provide a self-hosting development environment</a></h2>

<p>The following commands are enough to build the Aboriginal Linux development
environment, boot it to a shell prompt, and build Linux From Scratch 6.8 under
it. (Aboriginal Linux currently uses BusyBox for this, thus provides a
drop-in test environment for toybox. We install both implementations side
by side, redirecting the symlinks a command at a time until the older
package is no longer used, and can be removed.)</p>

<p>This use case includes running init scripts and other shell scripts, running
configure, make, and install in each package, and providing basic command line
facilities such as a text editor. (It does not include a compiler toolchain or
C library, those are outside the scope of this project.)</p>

<blockquote><b>
<span id=development>
bzcat cat cp dirname echo env patch rmdir sha1sum sleep sort sync
true uname wc which yes zcat
awk basename bzip2 chmod chown cmp cut date dd diff
egrep expr find grep gzip head hostname id install ln ls
mkdir mktemp mv od readlink rm sed sh tail tar touch tr uniq
wget whoami xargs chgrp comm gunzip less logname man split
tee test time bunzip2 chgrp chroot comm cpio dmesg
dnsdomainname ftpd ftpget ftpput gunzip ifconfig init less
logname losetup man mdev mount mountpoint nc pgrep pkill 
pwd route split stat switch_root tac umount vi
</span>
</b></blockquote>

<p>Note: Aboriginal Linux installs bash 2.05b as #!/bin/sh and its scripts
require bash extensions not present in shells such as busybox ash.
This means that toysh needs to supply several bash extensions _and_ work
when called under the name "bash".</p>

<hr />
<h2><a name=android /><a href="#android">Use case: Replacing Android Toolbox</a></h2>

<p>Android has a policy against GPL in userspace, so even though BusyBox
predates Android by many years, they couldn't use it. Instead they grabbed
an old version of ash and implemented their own command line utility set
called "toolbox".</p>

<p>Toolbox doesn't have its own repository, instead it's part of Android's
<a href=https://android.googlesource.com/platform/system/core>system/core
git repository</a> (this analysis looked at commit 51ccef27cab58).</p>

<h3>Toolbox commands:</h3>

<p>According to core/toolbox/Android.mk the toolbox directory builds the
following commands:</p>

<blockquote><b>
ls mount cat ps kill ln insmod rmmod lsmod ifconfig setconsole
rm mkdir rmdir reboot getevent sendevent date wipe sync umount
start stop notify cmp dmesg route hd dd df getprop setprop watchprops
log sleep renice printenv smd chmod chown newfs_msdos netstat ioctl 
mv schedtop top iftop id uptime vmstat nandread ionice touch lsof md5 r
cp du grep watchdogd
</b></blockquote>

<p>If selinux is enabled, you also get:</p>
<blockquote><b>
getenforce setenforce chcon restorecon runcon getsebool setsebool load_policy
</b></blockquote>

<p>The Android.mk file also refers to dynarray.c and toolbox.c as library
code. This leaves the following apparently unused C files in toolbox/*.c, each
of which has a command_main() function and seems to implement a standalone
command:</p>

<blockquote><b>
alarm exists lsusb readtty rotatefb setkey syren
</b></blockquote>

<h3>Command shell (ash)</h3>

<p>The core/sh subdirectory contains a fork of ash 1.17, and sucks in
liblinenoise to provide command line history/editing.</p>

<h3>Other Android core commands</h3>

<p>Other than the toolbox and sh directories, the currently interesting
subdirectories in the core repository are fs_mgr, gpttool, init,
logcat, logwrapper, mkbootimg, netcfg, run-as, and sdcard.</p>

<ul>
<li><b>fs_mgr</b> - subset of mount</li>
<li><b>gpttool</b> - subset of fdisk</li>
<li><b>init</b> - Android's PID 1</li>
<li><b>logcat</b> - read android log format</li>
<li><b>logwrapper</b> - redirect stdio to android log</li>
<li><b>mkbootimg</b> - create signed boot image</li>
<li><b>netcfg</b> - network configuration (sucks in libnetutils)</li>
<li><b>run-as</b> - subset of sudo</li>
<li><b>sdcard</b> - FUSE wrapper to squash UID/GID/permissions to what FAT supports.</li>
</ul>

<p>Almost all of these reinvent an existing wheel with less functionality and a
different user interface. We may want to provide that interface, but
implementing the full commands (mount, fdisk, init, ifconfig with dhcp,
and sudo) come first.</p>

<p>Although logcat/logwrapper also reinvent a wheel, Android did so in the
kernel and these provide an interface to that.</p>

<p>Also, gpttool and mkbootimg are install tools, and sdcard looks like a
testing tool. These aren't a priority if android wants to use its own
bespoke code to install itself.</p>

<h3>Analysis</h3>

<p>For reference, combining everything listed above, we get:</p>

<blockquote><b>
alarm ash cat chcon chmod chown cmp cp date dd df dmesg du exists fs_mgr
getenforce
getevent getprop getsebool gpttool grep hd id ifconfig iftop init insmod ioctl
ionice kill ln load_policy log logcat logwrapper ls lsmod lsof lsusb md5
mkbootimg mkdir mount mv nandread netcfg netstat newfs_msdos notify printenv
ps r readtty reboot renice restorecon rm rmdir rmmod rotatefb route run-as
runcon schedtop sdcard sendevent setconsole setenforce setkey setprop setsebool
sleep smd start stop sync syren top touch umount uptime vmstat watchdogd
watchprops wipe
</b></blockquote>

<p>We may eventually implement all of that, but for toybox 1.0 we need to
focus a bit. For our first pass, let's ignore selinux, strip out the "unlisted"
commands except lsusb, and grab just logcat and logwrapper from the "core"
commands (since the rest have some full/standard version providing that
functionality, which we can implement a shim interface for later).</p>

<p>This means toybox should implement:</p>
<blockquote><b>
<span id=toolbox>
cat chmod chown cmp cp date dd df dmesg du getevent getprop grep hd id ifconfig
iftop insmod ioctl ionice kill ln log logcat logwrapper ls lsmod lsof lsusb md5
mkdir mount mv nandread
netstat newfs_msdos notify printenv ps r reboot renice rm rmdir rmmod route
schedtop sendevent setconsole setprop sleep smd start stop sync top touch
umount uptime vmstat watchprops watchdogd wipe
</span>
</b></blockquote>

<p>The following Toolbox commands are already covered in previous
sections of this analysis:</p>

<blockquote><b>
cat chmod chown cmp cp date dd df dmesg du grep id ifconfig insmod kill ln ls
lsmod mkdir mount mv ps renice rm rmdir rmmod route sleep sync top touch umount
</b></blockquote>

<p>Which leaves the following commands as new from Toolbox:</p>

<blockquote><b>
getevent getprop hd iftop ioctl ionice log lsof nandread netstat
newfs_msdos notify printenv r reboot schedtop sendevent setconsole
setprop smd start stop top uptime vmstat watchprops watchdogd wipe
</b></blockquote>

<hr /><a name=klibc />
<h2>klibc:</h2>

<p>Long ago some kernel developers came up with a project called
<a href=http://en.wikipedia.org/wiki/Klibc>klibc</a>.
After a decade of development it still has no web page or HOWTO,
and nobody's quite sure if the license is BSD or GPL. It inexplicably
<a href=http://www.infoworld.com/d/data-center/perl-isnt-going-anywhere-better-or-worse-211580>requires perl to build</a>, and seems like an ideal candidate for
replacement.</p>

<p>In addition to a C library even less capable than bionic (obsoleted by
musl), klibc builds a random assortment of executables to run init scripts
with. There's no multiplexer command, these are individual executables:</p>

<blockquote><p>
cat chroot cpio dd dmesg false fixdep fstype gunzip gzip halt ipconfig kill
kinit ln losetup ls minips mkdir mkfifo mknodes
mksyntax mount mv nfsmount nuke pivot_root poweroff readlink reboot resume
run-init sh sha1hash sleep sync true umount uname zcat
</p></blockquote>

<p>To get that list, build klibc according to the instructions (I
<a href=http://landley.net/notes-2013.html#23-01-2013>looked at</a> version
2.0.2 and did cd klibc-*; ln -s /output/of/kernel/make/headers_install
linux; make) then <b>echo $(for i in $(find . -type f); do file $i | grep -q
executable && basename $i; done | grep -v '[.]g$' | sort -u)</b> to find
executables, then eliminated the *.so files and *.shared duplicates.</p>

<p>Some of those binaries are build-time tools that don't get installed,
which removes mknodes, mksyntax, sha1hash, and fixdep from the list.
(And sha1hash is just an unpolished sha1sum anyway.)</p>

<p>The run-init command is more commonly called switch_root, nuke is just
"rm -rf -- $@", and minips is more commonly called "ps". I'm not doing aliases
for the oddball names.</p>

<p>Yet more stale forks of dash and gzip sucked in here (see "dubious
license terms" above), adding nothing to the other projects we've looked at.
But we still need sh, gunzip, gzip, and zcat to replace this package.</p>

<p>By the time I did the analysis toybox already had cat, chroot, dmesg, false,
kill, ln, losetup, ls, mkdir, mkfifo, readlink, rm, switch_root, sleep, sync,
true, and uname.</p>

<p>The low hanging fruit is cpio, dd, ps, mv, and pivot_root.</p>

<p>The "kinit" command is another gratuitous rename, it's init running as PID 1.
The halt, poweroff, and reboot commands work with it.</p>

<p>I've got mount and umount queued up already, fstype and nfsmount go with
those. (And probably smbmount and p9mount, but this hasn't got one. Those
are all about querying for login credentials, probably workable into the
base mount command.)</p>

<p>The ipconfig command here has a built in dhcp client, so it's ifconfig
and dhcpcd and maybe some other stuff.</p>

<p>The resume command is... weird. It finds a swap partition and reads data
from it into a /proc file, something the kernel is capable of doing itself.
(Even though the klibc author
<a href=http://www.zytor.com/pipermail/klibc/2006-June/001748.html>attempted
to remove</a> that capability from the kernel, current kernel/power/hibernate.c
still parses "resume=" on the command line). And yet various distros seem to
make use of klibc for this>
Given the history of swsusp/hibernate (and 
<a href=http://lwn.net/Articles/333007>TuxOnIce</a>
and <a href=http://lwn.net/Articles/242107>kexec jump</a>) I've lost track
of the current state of the art here. Ah, Documentation/power/userland-swsusp.txt
has the API docs, and <a href=http://suspend.sf.net>here's a better
tool</a>...</p>

<p>So the list of things actually in klibc are:</p>

<blockquote><b>
<span id=klibc_cmd>
cat chroot dmesg false kill ln losetup ls mkdir mkfifo readlink rm switch_root
sleep sync true uname

cpio dd ps mv pivot_root
mount nfsmount fstype umount
sh gunzip gzip zcat
kinit halt poweroff reboot
ipconfig
resume
</span>
</b></blockquote>

<hr />
<a name=glibc />
<h2>glibc</h2>

<p>Rather a lot of command line utilities come bundled with glibc:</p>

<blockquote><b>
catchsegv getconf getent iconv iconvconfig ldconfig ldd locale localedef
mtrace nscd rpcent rpcinfo tzselect zdump zic
</b></blockquote>

<p>Of those, musl libc only implements ldd.</p>

<p>catchsegv is a rudimentary debugger, probably out of scope for toybox.</p>

<p>iconv has been <a href="#susv4">previously discussed</a>.</p>

<p>iconvconfig is only relevant if iconv is user-configurable; musl uses a
non-configurable iconv.</p>

<p>getconf is a posix utility which displays several variables from 
unistd.h; it probably belongs in the development toolchain.</p>

<p>getent handles retrieving entries from passwd-style databases
(in a rather lame way) and is trivially replacable by grep.</p>

<p>locale was discussed under <a href=#susv4>posix</a>.
localedef compiles locale definitions, which musl currently does not use.</p>

<p>mtrace is a perl script to use the malloc debugging that glibc has built-in;
this is not relevant for musl, and would necessarily vary with libc. </p>

<p>nscd is a name service caching daemon, which is not yet relevant for musl.
rpcinfo and rpcent are related to rpc, which musl does not include.</p>

<p>The remaining commands involve glibc's bundled timezone database,
which seems to be derived from the <a href=http://www.iana.org/time-zones>IANA
timezone database</a>. Unless we want to maintain our own fork of the
standards body's database like glibc does, these are of no interest,
but for completeness:</p>

<p>tzselect outputs a TZ variable correponding to user input. 
The documentation does not indicate how to use it in a script, but it seems
that Debian may have done so.
zdump prints current time in each of several timezones, optionally
outputting a great deal of extra information about each timezone.
zic converts a description of a timezone to a file in tz format.</p>

<p>None of glibc's bundled commands are currently of interest to toybox.</p>

</b></blockquote>

<hr />
<a name=sash />
<h2>Stand-Alone Shell</h2>

<p>Wikipedia has <a href=http://en.wikipedia.org/wiki/Stand-alone_shell>a good
summary of sash</a>, with links. The original Stand-Alone Shell project reached
a stopping point, and then <a href=http://www.baiti.net/sash>"sash plus
patches"</a> extended it a bit further. The result is a megabyte executable
that provides 40 commands.</p>

<p>Sash is a shell with built-in commands. It doesn't have a multiplexer
command, meaning "sash ls -l" doesn't work (you have to go "sash -c 'ls -l'").
</p>

<p>The list of commands can be obtained via building it and doing
"echo help | ./sash | awk '{print $1}' | sed 's/^-//' | xargs echo", which
gives us:</p>

<blockquote><b>
alias aliasall ar cd chattr chgrp chmod chown cmp cp chroot dd echo ed exec
exit file find grep gunzip gzip help kill losetup losetup ln ls lsattr mkdir
mknod more mount mv pivot_root printenv prompt pwd quit rm rmdir setenv source
sum sync tar touch umask umount unalias where
</b></blockquote>

<p>Plus sh because it's a shell. A dozen or so commands can only sanely be
implemented as shell builtins (alias aliasall cd exec exit prompt quit setenv
source umask unalias), where is an alias for which, and at triage time toybox
already has chgrp, chmod, chown, cmp, cp, chroot, echo, help, kill, losetup,
ln, ls, mkdir, mknod, printenv, pwd, rm, rmdir, sync, and touch.</p>

<p>This leaves:</p>

<blockquote><b>
<span id=sash_cmd>
ar chattr dd ed file find grep gunzip gzip lsattr more mount mv pivot_root
sh sum tar umount
</span>
</b></blockquote>

<p>(For once, this project doesn't include a fork of gzip, instead
it sucks in -lz from the host.)</p>

<hr />
<a name=sbase />
<h2>sbase:</h2>

<p>It's <a href=http://git.suckless.org/sbase>on suckless</a>. So far it's
implemented:</p>

<blockquote><p>
<span id=sbase_cmd>
basename cat chmod chown cksum cmp cp date dirname echo false fold grep head
kill ln ls mc mkdir mkfifo mv nl nohup pwd rm seq sleep sort tail tee test
touch true tty uname uniq wc yes
</span>
</p></blockquote>

<p>And has a TODO list:</p>

<blockquote><p>
<span id=sbase_cmd>
cal chgrp chvt comm cut df diff du env expand expr id md5sum nice paste
printenv printf readlink rmdir seq sha1sum split sync test tr unexpand unlink
who
</span>
</p></blockquote>

<p>At triage time, of the first list I still need to do: fold grep mc mv nl. Of
the second list: diff expr paste printf split test tr unexpand who.</p>

<hr />
<a name=s6 />
<h2>s6</h2>

<p>The website <a href=http://skarnet.org/software/>skarnet</a> has a bunch
of small utilities as part of something called "s6". This includes the
<a href=http://skarnet.org/software/s6-portable-utils>s6-portabile-utils</a>
and the <a href=http://skarnet.org/software/s6-linux-utils>s6-linux-utils</a>.
</p>

<p>Both packages rely on multiple bespoke external libraries without which
they can't compile. The source is completely uncommented and doesn't wrap at
80 characters. Doing a find for *.c files brings up the following commands:</p>

<blockquote><b>
<span id=s6>
basename cat chmod chown chroot clock cut devd dirname echo env expr false
format-filter freeramdisk grep halt head hiercopy hostname linkname ln
logwatch ls maximumtime memoryhog mkdir mkfifo mount nice nuke pause
pivotchroot poweroff printenv quote quote-filter reboot rename rmrf sleep
sort swapoff swapon sync tail test touch true umount uniquename unquote
unquote-filter update-symlinks
</span>
</b></blockquote>

<p>Triage: memoryhog isn't even listed on the website nor does it have
a documentation file, clock seems like a subset
of date, devd is some sort of netlink wrapper that spawns its command line
every time it gets a message (maybe this is meant to implement part of
udev/mdev?), format-filter is sort of awk's '{print $2}' function split out
into its own command, hiercopy a subset of "cp -r", maximumtime is something
I implemented as a shell script (more/timeout.sh in Aboriginal Linux),
nuke isn't the same as klibc (this one's "kill SIG -1" only with hardwared
SIG options), pause is a program that literally waits to be killed (I
generally sleep 999999999 which is a little over 30 years),
pivotchroot is a subset of switch_root, rmrf is rm -rf...</p>

<p>I see "nuke" resurface, and if "rmrf" wasn't also here I might think
klibc had a point.</b>

<blockquote>
basename cat chmod chown chroot cut dirname echo env expr false
freeramdisk grep halt head hostname linkname ln
logwatch ls mkdir mkfifo mount nice
pivotchroot poweroff printenv quote quote-filter reboot rename sleep
sort swapoff swapon sync tail test touch true umount uniquename unquote
unquote-filter update-symlinks
</blockquote>


<hr />
<a name=nash />
<h2>nash:</h2>

<p>Red Hat's nash was part of its "mkinitrd" package, replacement for a shell
and utilities on the boot floppy back in the 1990's (the same general idea
as BusyBox, developed independently). Red Hat discontinued nash development
in 2010, replacing it with dracut (which collects together existing packages,
including busybox).</p>

<p>I couldn't figure out how to beat source code out of
<a href=http://pkgs.fedoraproject.org/git/mkinitrd>Fedora's current git</a>
repository. The last release version that used it was Fedora Core 12
which has <a href=http://archive.fedoraproject.org/pub/archive/fedora/linux/releases/12/Fedora/source/SRPMS/mkinitrd-6.0.93-1.fc12.src.rpm>a source rpm</a>
that can be unwound with "rpm2cpio mkinitrd.src.rpm | cpio -i -d -H newc
--no-absolute-filenames" and in there is a mkinitrd-6.0.93.tar.bz2 which
has the source.</p>

<p>In addition to being a bit like a command shell, the nash man page lists the
following commands:</p>

<blockquote><p>
access echo find losetup mkdevices mkdir mknod mkdmnod mkrootdev mount
pivot_root readlink raidautorun setquiet showlabels sleep switchroot umount
</p></blockquote>

<p>Oddly, the only occurrence of the string pivot_root in the nash source code
is in the man page, the command isn't there. (It seems to have been removed
when the underscoreless switchroot went in.)</p>

<p>A more complete list seems to be the handlers[] array in nash.c:</p>

<blockquote><p>
access buildEnv cat cond cp daemonize dm echo exec exit find kernelopt
loadDrivers loadpolicy mkchardevs mkblktab mkblkdevs mkdir mkdmnod mknod
mkrootdev mount netname network null plymouth hotplug killplug losetup
ln ls raidautorun readlink resume resolveDevice rmparts setDeviceEnv
setquiet setuproot showelfinterp showlabels sleep stabilized status switchroot
umount waitdev
</p></blockquote>

<p>This list is nuts: "plymouth" is an alias for "null" which is basically
"true" (which thie above list doesn't have). Things like buildEnv and
loadDrivers are bespoke Red Hat behavior that might as well be hardwired in
to nash's main() without being called.</p>

<p>Instead of eliminating items
from the list with an explanation for each, I'm just going to cherry pick
a few: the device mapper (dm, raidautorun) is probably interesting,
hotplug (may be obsolete due to kernel changes that now load firmware
directly), and another "resume" ala klibc.</p>

<p>But mostly: I don't care about this one. And neither does Red Hat anymore.</p>

<p>Verdict: ignore</p>

<hr />
<a name=beastiebox />
<h2>Beastiebox</h2>

<p>Back in 2008, the BSD guys vented some busybox-envy
<a href=http://beastiebox.sourceforge.net>on sourceforge</a>. Then stopped.
Their repository is still in CVS, hasn't been touched in years, it's a giant
hairball of existing code sucked together. (The web page says the author
is aware of crunchgen, but decided to do this by hand anyway. This is not
a collection of new code, it's a katamari of existing code rolled up in a
ball.)</p>

<p>Combining the set of commands listed on the web page with the set of
man pages in the source gives us:</P>

<blockquote><p>
[ cat chmod cp csh date df disklabel dmesg echo ex fdisk fsck fsck_ffs getty
halt hostname ifconfig init kill less lesskey ln login ls lv mksh more mount
mount_ffs mv pfctl ping poweroff ps reboot rm route sed sh stty sysctl tar test
traceroute umount vi wiconfig
</p></blockquote>

<p>Apparently lv is the missing link ed and vi, copyright 1982-1997 (do not
want), ex is another obsolete vi mode, lesskey is "used to
specify a set of key bindings to be used with less", and csh is a shell they
sucked in, [ is an alias for test. Several more bsd-isms that don't have Linux
equivalents (even in the ubuntu "install this package" search) are
disklabel, fsck_ffs, mount_ffs, and pfctl. And wiconfig is a wavelan interface
network card driver utility. Subtracting all that and the commands toybox
already implements at triage time, we get:</p>

<blockquote><p>
<span id=beastiebox_cmd>
fdisk fsck getty halt ifconfig init kill less mksh more mount mv ping poweroff
ps reboot route sed sh stty sysctl tar test traceroute umount vi
</span>
</p></blockquote>

<p>Not a hugely interesting list, but eh.</p>

<p>Verdict: ignore</p>

<hr />
<a name=BsdBox />
<h2>BsdBox</h2>

<p>Somebody decided to do a <a href=https://wiki.freebsd.org/AdrianChadd/BsdBox>multicall binary for freebsd</a>.</p>

<p>They based it on crunchgen, a tool that glues existing programs together
into an archive and uses the name to execute the right one. It has no
simplification or code sharing benefits whatsoever, it's basically an
archiver that produces executables.</p>

<p>That's about where I stopped reading.</p>

<p>Verdict: ignore.</p>

<hr />
<a name=slowaris />
<h2>OpenSolaris Busybox</h2>

<p>Somebody <a href=http://hub.opensolaris.org/bin/view/Project+busybox/>wrote
a wiki page</a> saying that Busybox for OpenSolaris would be a good idea.</p>

<p>The corresponding "files" tab is an auto-generated stub. The project never
even got as far as suggesting commands to include before Oracle discontinued
OpenSolaris.</p>

<p>Verdict: ignore.</p>

<hr />
<h2>Requests:</h2>

<p>The following additional commands have been requested by various users:</p>
<blockquote><b>
<span id=request>
dig freeramdisk getty halt hexdump hwclock klogd modprobe ping ping6 pivot_root
poweroff readahead rev sfdisk sudo syslogd taskset telnet telnetd tracepath
traceroute unzip usleep vconfig zip free login modinfo unshare netcat help w
ntpd iwconfig iwlist rdate
dos2unix unix2dos catv clear
pmap realpath setsid timeout truncate
mkswap swapon swapoff
count oneit fstype
acpi blkid eject pwdx
</span>
</b></blockquote>

<!-- #include "footer.html" -->

