[TUHS] BSD/OS
Warner Losh
imp at bsdimp.com
Sun Sep 1 00:13:53 AEST 2024
On Sat, Aug 31, 2024 at 12:38 AM Greg 'groggy' Lehey <grog at lemis.com> wrote:
> On Saturday, 31 August 2024 at 0:12:16 -0400, Noel Chiappa wrote:
> >> From: Kevin Bowling
> >
> >> https://gunkies.org/wiki/BSD/386 and the parent page on seem to suggest
> >> it originated off Net/2 directly.
> >
> > I wouldn't be putting too much weight on what that page says; most of the
> > *BSD pages were done by people I don't know well, and who might have
> gotten
> > details wrong
>
> FWIW, my understanding is also that it came from Net/2. But it's been
> a few years now, and I wasn't directly involved. I just can't think
> of anything else from which it could have been derived.
>
> > (So confusing that '386BSD' is something different from
> > 'BSD/386'. Was there ever actually a '386/BSD'?)
>
> Not to my knowledge.
>
> > Someone who knows the early history of all the *BSD systems (as in,
> > you lived through all that) is welcome, nay invited, to fix any
> > errors therein.
>
> I wouldn't exactly call it early history, but my first exposure to
> (any kind of) BSD was in March 1992, when I installed BSDI's BSD/386
> (something like Beta 0.3.1). You can read more than you want at
> http://www.lemis.com/grog/diary-mar1992.php
>
> I subsequently (August 1992) visited Rob Kolstad, who was running the
> show at the time, and he filled me in. With his help, what I recall
> is:
>
> - Some time in or before 1991, a company called Berkeley Software
> Design Inc (BSDI) was formed with the intention of completing and
> marketing a BSD variant. The system was released as BSD/386 in
> 1992.
>
> - BSDI had a number of prominent BSD people, including Bill Jolitz.
> Bill was not in agreement that they should charge money for it, and
> as Rob tells me, in December 1991 Bill left the company after
> significant altercations, destroying all his work. He later
> released his version, 386BSD.
>
Yes. They started with net/2. Other accounts have Bill Jolitz bringing some
preliminary 386 porting work to BSDi and then leaving in a huff over
charging for it. He released 386BSD based on that work (or a redo of
that work, I've seen both accounts, not sure which one to believe). He
released
them to the world, and then had no ability to manage the project he created
leading to the patch kit which without a leader fissioned into NetBSD
and FreeBSD, each with different aims.
> - At some later date BSDI released a SPARC port, at which point the
> name BSD/386 seemed inappropriate, so they changed it to BSD/OS. I
> have a CD set of release 2.0 labeled BSD/OS.
>
> - The last CD set I have is undated, version 3.0, labeled BSDI
> Internet Server. I think it was still called BSD/OS, but I can't be
> sure.
>
> Round this time I moved away from BSD/OS, since it cost money, and
> FreeBSD seemed to be just as good.
>
> - In June 2000 we (FreeBSD) discussed merging the code bases of BSD/OS
> and FreeBSD, specifically for SMP improvements. At the time the
> BSD/OS release was 4.x, and we were looking at the 5.0 code. This
> is also the first time where I saw the name written as BSDi;
> previously, including all the CDs, it was always BSDI.
>
There were also a number of items that did get merged into FreeBSD at
this time. We also looked at the PC Card stack moving over, but I didn't
have the time to get it working on FreeBSD because significant SMPNG
work made bringing over the code more difficult and a bigger project than
I had time for.
> On Friday, 30 August 2024 at 21:40:29 -0700, Kevin Bowling wrote:
> >
> > BSD/386 seems to be a first order derivative of net/2. Source:
> > https://ia902809.us.archive.org/25/items/BSD3861.1CD/bsd1.1-manual.pdf.
> > To what degree that it incorporated anything from 386bsd would
> > probably rely on first hand accounts.
>
> As mentioned above, not at all. When the first flaky 386BSD betas
> were released, BSD/386 was already up and running.
>
Yes. Jolitz code was in both, but BSDi's BSD/386 was first. There was
a longer beta for it as well. That code circulated a bit before it was
officially released. I think this was to attract VC funding for BSDi, but
that detail is from a half-remembered conversation with Mike Karls and
Kirk McKusick over beers far too many years ago.
> > I don't have much to go on for BSD/OS 2.x but it seems like it was
> > about rebasing on 4.4-lite if we look at the family tree
> > http://www.netbsd.org/about/history.html
>
> Yes, this would have been one of the results of the AT&T lawsuit.
> FreeBSD 2.0 was also rebased on 4.4BSD-Lite.
>
As did NetBSD for 1.0, though they took a different tact: FreeBSD did
a fresh import into a fresh repo, while NetBSD removed bits incrementally
until it was clean, but then had issues making their repo public due to the
settlement with AT&T.
Everybody had to rebase. Nobody could continue to use NET/2 that was using
it when the lawsuit started. After 4.4-lite came out, there was no real
reason for
others to start with net/2, so I'm not aware of anybody else using that
code for
a full kernel.
> > Luckily for BSD/OS 4.x we get some release notes:
> > *
> >
> https://ia600908.us.archive.org/view_archive.php?archive=/22/items/bsdos-4.01/bsdos-4.01-binary.iso&file=RELEASENOTES.pdf
>
> Yes, that looks good. It also narrows the time frame for when BSDI
> became BSDi, some time between July 1998 and June 2000.
>
> > For 5.x I again don't have much to go on but we can take an indirect
> > approach from some FreeBSD SMPng reports where BSDi donated source
> > code that was not used wholesale but instead had to be reintegrated or
> > rewritten:
> > * http://www.lemis.com/grog/Daemons-advocate/unix-way-c.html
>
> Heh. I had forgotten about that.
>
Yes. By the time SMPNG had started, the divergence made lots of the
kernel code not a drop in. But lots of code was integrated into SMPNG,
in addition to lots being written / modified.
> > I would be pretty confident in saying BSD/OS is _not_ a FreeBSD
> > derivative but a first order derivative of net/2
>
> Yes, I think so. I can't think of anything else that could have been
> in between.
>
BSDi came from net/2. FreeBSD came from net/2. They shared code
back and forth in the FreeBSD 3.x, 4.x, 5.x and 6.x time period.
> > ... that eventually wound up looking a little bit like FreeBSD in
> > its later years.
>
> Hmm. You haven't discussed how FreeBSD evolved, which was from
> 386BSD. And my understanding is that 386BSD, like BSD/386, was also
> derived from Net/2. I used both BSD/OS and FreeBSD side by side for a
> number of years without noticing significant differences. It wasn't
> until I started porting the SMP code from BSD/OS 5.0 to FreBSD
> (coincidentally also 5.0) that I realized how different the kernel had
> become.
>
Yes. net/2 -> BSD/386 -> BSD/OS and net/2 -> 386bsd -> patch kit -> FreeBSD.
But after the BSD/386, BSDi added SMP work (ASMP) and some vm improvements.
They did a lot of driver work, including supporting PC Cards and a few
other things.
They also wrote 'witness' to debug their locking work that would wind up
later in FreeBSD.
FreeBSD also added VM improvement from John Dyson in 3.x and 4.x as well as
ASMP support in 4.x from Steve Passe. CAM was added between 3 and 4 as well,
so we lost a bunch of drivers because CAM was a steep learning curve
compared
to the Julian Elischer scsi code that had come before (though in the end not
that different from it, the different world view was hard to approach).
FreeBSD also
got a new device model in 3.2 by Doug Rabson (to this day called Newbus,
despite
being over 25 years on from whatever oldbus was).
During this time, small bits of code flowed back and forth. You can still
find commits
that mention the committer got the code from BSDi, though sometimes that's
spelled
'from Mike Karls' :).
So BSD/386 was 1992 and FreeBSD 1.0 was late 1993. SMP/ng work started in
2001
or so, almost a full decade of evolution where both groups were heavily
innovating
core parts of the kernel. These changes made it hard to drop in code.
> > According to grog in
> > (www.lemis.com/grog/Daemons-advocate/unix-way-c.html) there was an
> > attempt by BSDi to rebase to FreeBSD but it was abandoned.
>
> My recollection was that the intention was to merge rather than
> rebase. What we did do (the SMP code) was definitely from BSD/OS to
> FreeBSD. The rest of the merge idea didn't get very far, and I can't
> recall any significant attempts to push it forward.
>
That's what I recall as well. I do recall that FreeBSD had to significantly
rework much of the code we got from BSD/OS due to the evolution
in both the kernel, and some of Steve Passe's work had to be unwound
before we could move forward. And it took years to get done. We'd originally
hoped to do a release in like 2001, and then did a tech preview of 5.0 in
2003
a full release in 5.2 in 2004 that was useable, but it wasn't really until
maybe
2007 or so that SMP was solid.
> > I've found scant detail on what WindRiver did with 5.0 and 5.1 so I
> > am unsure, but in playing around with 5.1 it does have FreeBSD's CAM
> > layer but does not look like i.e. FreeBSD 5.x in a variety of
> > material ways.
>
> It's worth considering what things were like at the time. You, as
> potential user, have the choice: BSD/OS for $1000 or FreeBSD for free.
> What advantage do you get from BSD/OS? Yes, there were some, but they
> weren't really enough to keep BSD/OS viable. That's why I had made
> the change a few years earlier, and I don't think that WindRiver's
> heart was really in it. So the SMP code was really something like a
> swan song.
>
Yes. BSDi's business model hadn't expected the rise of Open Source being
serious competitors. And the pressures from Linux also helped to slow sales
around the time the rebase / merge / whatever had been contemplated. Plus
the sale to WindRiver was supposed to be this wonderful thing, but in the
end turned out to be not so great.
I've not studied the BSDi CAM. I'll have to do that. I have studied the
Ultrix/OSF/1
CAM and it is quite different than the FreeBSD CAM (which has evolved
significantly
since 3.x days). The notion of source code compatibility for all SCSI
drivers was an
interesting thing, but even between the Ultrix and FreeBSD CAMs, there's
huge differences
in headers and function blocks that don't seem to be described by the
standard and
that need slightly different code as well... I've also not been able to
find source to
the original MacOS CAM nor the early DOS CAM frameworks, though references
to
them litter the early literature from the mid 90s. Both of them moved on
from CAM
after the first generation of SCSI devices.
Warner
> Greg
> --
> Sent from my desktop computer.
> Finger grog at lemis.com for PGP public key.
> See complete headers for address and phone numbers.
> This message is digitally signed. If your Microsoft mail program
> reports problems, please read http://lemis.com/broken-MUA.php
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/tuhs/attachments/20240831/d8d07d0a/attachment-0001.htm>
More information about the TUHS
mailing list