Index of /Distributions/UCB/4.1BSD-19810901-reconstructed

Icon  Name                    Last modified      Size  Description
[PARENTDIR] Parent Directory - [   ] tape1.tap.xz 2019-12-03 06:56 4.7M
This is a reconstruction of the September 1, 1981 release of 4.1BSD.

Compiled by Mike Haertel (mike.haertel at gmail.com)

TABLE OF CONTENTS
1.  Known differences from the original
2.  Motivation for this reconstruction
3.  Sources of this reconstruction
4.  Request for old tapes and documents


=======================================
1.  Known differences from the original
=======================================

The following files in this reconstruction have neither original contents
nor original timestamps:

    /etc/rc
	Dated 1981-10-04.  This file was not kept in SCCS, so options for
	reconstruction were limited.  The next available older version
	(in /usr/skel/etc/rc, dated 1981-04-03) has a Berkeley-specific
	pathname in it that is incorrect for the public release.

    /etc/mtab, /etc/utmp
	These are empty files in this reconstruction.  They may or may not
	have been empty on the original tape, but if they weren't, they should
	have been.  These files are overwritten following reboot.

    /sys/GENERIC/vers.c, /sys/GENERIC/vers.o, /sys/GENERIC/vmunix, /vmunix
	These are generated files in this reconstruction, that contain
	a date string based on the kernel link time.  By examining the
	(known) mtime of /sys/GENERIC/swapgeneric.o, which is the last
	file built before running /sys/conf/newvers.sh, it's possible
	to narrow the version timestamp down to a few seconds, but it's
	just a guess as to how quickly the /sys/conf/newvers.sh script
	would have run (on a possibly-loaded VAX 11/750 or 11/780) back
	in the day.  In addition, since SIMH is *much* faster than a
	real 750 or 780, I manually adjusted the modification time of
	the final output file /sys/GENERIC/vmunix to be just prior to
	the (known) mtime of /sys/GENERIC/errs.  With the possible
	exception of the date string, the contents of these files
	should exactly match the original release.

    /usr/games/rogue, /usr/games/worm
	Dated 1981-10-11.  Again, I was unable to find any appropriate
	earlier versions.

The following files in this reconstruction have original contents, but
likely have different timestamps than the original distribution.

    Pathname			How modification time was reconstructed
    ====================================================================
    /				[derived from mtime of /stamp.125]
    /dev/			[copied from timestamp of /dev/kmem]
    /dev/console		[plausible guess based on other /dev files]
    /dev/rhp0a			[plausible guess based on other /dev files]
    /dev/rhp0g			[plausible guess based on other /dev files]
    /sys/GENERIC/		[bounded by nearby mtimes in kernel build]
    /sys/GENERIC/ht.o		[bounded by nearby mtimes in kernel build]
    /sys/dev/ht.c		[timestamp copied from SCCS revision time]
    /tp/			[copied from mtime of /tp/boot]
    /vmunix			[shortly after mtime of /sys/GENERIC/vmunix]
    /usr/man/man4/		[copied from /usr/man/man4/vp.4]
    /usr/mdec/			[copied from /usr/mdec/upboot]
    /usr/src/cmd/		[plausible guess based on nearby files]
    /usr/src/cmd/csh/		[plausible guess based on nearby files]
    /usr/ucb/			[copied from /usr/ucb/lisp]

I have made no effort to reconstruct access and inode change timestamps.

Other than the differences noted above, I believe this reconstruction contains
exactly what Berkeley released on 1981-09-01.

Distribution tape #2 is not (yet) reconstructed.


======================================
2.  Motivation for this reconstruction
======================================

