386BSD 0.0 on sourceforge

I didn’t realize that I never uploaded this over there. After a discussion on the passing anniversary on the TUHS mailing list I had to dig out my installed copy.

I had forgotten just how rough around the edges this was, as it’s missing quite a few utilities from the Net/2 tape, and isn’t complete enough to come up in multiuser mode, but it is capable of booting up.

Although 386BSD itself was really short lived with its effective short death in the subsequent release it paved the way for an internet only release of a BSD Unix by just 2 people. And it closed up the glaring hole of the lack of a free i386 port of Net/2.

The natural competition was Mach386, which was based around the older 4.3BSD Tahoe, and the up and coming BSDI, which had many former CSRG people which were also racing to deliver their own i386 binary / source release for sale.

One thing about this era is that you had SUN apparently forced out of the BSD business instead to work with the USL on making SYSV usable, leaving NeXT as the next big seller of BSD. The commercial world was going SYSV in a big way, and the only place that was to have a market was on the micros. And for those of us who wanted something open and free 386BSD paved the way realizing the dream of the Net/2 release. A free Unix for the common person, the true democratization of computing by letting common people use, develop and distribute it independently of any larger organization.

It’s almost a shame that GNU had stuck with the unrealized dream of a hierarchy of daemons, instead of adopting the BSD kernel with a GNU userland, on top of that tendy micro kernel Mach.

The landscape radically changed with the infamous ad proudly proclaiming “It’s UNIX”.

While USL was happy to fight both BSDI and the CSRG they never persued Bill Jolitz. And after the internet flame and lawsuit dragged on, neither of the splinter groups NetBSD or FreeBSD caught up, although both did reset upon the release of the 4.4BSD Lite 2 code.

I zipped up Bochs along with the disk here: 386BSD-0.0-with-bochs.7z

Mach386: MACH and BERKELEY UNIX for i386

I’ve been looking for this, since I first found out about it a few years ago. It’s a port of 4.3BSD Tahoe to the i386, utilizing the Mach kernel. This is the biggest gap of the era, which is bringing mini-computer BSD to an affordable platform, the AT386.

Sadly like many others after Mach386, it did not find widespread commercial success and MtXinu wound down operations of the product, and eventually the company itself. It’s a shame too that both Mt Xinu & BSDi eventually exited the BSD market, while the open 386 alternatives flourished and grew.

One thing is for sure, it wasn’t cheap! At least on the perpetually starving college student budget the base license was $995! And that included no source code at all. Although the Mach 3.0 Add-on does include source code, however because of the then new AT&T USL vs. BSDI/UCB lawsuit CMU got cold feet over it’s BSDSS/BNR2SS for Mach 3.0 and pulled it, leaving you with a micro kernel with no personality. Although years later the rights would flow from AT&T to Novel who then let Caldera acquire them, and then give the infamous 32v giveaway (pdf) essentially setting BSD free. Although I was one of the people who shelled out the $100 for the oldSCO SYSIII license back in the day.

Mach386 lived from around 1991 until 1993. Needless to say the Juggernaut called Linux appeared at the right time and the right place, when all of the BSD’s had faltered because of that lawsuit. Sometimes in life, timing is absolutely everything.

Sadly by the time I could afford expensive OS’s it was 1999 and I’d bought OS X Server 1.0, with all it’s 4.4BSD + Mach 2.5 fun.

Anyways fast forward a few decades and I have been looking for a mythical 4.3BSD on i386 for far too long, and I came across a post on betaarchive mentioning retrosys.net, and all of Scott’s adventures with Mach386. So I was able to contact him, and get a copy of Mach386!

Installation:

Well the disk set is from 1992, and going back to that era means you are going be locked into the old disk geometry where an IDE disk under 500MB is the best way to go. The floppy controller is programmed in a weird way that the only thing I could get it working with was VMWare. It wasn’t so bad going through the disks, and I quickly had a system up and running. Once the install is done it’ll run under QEMU for instance just fine.

Mach386 on Qemu

Currently there is no ‘modern’ ish networking support, aka no NE2000. So I’ve been using serial terminals to use uuencode/uudecode to get files in & out of the VM.

So what’s in the box? Well I didn’t install the X11 stuff as I’m just not in the mood to fight it, but it’s a 4.3BSD system! Sadly adventure/zork is absent, however rogue and all the other BSD type fun is there. gcc version 1.37.1 & GNU assembler version 1.36 among others are also includes, although without any diff’s or source. Although the networking headers & tools are on separate disks, there is no nonsensical link kit type thing like Xenix, meaning that TCP/IP is fully integrated to the kernel. While there is SLIP support apparently I haven’t messed with it at all yet.

What is really interesting is the other disk set, MtXinu-Mach386-M3921131020-Mach_3.0+DUI.7z which is that Mach 3.0 kernel version MK78 which I believe is the first widespread & public release of Mach 3.0.

Being that this a Mach based system it builds the 3.0 kernel with ease. It even includes a 4.3BSD (sadly binary only) ported kernel to the 3.0 Mach which you can run. It’s defiantly not as fast as the default kernel, but seems to work well enough.

