Matt,
This is wonderful work. Thank you.
Clem
On Mon, May 15, 2023 at 12:28 AM segaloco via TUHS <tuhs(a)tuhs.org> wrote:
I've just completed the Fourth Edition pass of
commits in my manual
history repository here:
https://gitlab.com/segaloco/mandiff
Something I've kept a particular eye on is what the landscape looked like
on the filesystems over the early years of development. Here are some of
those observations with a few areas perhaps requiring further illumination:
In the first two editions, there was a file, /etc/uids, which mapped
simply a username to a uid. The reason was presumably due to the plaintext
passwords in /etc/passwd at the time. The arrival of crypt(III) and
related functionality rendered this moot by the time of V3. Additional
GECOS information is first spotted in /etc/ident in V2 but by V3 has also
found home in /etc/passwd in the GECOS field today used often for a user's
full name. The s1-bits source codes refer to /etc/passwd where
disassembled s2-bits binaries refer to /etc/uids still, dating both sets of
code.
References to /etc/motd first appear in the V2 manual from what I could
find, so that may not have been around in V1. Additionally, after V1 many
files are moved from /etc to locations under /usr such as ascii and kbd
moving to /usr/pub and roff's suftab moving to /usr/lib. It seems in the
First Edition, manual section VII mapped to /etc itself it seems, with etc
and misc in the manual being synonymous.
So all in all it seems, in terms of support files anyhow, /etc wound up
smaller by the advent of the C system, at which point init beings using
/etc/rc and the directory begins to expand again.
Another directory of interest is /sys for a few reasons. First, this
directory serves different purposes depending on your kernel these days,
with BSD systems storing system source code here whereas Linux provides a
kernel interface filesystem. I'm not sure what other contemporary systems
may use this for, but from V3 and back, this was another RK disk mounted in
addition to /usr. This /sys directory appeared to contain the manuals,
source code to system components including the commands, kernel,
bootloader, and languages, and a copy of the kernel image referenced down
in the source tree.
In total I've identified the following directories: c, fort, lang, man,
mdec, source, sys. Most names should be obvious from later releases, with
lang being a parent directory that contained bdir and mdir B and m6
languages respectively. My guess is that when RP support was made workable
in V4, there was no longer a need to segregate data amongst RKs like this
so /sys was merged into /usr, leading to the later structure we see in
V4-V6. Of note, this structure is implied in CB-UNIX still in the path
names of the source code available on the archive. The kernel is found at
/tsys/sys/ much like the kernel in V1-V3 living at /sys/sys.
One thing I haven't been able to glean in the process is precisely how the
command and library source code was stored in these very early versions.
The kernel in T.R. Bashkow's analysis is implied to be stored in files
u[0-9x].s, and command source files at least exist somewhere as the command
followed by .s. As of V5, the command, syscall wrapper, and library source
codes are split up amongst a number of directories with names such as s1,
s2, s3, etc. under source. By V7, this has taken on the cmd/lib/sys
structure of later releases.
Finally, just a general curiosity the version study involved has raised.
Given the movement of UNIX to the 11/45 and then to C, does the Third
Edition represent a version of UNIX for the 11/45 with protection but
written in assembly, not C? I've seen one handwritten document that makes
mention of some of this, but is there any other information such as
documents, code, etc. concerning the 11/45 assembly version? Was work
completed on the 11/45 kernel changes in the context of this version and
then simply "ported" to the C version or were there concepts that were
cropping up in one or the other and varying amounts of transportation back
and forth as 11/45 and C aspects were implemented?
As always, thanks for keeping up, hopefully I can get this repository up
to V6 soon, then the real branching fun begins. The V3 to V4 changes are
hopefully the last time the commit diffs have major noise, what with the
conversion from roff to nroff. I suspect transitions to macro packages
later won't be as bad.
- Matt G.