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
root@myhost.my.domain:/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: p...@compuram.bbt.se
Newsgroups: comp.unix.sysv386,comp.unix.internals
Subject: Re: 386's UNIX kernel source
Message-ID: <1992Jan11.082427.11910@compuram.bbt.se>
Date: 11 Jan 92 08:24:27 GMT
References: <5936@skye.ed.ac.uk>
Lines: 50

Richard Tobin (rich...@aiai.ed.ac.uk) writes:
: In article <LMJM.92Jan9173...@raquel.doc.ic.ac.uk> l...@doc.ic.ac.uk (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: p...@compuram.bbt.se   Fidonet: Per Lindqvist @ 2:201/332

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