The kernel in question is what they term Mach 2.6 which is the 2.5 plus lots of enhancements. Among others is a different disk layout/partitioning scheme so you can dualboot. Although in the era of cheap VMs it’s kind of pointless.

So it may not look like much, but it’s a really fun thing to play around with. At the same time 386BSD had been pushed out into the world, and Linux was also a thing. It’s not surprising that Mt Xinu & BSDi would eventually fail in the marketplace, and Linux would go on to decimate the UNIX landscape. But it’s cool to run a direct VAX based OS on the PC.

Unloading some BSD/OS CD’s

I was kindly sent these a while ago from an avid reader, and I tried to get them to boot up into anything useful and didn’t get anywhere.  I’m sure emulators of today are probably up to task, be it Bochs/PCem/86Box or even Qemu.

So they are now up on archive where I also found version 4 up there so I may as well flesh out the collection.

Enjoy!

The Harris HCX-9 aka TAHOE platform

A machine born in legend

This is a machine that is shroud in legend, and of course played an integral part of internet history but oddly enough almost all trace of it ever existing has vanished.

The release of BSD, aptly named the 4.3BSD TAHOE release was completed in June of 1988. However shortly after this release the makers of the CPU, Computer Consoles Incorporated abruptly exited the market killing off the platform.  What is interesting though is that while CCI was manufacturing the TAHOE processor, they also sold it to 3 other OEM’s, Sperry (which merged with Buroughs, and re-branded as Unisys), and ICL Ltd. and Harris is the only other one to have picked up the CPU for inclusion in it’s own machines.  Among them was the HCX-7, and the HCX-9.

The Harris HCX minicomputers were one of the possible machines that the CSRG team at Berkeley saw as a possible successor to the aging VAX line of minicomputers for their operating system.  While this may not have been the first port of UNIX or BSD for that matter, it was the first port of a 32bit BSD, that was included into the main VAX BSD source, and as such could be redistributed with the BSD license (which at the time required an AT&T 32V license).  The fundamental thing this did was to split out the VAX specific code as a mainstream port was to be rolled back into the main CSRG source, unlike any other 3rd party port at this point.

HCX-5

The HCX-5 ran an internal version of 4.2BSD, along with SYSV in a ‘dual universe’ config, while the HCX-9 was to be supported by the CSRG, as the file GENERIC.hcx9 indicates from 4.3BSD TAHOE.  As you can see the HCX-5’s starting price of $124,500 USD is if anything a continuing of the mindset that BSD only ran on super expensive minicomputers.

POWER 6/32 = HCX-9

Indeed from the config file in 4.3BSD TAHOE, we see this:

GENERIC POWER 6/32 (HCX9)

And for quite some time, I’ve always been searching for a CCI POWER 6/32, meanwhile it appears that was merely a reference platform that became the HCX-9 as indicated from the machine config file.  The evidence was hiding in plain sight, as always it was a typo that lead me here as I was searching for TAHOE processors, and came across people looking for GCC on the TAHOE, running BSD.  And following their threads I noticed that they were running Harris minis’ which then lead me to make the connection that the TAHOE was a processor, not just a machine, and that other vendors sold their own machines with the CPU.

Future cut short

Needless to say, once CCI exited the market these machines evaporated so quickly that they are only remembered in legend in BSD.  I’ve seen people debate if the machine actually existed, who put it out, or even what was it exactly? A workstation? Server?  As we can see from the Harris models, it was meant to be a minicomputer, to compete with the likes of the Digitial VAX.

Oracle Worker

As we can see from this ad, with Oracle support and the official porting target of the CSRG the HCX-9 was expected to have a bright future.  Instead it was cut so short there is barely any mention of it even existing.

Sadly this minicomputer target idea continued, as the CSRG sidestepped the commodity 32bit processors, namely the cheaper 68020 & 80386.

BSDI BSD/386 1.1

So this crossed my desk, from an anonymous source:

Really!

For those who like this kind of thing, here is a dmesg:

BSDI BSD/386 1.1 Kernel #0: Wed Mar 3 16:23:55 GMT 1999
[email protected]:/usr/src/sys/compile/GENERIC
cpu = Pentium (unknown speed) model 6, stepping 3
delay multiplier 8663
real mem = 68153344
avail mem = 65589248
buffer cache = 6774784
isa0 (root)
pccons0 at isa0 iobase 0x60 irq 1: color, 8 screens
com0 at isa0 iobase 0x3f8 irq 4: buffered
lp0 at isa0 iobase 0x378 irq 7
pe0 at isa0
xir0 at isa0 on lp0 (at 0x378)
fdc0 at isa0 iobase 0x3f0 irq 6 drq 2
fd0 at fdc0 slave 0: 1.44M HD 3.5
wdc0 at isa0 iobase 0x1f0 irq 14
wd0 at wdc0 slave 0
wdc1 at isa0 iobase 0x170 irq 15
npx0 at isa0 iobase 0xf0
vga0 at isa0 iobase 0x3c0 maddr 0xa0000-0xaffff
ne0 at isa0 iobase 0x300 irq 9: NE-2000, address 52:54:00:12:34:56
changing root device to wd0a
wd0: format error in bad-sector file

