From 469d7f11b66dfbaf7483a9a855e595d59f71fdad Mon Sep 17 00:00:00 2001
From: Rob Landley
+awk dd diff expr fdisk ftpd ftpget ftpput gunzip +gzip less pgrep ping pkill ps route sh sha512sum tar test tr unxz vi +wget xzcat zcat +-ash awk bunzip2 bzip2 dd diff expr fdisk ftpd ftpget ftpput gunzip -gzip less man pgrep ping pkill ps route sed sh sha512sum tar test tr unxz vi -wget xzcat zcat
Many of those are in "pending". Most of the archive commands are needed because busybox tar doesn't call external versions. The remaining "difficult" -commands are vi, awk, and ash.
+commands are vi, awk, and sh.Verdict: ignore.
+Long ago a hardware developer named Jeff Dionne put together a +nommu Linux distribution, which involved rewriting a lot of command line +utilities that relied on features +unavailable on nommu hardware.
+ +In 2003 Jeff moved to Japan and handed +the project off to people who allowed it to roll to a stop. The website +turned into a mess of 404 links, the navigation indexes stopped being +updated over a decade ago, and the project's CVS repository suffered a +hard drive failure for which there were no backups. The project continued +to put out "releases" through 2014 (you have to scroll down in the "news" +section to find them, the "HTTP download" section in the nav bar on the +left hasn't been updated in over a decade), which were hand-updated tarball +snapshots mostly consisting of software from the 1990's. For example the +2014 release still contained ipfwadm, the package which predated ipchains, +which predated iptables, which is in the process of being replaced by +nftables.
+ +Nevertheless, people still try to use this because (at least until the +launch of nommu.org) the project was viewed +as the place to discuss, develop, and learn about nommu Linux. +The role of uclinux.org as an educational resource kept people coming +to it long after it had collapsed as a Linux distro.
+ +Starting around 0.6.0 toybox began to address nommu support with the goal +of putting uClinux out of its misery.
+ +An analysis of uClinux-dist-20140504 found 312 package +subdirectories under "user".
+ +A bunch of packages (inotify-tools, input-event-demon, ipsec-tools, netifd, +keepalived, mobile-broadband-provider-info, nuttp, readline, snort, +snort-barnyard, socat, sqlite, sysklogd, sysstat, tcl, ubus, uci, udev, +unionfs, uqmi, usb_modeswitch, usbutils, util-linux) +are hard to evaluate because +uclinux has directories for them, but their source isn't actually in the +uclinux tree. In some of these the makefiles download a git repo during +the build, so I'm assuming you can build the external package if you really +care. (Even when I know what these packages do, I'm skipping them +because uclinux doesn't actually contain them, and any given snapshot +of the build system will bitrot as external web links change over time.)
+ +Other packages are orphaned, meaning they're not mentioned from any Kconfig +or Makefiles outside of their directory, so uclinux can't actually build +them: mbus is an orphaned i2c test program expecting to run in some sort +of hardwired hardware context, mkeccbin is an orphaned "ECC annotated +binary file" generator (meaning it's half of a flash writer), +wsc_upnp is a "Ralink WPS" driver (some sort of stale wifi chip)...
+ +The majority of the remaining packages are probably not of interest to +toybox due to being so obsolete or special purpose they may not actually be +of interest to anybody anymore. (This list also includes a lot of +special-purpose network back-end stuff that's hard for anybody but +datacenter admins to evaluate the current relevance of.)
+ ++ ++arj asterisk boottools bpalogin br2684ctl camserv can4linux cgi_generic +cgihtml clamav clamsmtp conntrack-tools cramfs crypto-tools cxxtest +ddns3-client de2ts-cal debug demo diald discard dnsmasq dnsmasq2 +ethattach expat-examples ez-ipupdate fakeidentd +fconfig ferret flatfs flthdr freeradius freeswan frob-led frox fswcert +game gettyd gnugk haserl horch +hostap hping httptunnel ifattach ipchains +ipfwadm ipmasqadm ipportfw ipredir ipset iso_client +jamvm jffs-tools jpegview jquery-ui kendin-config kismet klaxon kmod +l2tpd lcd ledcmd ledcon lha lilo lirc lissa load loattach +lpr lrpstat lrzsz mail mbus mgetty microwin ModemManager msntp musicbox +nooom null openswan openvpn palmbot pam_* pcmcia-cs playrt plugdaemon pop3proxy +potrace qspitest quagga radauth +ramimage readprofile rdate readprofile routed rrdtool rtc-ds1302 +sendip ser sethdlc setmac setserial sgutool sigs siproxd slattach +smtpclient snmpd net-snmp snortrules speedtouch squashfs scep sslwrap stp +stunnel tcpblast tcpdump tcpwrappers threaddemos tinylogin tinyproxy +tpt tripwire unrar unzoo version vpnled w3cam xl2tpd zebra +
This stuff is all over the place: arj, lha, rar, and zoo are DOS archivers, +ethattach describes itself as just "a network tool", +mail is a textmode smtp mailer literally described as "Some kind of mail +proggy" in uclinux's kconfig (as opposed to clamsmtp and smtpclient and +so on), this gettyd isn't a generic version but specifically a +hardwired ppp dialin utility, mgetty isn't a generic version but is combined +with "sendfax", hostap is an intersil prism driver, wlan-ng is also an +intersil prism dirver, null is a program to intentionally dereference a +null pointer (in case you needed one), iso_client is a +"Demo Application for the USB Device Driver", kendin-config is +"for configuring the Micrel Kendin KS8995M over QSPI", speedtouch configures +a specific brand of asdl modem, portmap is part of Anfs, +ferret, linux-igd, and miniupnp are all upnp packages, +lanbypass "can be used to control the LAN +bypass switches on the Advantech x86 based hardware platforms", lcd is +"test of lcddma device driver" (an out-of-tree Coldfire driver apparently +lost to history, the uclinux linux-2.4.x directory has a config symbol for +it, but nothing in the code actually _uses_ it...), qspitest is another +coldfire thing, mii-tool-fec is +"strictly for the FEC Ethernet driver as implemented (and modified) for +the uCdimm5272", rtc-ds1302 and rtc-m41t11 are usermode drivers for specific +clock chips, stunnel is basically "openssl s_client -quiet -connect", +potrace is a bitmap to vector graphic converter, radauth performs command line +authentication against a radius server, +clamav, klaxon, ferret, l7-protocols, and nessus are very old network security +software (it's got a stale snapshot of nmap too), xl2tpd is a PPP over UDP +tunnel (rfc 2661), zebra is the package quagga replaced, +lilo is the x86-only bootloader that predated grub (and recently discontinued +development), lissa is a "framebuffer graphics demo" from +1998, the squashfs package here is the out of tree patches for 2.4 kernels +and such before the filesystem was merged upstream (as opposed to the +squashfs-new package which is a snapshot of the userspace tool from 2011), +load is basically "dd file /dev/spi", version is basically "cat /proc/version", +microwin is a port of the WinCE graphics API to Linux, scep is a 2003 +implementation of an IETF draft abandoned in 2010, tpt depends on +Andrew Morton's 15 year old unmerged "timepegs" kernel patch using the pentium +cycle counter, vpnled controls a light that reboots systems (what?), +w3cam is a video4linux 1.0 client (v4l2 showed up during 2.5 and support for +the old v4l1 was removed in 2.6.38 back in 2011), busybox ate tinylogin +over a decade ago, lrpstat is a java network monitor +from 2001, lrzsz is zmodem/ymodem/zmodem, msntp and stp implement rfc2030 +meaning it overflows in 2036 (the package was last updated in 2000), rdate +is rfc 868 meaning it also overflows in 2036 (which is why ntp was invented +a few decades back), reiserfsprogs development stopped abruptly after +Hans Reiser was convicted of murdering his wife Nina (denying it on the +stand and then leading them to the body as part of his plea bargain during +sentencing)... +
+ +Seriously, there's a lot of crap in there. It's hard to analyze most +of it far enough to prove it _doesn't_ do anything.
+ +The following software may actually still do something intelligible +(although the package versions tend to be years out of date), but +it's not a direction toybox has chosen to go in.
+ +There are several programming languages (bash, lua, jamvm, tinytcl, +perl, python) in there. Maybe someone somewhere wants a 2008 release of a +java virtual machine tested to work on nommu systems (jamvm), but it's out +of scope for toybox.
+ +A bunch of benchmark programs: cpu, dhrystone, mathtest, nbench, netperf, +netpipe, and whetstone.
+ +A bunch of web servers: appWeb, boa, fnord (via tcpserver), goahead, httpd, +mini_httpd, and thttpd.
+ +A bunch of shells: msh is a clever (I.E. obfuscated) little shell, +nwsh is "new shell" (that's what it called itself in 1999 anyway), +sash is another shell with a bunch of builtins (ls, ps, df, cp, date, reboot, +and shutdown, this roadmap analyzes it elsewhere), +sh is a very old minix shell fork, and tcsh is also a shell.
+ +Also in this category, we have:
+ ++ ++dropbear jffs-tools jpegview kexec-tools bind ctorrent +iperf iproute2 ip-sentinel iptables kexec +nmap oggplay openssl oprofile p7zip pppd pptp play vplay +hdparm mp3play at clock +mtd-utils mysql logrotate brcfg bridge-utils flashw +ebtables etherwake ethtool expect gdb gdbserver hostapd +lm_sensors load netflash netstat-nat +radvd recover rootloader resolveip rp-pppoe +rsyslog rsyslogd samba smbmount squashfs-new squid ssh strace tip +uboot-envtools ulogd usbhubctrl vconfig vixie-cron watchdogd +wireless_tools wpa_supplicant +
An awful lot of those are borderline: play and vplay are wav file +audio players, there's oprofile _and_ readprofile (which just reads kernel +profiling data from /proc/profile), +radvd is a "routr advertisement daemon" (ipv6 stateless autoconf), +ctorrent is a bittorent client, +lm_sensors is hardware (heat?) monitoring, +resolveip is dig only less so, +rp-pppoe is ppp over ethernet, +ebtables is an ethernet version of iptables (for bridging), +their dropbear is from 2012, and that ssh version is from 2011 +(which means it's about nine months too _old_ to have the heartbleed bug). +There's both ulogd and ulogd2 (no idea why), and pppd is version 2.4 but +there's a ppd-2.3 directory also.
+ +Lots of flash stuff: +flashw is a flash writer, load is an spi flash loader, netflash writes +to flash via tftp, +recover is also a reflash daemon intended to come up when the system can't boot, +rootloader seems to be another reflash daemon but without dhcp.
+ +The following packages contain commands already in the toybox roadmap:
+ ++ ++agetty cal cksum cron dhcpcd dhcpcd-new dhcpd dhcp-isc dosfstools e2fsprogs +elvis-tiny levee fdisk fileutils ftp ftpd grep hd hwclock inetd init ntp +iputils login module-init-tools netcat shutils ntpdate lspci ping procps +proftpd rsync shadow shutils stty sysutils telnet telnetd tftp tftpd traceroute +unzip wget mawk net-tools +
There are some duplicates in there, levee is a tiny vi implementation +like elvis-tiny, ntp and ntpdate overlap, etc.
+ +Verdict: We don't really need to do a whole lot special for nommu +systems, just get the existing toybox roadmap working on nommu and +we're good. The uClinux project can rest in peace.
+