The Unix Heritage Society (http://tuhs.org, "TUHS") has historically
accurate tape images of 4.2BSD and 4.3BSD in its archive, but no 4.1BSD.

Kirk McKusick's CSRG archive DVD contains a directory named "disk1/4.1",
but this directory doesn't actually contain 4.1 -- instead it contains
a copy of 4.0, together with a "4.0.upgrade" subdirectory that contains
only a subset of the files necessary to upgrade a 4.0 system to 4.1.

McKusick's archive has, in addition, a directory named "4.1.snap", which
does indeed contain 4.1BSD, but this is a snapshot of a 4.1 system dated
December 17, 1982 -- about a year and a half after the the original
release announcement in June 1981.  In addition, this version is
littered with various personal scratch directories and files that
probably were not regarded as part of the official release.

In addition to the McKusick archive, there are a few older 4.1BSD tape
images floating around the Internet, and they are all different.

I thought it would be interesting to try to understand what the original
4.1BSD release actually contained, and reconstruct it if possible.

Here's what I have learned:

* It appears there was no single official 4.1BSD release tape image.

Instead, it appears that Berkeley set aside a couple of disk partitions
to contain "release" versions of root and /usr, and would make tapes
by writing out whatever was in these partitions whenever a customer ordered
a copy of the distribution.  It looks like Berkeley occasionally updated
the contents of these filesystems with bug fixes and new device drivers,
and sometimes added additional material and/or built kernels to make what
looked like "point releases".

Evidence for this "rolling release" hypothesis is that both of the root
dumps that I have been able to find appear to have been dumped from the
same partition at different times.  These dumps contain nearly the same
ordering of inodes and directory entries, with reorderings corresponding
only to files that were changed.

The directory entries, inode ordering, and timestamps do *not* correspond
with what they would have been if Berkeley was checking out and building
a fresh new copy from revision control for each new release.

In addition, the distributed "/vmunix" kernel binaries show evidence of
having been cross-compiled under some other kernel.  The time zone in the
released /vmunix kernels is 0 (i.e. GMT), but the version strings embedded
in these same /vmunix kernel binaries include "PDT" or "PST" ASCII dates.
In 4.1BSD there was no way to change the time zone other than to rebuild
(or binary patch) the kernel.

Finally, the McKusick DVD's 4.1.snap directory follows the exact same
layout, including the same garbage files, but includes even-later file
modification times.

Based on this consistency, I believe all of these are valid copies
of 4.1BSD.

* It appears there were several point release dates.

The various 4.1BSD images contain files named /stamp* that contain dates.
In addition, we can look at the latest modification times of files in
several surviving unstamped releases.

April 4, 1981
	It appears there was a "4.1 beta" that perhaps was sent to a small
	number of sites.

May 20, 1981
	This may have been the first public release.  According to Wikipedia.
	the initial 4.1BSD release announcement went out in early June 1981.

	(I don't have a copy of the original 4.1BSD announcement.)

	Based on SCCS thrash in the next few months, it looks like there
	were some bug reports with device drivers in this version.

July 10, 1981
	This is the date on the printed tape labels of all 4.1BSD release
	tape images that I have been able to find online.  And yet none
	of these tape images actually contain a 4.1BSD release built on
	(or before) this date!  So I suspect Berkeley wrote the tape labels
	in August 1981, and then stuck the same labels on whatever tapes
	they shipped thereafter.  (McKusick's archive contains nroff
	source for the tape labels, in disk1/4.1.snap/usr/doc/vmunix,
	with file dates in mid August 1981.)

August 31, 1981 / September 1, 1981
	The first of the above two dates is taken from the /stamp.125 file.
	The second is the date actually recorded in /etc/motd as shipped
	in all subsequent 4.1BSD releases.

November 3, 1981
	One of the 4.1BSD tape images available online is based on a root
	dump taken sometime between November 3 and November 11 1981.

November 30, 1981
	This appears as the modification time of the /stamp.125 file in
	the February 1982 release.  The actual contents of the file are
	still the August 31, 1981 date.  My hypothesis is that there
	may have been some release engineering work on this date that
	actually touched /stamp file(s).  Whether this corresponded
	to an actual release, or an updated /stamp, I don't know.

February 10, 1982
	This is the latest date contained in any of the /stamp* files.
	It also closely follows the revision date of February 8, 1982
	in /usr/doc/vmunix/setup.t, which apparently added Sam Leffler
	as coauthor.  I haven't been able to find any pre-1982 copies
	of the 4.1 setup document, but references elsewhere (for example,
	in the 2.9 BSD setup document) suggest that Joy was the sole
	author of the original 4.1 setup document.

June 12, 1982
	One of the two surviving root dumps in installation tape images
	available online contains files as late as this date.

December 17, 1982
	This is the date of the McKusick archive's disk1/4.1.snap.


==================================
3.  Sources of this reconstruction
==================================

I used the following two 4.1BSD tape images as sources for this reconstruction.

* Tape Image A: http://bitsavers.org/bits/BSD/BSD4.1_bootable.tap.gz
* Tape Image B: https://bitsavers.trailing-edge.com/bits/UCB_CSRG/4.1_BSD_19810710.zip

In addition, I recovered one kernel source file from the SCCS collection
on Kirk McKusick's CSRG archive DVD.

* Tape Image A:

Tape Image A was the main source of this reconstruction.  Tape Image A is
an unofficial 4.1BSD distribution, not following the 5-file format described
in the setup document, but instead containing just 3 files.  The contents
of Tape Image A are as follows:

File 1:
	A copy of the September 1, 1981 tape boot loader.  Unfortunately (and
	contrary to its filename!) this tape image isn't actually bootable,
	because File 1 was written using 1024-byte blocks, while the boot code
	assumes 512-byte blocks.

File 2:
	A 4.1BSD root dump.  It looks like this dump was created by loading
	an original 4.1BSD distribution (dated roughly November 3, 1981) to
	a scratch disk, and then dumping the scratch disk back out to another
	tape.  Directory timestamps suggest that this loading and re-dumping
	of the distribution occurred on January 30, 1982.

File 3:
	A tar file containing all of the /usr and /usr/src files from official
	distribution tape #1, and most of the files from official distribution
	tape #2.  Again it looks like this was done by loading the official
	distribution to disk, and then dumping the disk contents back to tape.
	Based on directory timestamps, this was done on January 30, 1982.
	But based on file time stamps, the actual files are the contents
	of /usr from the September 1, 1981 distribution tapes.

	File 3 is unfortunately truncated somewhere in the middle of the
	/usr/doc files.  Other than some missing /usr/doc files, File 3
	appears to contain all of the material from official distribution
	tape #2.

Why was Tape Image A truncated?  I have two theories:

    (1) The size of Tape Image A is close to the limit for a 2400 foot
	1600 BPI tape.  So someone's goal of creating a single-tape
	distribution may have just been doomed from the start.

    (2) Alternatively it's possible that there was an error reading back
	the tape contents many years later.

* Tape Image B:

Tape Image B *exactly* follows the official distribution tape #1 format
(5 files: bootstrap, root dump, tar of /usr, tar of /usr/src, and tar of
4.0 upgrade material).  Therefore I believe Tape Image B is a legitimate
copy of an original 4.1BSD distribution tape.

However, Tape Image B contains a much later version, dated June 12, 1982.
For this reconstruction of the September 1981 release, Tape Image B was used
only as the source of directory timestamps in the /usr and /usr/src tar files.

Most of the directory timestamps in Tape Image B's copies of /usr and /usr/src
are dated on or before August 31, 1981.  These older timestamps on /usr
directories from Tape Image B were copied directly to the corresponding
directory timestamps in the reconstruction.  The handful of /usr
directories whose Tape Image B timestamps postdated August 31, 1981 had
plausible timestamps assigned by hand.

* Other tape images out in the wild

There is a third 4.1BSD tape image (call it "Tape Image C") in widespread
circulation which many people have been using for SIMH installs.  This is
just a copy of Tape Image B, except the bootloader (file 1) has been replaced
with a copy of the 4.0 BSD boot loader.

The reason for the existence of Tape Image C is likely that people attempting
to run under SIMH never found the correct documentation of the 4.1BSD setup
process, and instead attempted to repeat the 4.0BSD setup.  In fact the
unmodified Tape Image B actually boots just fine following the boot procedure
exactly as described in the official 4.1BSD setup document.


=======================================
4.  Request for old tapes and documents
=======================================

If you have access to old 4.1BSD tapes, please don't throw them away!
Each tape was likely different, so your tape(s) may be a useful addition
to the historical record.

I'm especially interested to find root/usr tapes (tape #1 of the 2-tape set)
older than October 1981, or additional materials tapes (/usr/doc, /usr/games,
/usr/ingres, etc; tape #2) older than February 1982.

Note that the dates on the tape labels probably aren't accurate.  We need
to actually extract the tape contents to know for sure.

Also helpful would be scanned images of old hardcopy documentation, in
particular any copy of of "Installing and Operating 4.1bsd" that has
only Willam N. Joy listed as the sole author.