Yes it’s real!  For those who don’t remember history, after the Net/2 release there was a company called Berkeley Software Design Inc (BSDi) that provided a commercial port of Net/2 that also included source.  Add in the infamous 1-800-ITS-UNIX ad, and as they say the rest is history.

BSD/OS 1.1

BSD/OS 1.1

During this time frame it does get hard to track down as the name was in constant flux. BSDI, BSDi, BSD/OS, Internet Server…  Mix in the fun with 386BSD and you get all around naming confusion.

This version, 1.1 is from 1994.  The version timetable does get a tad bit confusing so here we go from what I can find:

1992, April – BSD/386 (BSDi) 0.3.1, first version
1992, June – BSD/386 (BSDi) 0.3.2
1993, March – BSD/386 (BSDi) 1.0
1994, Feb. – BSD/386 (BSDi) 1.1
1995, Jan. – BSD/OS (BSDi) 2.0
1995, June – BSD/OS (BSDi) 2.0.1
1996, Jan. – BSD/OS (BSDi) 2.1
1997, Feb. – BSD/OS (BSDi) 3.0
1998, March – BSD/OS (BSDi) 3.1
1998, Aug. – BSD/OS (BSDi) 4.0
1999, March – BSD/OS (BSDi) 4.0.1
1999, Dec. – BSD/OS (BSDi) 4.1
2000, Nov. – BSD/OS (BSDi) 4.2
2002, March – BSD/OS (Wind River) 4.3
2003, May – BSD/OS (Wind River) 5.0
2003, Oct. – BSD/OS (Wind River) 5.1

One can only hope that 0.3.1 from the apparent “300 customers” may eventually surface.

Fun source of the lawsuit meltdown C/O Computerworld 1992:

C/o Computerworld

C/o Computerworld

C/o Computerworld

C/o Computerworld

For anyone who want’s to relive the glory days, there is a qcow2 disk image suitable for Qemu floating around..

Word is you’d want to run it like this:

qemu-system-i386.exe -L pc-bios -net nic,model=ne2k_isa -net user -hda “bsdos-1.1(repack).qcow2” -redir tcp:4423::23

Probably figured out why Net/2 doesn’t work.

It’s not unresolved symbols, but rather deleted bodies…

From 22 years ago:

Path: sparky!uunet!wupost!darwin.sura.net!Sirius.dfn.de!fauern!unido!mcsun!fuug!sics.se!seunet!kullmar!compuram!pgd
From: [email protected]
Newsgroups: comp.unix.sysv386,comp.unix.internals
Subject: Re: 386's UNIX kernel source
Message-ID: <[email protected]>
Date: 11 Jan 92 08:24:27 GMT
References: <[email protected]>
Lines: 50

Richard Tobin ([email protected]) writes:
: In article <[email protected]> [email protected] (Lee M J McLoughlin) writes:
: >I can't say for sure but in the second Berkeley networking release
: >there appears to be enough source for unix and enough 386 specific
: >code to actually get a system up and running.
: 
: The following from kern_exec.c suggests otherwise:
: 
......
:             /*
:              * Body deleted.
:              */
:             return (ENOSYS);
:     }
: 
: There are other similar functions.  Also, the standalone stuff needed
: for bootstrapping is incomplete.

Routines which are thus missing from the kernel are:
acct(), sysacct(), execve() with friends, physio(),
minphys(), rminit(), rmalloc(), rmfree(), ptrace(),
procxmt(), profil(),  cinit(), getc(), q_to_p(),
ndqb(), ndflush(), putc(), b_to_q(), nextc(),
unputc(),  bufinit(), bread(), breada(), bwrite(),
bdwrite(), bawrite(), brelse(), incore(), getblk(),
geteblk(), allocbuf(), getnewbuf(), biowait(), biodone()

I have looked them up in the unix v7 sources, and they amount to
approximately 800 lines of code.
Some I cannot find there. They are:
minphys(), rminit(), rmalloc(), rmfree(), procxmt(), nextc(),
unputc(), bufinit(), allocbuf(), getnewbuf()
Do they really containt AT&T code, or were they just kicked out "by
mistake"?

In any case, unless there are more surprises, it should not be too
hard to rewrite these routines. Many are quite straightforward.
Most routines contain 10-20 lines of code. One only 2.
Some are ridiculusly simple. In fact, I wonder how they can be
rewritten to not be identical with the AT&T ones. 

Now, I wonder, are these routines really identical to the Unix v7
routines, or are they modified by the BSD people?
That is, would it be possible to plug in the V7 routines, modify them,
and get it working, without having seen the actual bsd routines?

-- 
Per Lindqvist

Internet: [email protected]   Fidonet: Per Lindqvist @ 2:201/332

So that is probably why it ‘works’ but doesn’t work.  Oops.