[TUHS] the first busybox
Bakul Shah via TUHS
tuhs at tuhs.org
Fri Oct 23 08:04:12 AEST 2026
From James Da Silva's Crunch-0.2 README (1994):
The linking together of different programs by hand is an
old space-saving technique. Crunch automates the process
by building the necessary stub files and makefile for you
(via the crunchgen program), and by doctoring the symbol
tables of the component .o files to allow them to link
without "symbol multiply defined" conflicts (via the
crunchide program).
I think Poul-Henning had something similar before then.
This was the difference from earlier programs such as vi/ex/view
that behaved differently based on argv[0]. Totally non-intrusive!
I think even the Go technique is somewhat intrusive.
> On Oct 22, 2026, at 8:02 AM, ron minnich via TUHS <tuhs at tuhs.org> wrote:
>
> defining busybox is interesting because there have been so many types.
>
> There was the SunView approach you mentioned. My memory was that it was all
> based on linker scripts, hence non-intrusive one source.
>
> at LANL, Erik Hendriks created a busybox using linker scripts, to combine 4
> daemons into one, primarily for space. So that's the linker approach. It
> was non-intrusive.
>
> The common C busybox asks people to write programs in a special manner, so
> they can be compiled together. The Rust coreutils takes this approach too.
> It's intrusive.
>
> The u-root busybox uses the go AST package to write standalone commands
> into one binary, each command becoming a Go package, so that's a
> non-intrusive source-based approach.
>
> I got to wondering how far back this idea went in the Unix world. I just
> can't remember.
>
>
> On Wed, Oct 21, 2026 at 10:53 PM Warner Losh <imp at bsdimp.com> wrote:
>
>>
>>
>> On Wed, Oct 21, 2026 at 11:46 PM ron minnich via TUHS <tuhs at tuhs.org>
>> wrote:
>>
>>> The first busybox I recall using was on Sun systems (SuntTools?) where
>>> many
>>> window applications were linked into one binary.
>>>
>>
>> I believe then that SunView was the name. I seem to recall it did this
>> because there
>> was no shared library support and the toolkit was large relative to the
>> clients that
>> were linked together.
>>
>>
>>> I may have got the various names wrong; it's been 35 years. But I'm
>>> wondering: did something predate that?
>>>
>>> What was the "first busybox"?
>>
>>
>> It was released with SunOs 3.0.
>>
>> However, I see on the SunView wiki that SunWindows preceded it in 1983,
>> but was much more limited.
>>
>> Maybe define busybox a bit better? What are you looking for? There were
>> several old-time
>> unix programs that behaved differently depending on which hard link you
>> ran them with, but
>> that was much more limited than busybox that massages the .o files to give
>> each a namespace
>> and includes a first level dispatch so you can call foo_main().
>>
>> Warner
>>
More information about the TUHS
mailing list