[TUHS] A Census of /etc and /sys Prior to V4

segaloco via TUHS tuhs at tuhs.org
Mon May 15 14:27:42 AEST 2023


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.


More information about the TUHS mailing list