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.