386BSD 0.0 announcement
From Computer History Wiki
This is what I could find when 386BSD 0.0 was announced to the world!
announcement
386BSD Release 0.0
The Road Not Taken
William F. Jolitz
I shall be telling this with a sigh
Somewhere ages and ages hence:
Two roads diverged in a wood,
and I ---
I took the one less traveled by,
And that has made all the difference.
"The Road Not Taken" [1916] -- Robert Frost
386BSD Release 0.0 has been greatly motivated by the
frustrations of many who have written and phoned me about
their inability to obtain access to 386BSD, whether licensed
or not. I had hoped that through the groups I was working
with, interested parties could have access to SUPPORTED ver-
sions of 386BSD, but this was not to be.
So, in making a break with the past, I paused in my
series of 386BSD porting articles, took the unencumbered but
incomplete NET/2 kernel available from UC Berkeley, and fin-
ished the missing pieces necessary to make a bootable run-
ning kernel that provides a self-supporting development
environment. In describing this process (see DDJ May-June
1992), as well as providing the actual source code, I hope
this will finally break the logjam that has frustrated and
perplexed our many readers.
In 1989, when Lynne and I began this project, 386BSD
was simply intended to be a port of BSD to the 386. While we
did not wish to add to anyone's proprietary license revenues
by folding in new encumbered code (especially pertaining to
the 386), removing or redesigning new code to replace old
encumbered code was out of the scope of this project. Since
I was willing to work gratis on 386BSD (preparing the
specification, supplying the initial equipment, obtaining
equipment and support from companies such as Compaq and
Cyrix, and doing the actual port), making an unencumbered
version was simply impossible.
After Lynne and I contributed 386BSD to UCB in December
of 1990, the UCB CSRG staff seriously began to set their
sights on releasing only unencumbered code. It was quite a
chore for us to continually revise and improve 386BSD while
updating it to match the new work done by CSRG and other UCB
staff. The result was the UCB NET/2 release.
What we've since learned from this experience, to our
sorrow, is that once anyone starts down the track to
providing a broadly accessible system, aberrations, such as
delusions of profit and glory, cannot be allowed to blur the
goal. This rule holds no matter how well-meaning the motiva-
tions of other people appear.
After NET/2 came out, I was willing to go to great
lengths to help my "friends" at CSRG -- Mike Karels, the
Best Man at my wedding and to whom I introduced the UNIX
kernel some 12 years ago, Keith Bostic, and Kirk McKusick --
pull some success and profit out of the years of work they
had put into BSD. In Mike's case, he had earlier invested in
a company I founded many years ago, and he said I "owed him"
the opportunity to help him build his own company. I am not
trying to say that I was unusually naive or altruistic. I
simply believe that you should help your friends to the best
of your abilities, and that they in turn should help you
when you need it.
However, friendship has obligations and responsibili-
ties as well. You do not lie to your friends. You do not
demand that your friends act unethically or immorally to
accomplish a goal. You do not abdicate your responsibilities
to other people, such as the students and professors who
require this system to teach, even though it might be to
your immediate advantage. In the process of taking the easy
road, the friendship will inevitably be destroyed. Is any-
thing worth this price? I don't think so.
I began to notice that the original point in doing this
work had become lost, and that things were getting wildly
out of control. An insatiable desire for power and wealth
had begun to distort the entire BSD research project, and I
felt I had to put the value of 386BSD back into perspective.
I spent many months trying to resolve my growing differences
with CSRG in an appropriate and quiet fashion. After all,
they were my friends.
Unfortunately, after a 15-year work association, three
years of work on this project, and a long friendship, the
culmination of my efforts was a slew of cancelled accounts
and a letter from CSRG unilaterally cancelling Berkeley
involvement in 386BSD, and claiming all the work that I had
contributed to Berkeley since NET/2 as "University
proprietary".
I had anticipated even before receiving this letter
that I might be forced to take a different road -- the one
less traveled -- and had planned accordingly. I had known
that this would not be easy -- it required me at the end of
November 1991 to erase all of my work on 4.4BSD, take a copy
of the original unencumbered NET/2 release, and start from
scratch to make 386BSD Release 0.0. I had to, in essence,
abandon all my previous work with CSRG.
I realized that my family would suffer personally by
this stance. It was not easy to hear my little daughter say
"Daddy, I liked Mike and Keith and Kirk. Why don't they like
us anymore?" It was not easy to see long-time friends at
USENIX catch a glimpse of me, turn, and run in the opposite
direction for fear of being seen talking to me. It was not
easy to find my University associates putting my new pro-
jects "on hold", even though they told me that they really
didn't believe any of those nasty rumors circulating about
my character or work on 386BSD. It has been quite a strain
these last months enduring these indignities in silence and
focussing on completing my goals.
But I cannot distort my values and ethics and ignore
the needs of others simply to suit the whims of a few. One
must always strive to "do the right thing", no matter what
the personal consequences. As the proverb goes: "What pro-
fits a man if he gains the world and loses his soul?"
And now, since CSRG has stated in writing that the
386BSD project will not be continued at Berkeley (not
surprising, given I was the only one who maintained the
machines and the 386BSD code), I have no choice but to GO
IT-ALONE and get this system out-the-door to the tens-of-
thousands of people who need an experimental research and
educational system. Otherwise, they would continue to be
denied access by CSRG to either a licensed or unencumbered
version of 386BSD from UCB, and instead be forced to pay for
a version of my work from a firm in which they have a
private interest. I have been fortunate in finding many
others who believe in the goals of 386BSD, and who are now
spending a great deal of time and effort getting it out to
everyone who desires a copy.
The purpose of the 386BSD project remains the same: so
students, faculty, staff, and researchers can use BSD on a
simple and inexpensive platform. And now, since few have
been able to obtain a licensed version from UCB (and none an
unencumbered version), I have made 386BSD Release 0.0 avail-
able with public access sources. I intend to maintain both
source and binary versions of 386BSD for some time to come.
And, since the Berkeley CSRG has abandoned 386BSD, I am wil-
ling to contribute my 386BSD work to other University groups
in order to facilitate the establishment of "new" 386BSD
projects elsewhere. 386BSD Release 0.0 is only a beginning
-- not an end.
Despite my unpleasant experience with CSRG, I have con-
tinued my efforts to "do the right thing" by offering the
CSRG Faculty Advisor, Professor Susan Graham, the 386BSD
Release 0.0 changes for immediate release from Berkeley, so
that the conflict-of-interest charges and other issues would
become moot, and so that the Berkeley EECS Department would
not suffer further embarrassment in this matter. I think
many in the academic community would find it fitting that
386BSD be available from the University where the BSD pro-
ject began. I myself believe that the BSD tradition has
been a venerable one, and I would like to see it honorably
continue.
In any event, Lynne and I intend to hold to the
"spirit" of what the 386BSD project is really all about. It
is not about writing a few lines of source code, or obtain-
ing a cheap operating system to diddle, or even building a
mini-AT&T to entangle you in proprietary license agreements.
386BSD is an attempt to allow new possibilities and alterna-
tive approaches in an industry that has become moribund. You
can use it, or not. But remember, someone worked hard to
give you the CHOICE. Use it wisely.
release notes
sorry these are so poorly formatted.
Release Notes on 386BSD
W. Jolitz
386BSD Release 0.0:
------ ------- - -
This is 386BSD Release 0.0, the first edition from the
386BSD project. It comprises an entire and complete UNIX-
like operating system for the Intel 80386/486 based IBM PC,
and is based almost entirely on the NET/2 release from the
University of California, which contained much of the ear-
lier freely redistributable and modifiable 386BSD source
code done by William F. Jolitz and contributed to the Uni-
versity of California at Berkeley for distribution.
Originally conceived by Bill and Lynne Jolitz in 1989,
the 386BSD project is an attempt to foster new research and
development in operating systems and networking technology
by broadening access to base technology. In cooperation with
the University of California, an advanced operating system
was redesigned by William F. Jolitz to work on common
386-based PC's for use by smaller colleges and other groups
that did not have the resources to otherwise obtain it. In
addition, starting with the NET/2 release, this software has
been released in a form that does not require license agree-
ments, non-disclosure, or other controls that would limit
it's use in undergraduate teaching programs.
Unlike NET/2, 386BSD Release 0.0 is a complete and
operational system, including binaries and an executable
installation system, but still available under the same
"freely redistributable" terms of the original NET/2
release. Our forthcoming book on the internals of 386BSD
will complete the picture for educational and research pro-
grams to make use of this technology with students with the
necessary academic freedom.
We have been writing a series of articles about 386BSD
that have appeared in Dr. Dobbs Journal since January of
-- ----- -------
1991. Future announcements, and information on 386BSD may be
found within its covers. The DDJ BBS should have copies of
binary and source code when available. Also, you can contact
us via the magazine.
Contents:
--------
Release 0.0 consists of:
Source Distribution
A collection of 8 or 10 high-density floppy disks,
which is a multi-volume compressed TAR format archive
of the source language files with which to recreate the
system. When extracted, the files consume
386BSD RELEASE NOTES 1 March 1992
approximately 31 MB of space. In addition, at least 28
MB of space is taken up by the binary files created
when recompiling.
Binary Distribution
A collection of 6 or 8 high-density floppy disks, also
in compressed multi-volume TAR form, containing the
executable, data, and documentation files of a working
386BSD system, including C and C++ compilers and
libraries. When extracted, the files occupy approxi-
mately 20 MB of disk space. Note that at least 5 MB of
swap space, plus an operating reserve of another 10% of
the total accumulated disk space mentioned should be
considered as minimum to operate this system.
Distribution Installation Floppy System
A single floppy system is provided, again on a high-
density diskette. This completely standalone system
manages to allow a potential 386/486 based PC to be
qualified for use with 386BSD, simply by attempting to
boot it as an ordinary floppy. Once operational, it can
be used to configure the PC's hard disk and load the
binary floppy distribution. In addition, this floppy
provides a means to rescue and repair the software on
the hard disk in the event of a calamity.
Difference Floppy
A single 360 KB MS-DOS floppy containing all the dif-
ferences and new files necessary to make the NET/2 tape
operational, for those who already have the tape and
wish to "do it themselves". It also serves to illus-
trate just what is necessary to make the NET/2 tape
usable and worthwhile.
Release 0.0 does not contain any proprietary code, nor
any encryption software. It was created from NET/2, GNU and
other public software, and our creative minds.
Scope and Goals of this Release:
----- --- ----- -- ---- -------
This release was motivated by the fact that access to
386BSD has not been provided to all interested parties on a
timely basis by the University or other sources, as we had
originally intended. Thus, we have done a minimalist ver-
sion to demonstrate feasibility, provide accessibility, and
assure our readers and supporters that this project will be
finished, available to all, and not just appropriated by
private concerns. Since it is minimalist by design, many
features, utilities and other functionality will be desir-
able to add, although the system is complete enough to be
self-sufficient and self-developing.
386BSD RELEASE NOTES 2 March 1992
In addition, we have not repaired numerous known bugs
present -- we have merely attempted to work around them and
in spite of them. Also, new subsystems created after the
NET/2 tape and contributed to Berkeley have not been added
back in, because we did not want to blur the distinctions of
what is required to make NET/2 operational, and because CSRG
will not allow us access to this contributed work, although
other groups have been allowed access. Future releases
hopefully will remedy these nuisances. We also expect the
involvement of a wider community of users will aid us in
improving future releases of 386BSD.
Devices Supported in this Release:
------- --------- -- ---- -------
This release is intended to support a minimal 386/486
SX/DX ISA(ATBUS) system, with the traditional hard and
floppy disk controller (MFM,ESDI,IDE). Also, the usual dis-
play adapters (MDA/CGA/VGA/HGC) are supported, along with
the communications ports (COM). Ethernet controllers sup-
ported are Western Digital 8003EB, 8003EBT, 8003S,
WD8003SBT, 8013EBT, and Novell NE2000. Clones also appear to
work quite well. Tape drive support is available for QIC-02
controllers as well, allowing use of 3M cartridges of QIC-60
through QIC-150 format.
As configured on the binary distribution, the system
requires a floating point coprocessor (387 of any make),
hard disk and controller, floppy disk drive (either 5.25 or
3.5 high density only), and display adapter. If the serial
port or a Western Digital Ethernet card (port 0x280, IRQ 3,
iomem 0xd000) is present, the system can make use of it as
well.
It is recommended that the system have at least 2MB of
memory or more, but it will run on much smaller systems to a
limited degree by paging (the C++ compiler uses about 1 MB
of memory in operation). A 4 MB system with an 200 MB+ IDE
disk is a comfortable configuration, although by sharing the
sources via NFS, networked systems with 40 MB drives are
quite useful.
Machines Tested:
-------- ------
At the moment, this software has only been tested on
the following configurations:
Toshiba laptop clone, 386SX/387SX, 3MB RAM, VGA LCD(Cirrus),
Megahertz T2LL Ethernet, Conners CP3100 IDE 100MB drive.
Compaq DeskPro, 386/387, 9MB RAM, Compaq VGA, ESDI Maxtor 8380 drive(type 38),
WD8003EBT Ethernet, Compaq QIC-150 cartridge drive.
386BSD RELEASE NOTES 3 March 1992
Please fill out the enclosed registration form and sur-
vey so we can add more to this test base list. It is expect-
ed that all Compaq, Toshiba, Chips and Technology-based, and
OPTI-based systems should work with little trouble. See up-
coming DDJ articles on installation troubles for further in-
fo. We can be contacted for limited help with the system,
but, realize that this work is currently unfunded and we can
only devote a tiny amount of time to it. As a hint to fixing
troubles, defeating options like shadow ram or RAM BIOS is
an excellent place to start.
Installation Procedures:
------------ ----------
Currently, the system does not coexist with MS-DOS, but
requires the entire machine. SINCE IT IS STILL EXPERIMENTAL
SOFTWARE, YOU SHOULD BE PREPARED AT ANYTIME TO LOSE DISK
DRIVE CONTENTS, so you had better save backup dumps offline
of any information you wish to be preserved (1 in 100 of you
will do this, of course, but you were warned).
First, make a copy of all of the diskettes and save
them away. Make many copies of the distribution installation
diskette, and salt them away in various places, as it is im-
possible to recover the system without one otherwise.
The distribution installation diskette has predefined
shell variables that correspond to the device name for the
floppy drive ($FD), the raw device name ($RFD), the amount
of storage ($FTRK) per track (in kilobytes), and the disktab
entry type ($FT). These are present to parameterize the dif-
ferences between 3.5 inch and 5.25 inch versions of the boot
floppy.
Format the drive, if it is not already. Determine the
geometry (sectors/track, tracks/cylinder, number of cylin-
ders, etc), and create a disktab entry describing the disk
drive in the /etc/disktab file on the floppy. This can be
done by allowing the floppy to be written to (it defaults to
disabling writing) by the command:
mount -u $FD /
You can edit the file with the elvis editor, a clone of
-----
the encumbered Berkeley vi text editor done by Steve Kirk-
--
endall. You may wish to use one of the existing disktab en-
tries as a template for a new entry you are making. Please
include any disktab entrys you make in the survey form so we
can include them in the next release. Note: after you have
written the disk, please execute the "sync" command so that
the file will be forced back to the diskette.
Next, use the disklabel command to write a bootstrap
---------
and disk label data structure on the hard disk itself. This
386BSD RELEASE NOTES 4 March 1992
will destroy any information present on the beginning cylin-
der of the hard disk drive. A sample disklabel command:
disklabel -r -w wd0 cp3100 (label winchester drive 0 as a conners 3100)
disklabel -r wd0 (display the label on winchester drive 0)
Next, create empty filesystems for the root (partition
a of the drive) and usr (partition h) with the newfs com-
-----
mand:
newfs wd0a (root partition high level format)
newfs wd0h (usr partition high level format)
Mount the root partition and transfer the contents of
the distribution installation floppy to the hard drive. This
step frees up the floppy for use in loading the multi-volume
distribution while running off the hard disk drive:
mount /dev/wd0a /mnt (associate the mnt directory with the new root filesystem)
(cd /; tar -cf - .) | (cd /mnt; tar -xf -) (copy floppy to hard disk)
sync (flush out written blocks)
Reboot the system by the traditional cntrl-alt-del
three-fingered reset, and remove the floppy and set it
aside. The system should now come up off the hard disk
drive. Next, we load the distribution by inserting the first
floppy (volume 1 of the binary distribution) and typing:
mount /dev/wd0h /usr (make usr filesystem available, as it will also be loaded)
mr $FTRK $RFD | tar -xzf - (floppy extract compressed floppy archive)
A prompt will ask for successive floppies to be insert-
ed into the drive. At the conclusion, the "sync" command
should be used, and the system rebooted. The installation is
now complete, and the same procedures may be used at this
point to extract the source distribution if desired.
Operation:
---------
At the moment, 386BSD comes up single user, and re-
quires manual starting of the system daemons, as well as
filesystem checks. In use, one would minimally wish to type
after booting:
fsck -p
mount -a
update
/etc/netstart
386BSD RELEASE NOTES 5 March 1992
This will improve in forthcoming versions of 386BSD.
Be aware that the user is running as the super-user, and
care should be taken given the maximum privileges present.
Known bugs:
----- ----
Many bugs and unimplemented portions of the system ex-
ist and can be annoying. The most irritating are the tty
driver bugs that are related to boundaries in the ring
buffers, which cause the input queue to become truncated or
wrapped, as well as freezing the input queue when a transi-
tion to RAW mode occurs near a boundary (generally, the
first time the command "more" prompts). Usually, hitting
control-C clears this situation.
Sometimes, an endless end-of-file on input from the
terminal occurs that may require the system to be reset.
There is a pipe bug, believed to be in the block I/O code,
that breaks large pipe transfers into ~3 KB maximum sized
chunks. Occasionally, a missing interrupt bug causes the
system to jam waiting for an interrupt that has been
botched. Init does not handle signals and process groups
correctly, nor does it support multiuser operation (you can
start up other users by hand, or over the network as incom-
ing terminal sessions!). Execve will not run shell scripts,
nor will it work with arglists greater than 2 KB. There is
no facility for program debugging (e.g. ptrace). Raw DMA
transfers to non-page aligned, non-consecutive within 64 KB
physical boundaries don't work correctly. The console ter-
minal emulator destroys screen contents occasionally. A re-
dundant swap free fragment bug is present under intensive
paging operations, and resource constipation due to hundreds
of processes on tiny machines does occur. Operation on less
than 2MB may be erratic or impossible due to a base page
memory botch present.
All of these bugs are understood. Some of the fixes re-
quire redesign while others require code from the article
series!, but we are sure more are present. Bug fixes will
be put into subsequent versions.
Key Missing Utilities:
--- ------- ---------
Among the most annoying missing utilities are: awk,
grep, sort, diff, test, and expr. The utility software has
been cudgeled to ignore these for the moment, but eventually
these must be rectified. All of the NET/2 utilities have
been made to work with 386BSD, including those not present
in this release due to space considerations. You will find
it fairly painless to add software to this base system,
which is still at heart a full 32-bit POSIX compliant oper-
ating system with program development environment.
386BSD RELEASE NOTES 6 March 1992
Note also that DES encryption and Kerberos have pur-
posely been left off the system to allow for international
use, as 386BSD incorporates software (such as NFS) which has
been done by researchers in other countries and contributed
to Berkeley. For those international readers who have con-
sidered obtaining the NET/2 tape from UCB, it might interest
them to know that an export license (GTDA) has been granted
for a version of the NET/2 tape.
Future
------
Your interest, involvement, and support in this project
and its goals will determine the future of 386BSD and suc-
cessive releases. We would like to take this much further,
but we need considerable assistance of all kinds to allow
386BSD to grow further. We realize the shortcomings of Re-
lease 0.0, but are intensely proud of what we have accom-
plished in providing you with a chance to become involved
with a system that has enough tools to develop itself.
386BSD RELEASE NOTES 7 March 1992