My take on a BSD/386 filesystem's contents in 1995
While grepping around some of the dustier corners of my home directory earlier this evening, I turned up some documentation for the "first real Unix box" I ever ran for other people (after inheriting it from an earlier admin). That is, this was a machine that had Actual Users on it who were using it to (try to) accomplish stuff - run gopher, telnet out to a MUD, that sort of thing. (Hey, it was quite a while ago).
It's interesting to see what my understanding of a BSD/386 filesystem looked like back then. This brings up a new kind of navel gazing I hadn't thought of before: reading your own documentation a few decades later to see if you've learned anything since then.
This is something I was asked to write up by the teacher who was nominally in charge of the box at my high school. I was the one actually running it (said so right on the "course" description), but they needed an actual teacher to keep an eye on things. He asked me to explain what was on the disk in broad strokes, and this document is the result.
The date on this is August 28, 1995. That I found it in the same month all these years later is just a nice 1-in-12 coincidence. Don't read too much into it.
This was originally a plain text file with just spaces for indentation. Since that would fall apart really badly here in the HTML world, I've converted it to a series of nested ULs for your consumption.
I'm pretty sure a lot of this is/was just me propagating various incorrect notions, but let's just see how bad it was, really. Navel gazing mode: ON FULL BLAST.
- /bin: basic system utilities (cp, rm, mv, cat, etc.)
- /dev: system devices (Ethernet ports, serial ports, printer ports, etc.)
- /etc: systemwide config files
- /domain: DNS config files (link to /etc/namedb)
- /namedb: DNS config files
- /home: user home directories
- /root: root's home directory (not used, root should never log in)
- /sbin: more specific system utilities - filesystems, network devices, etc.
- /usr: lots of fun things for users
- /X11: X-windows things
- /bin: user-oriented utilities (banner, cal, grep, lpr, etc.)
- /contrib: things contributed by other people across the net
- /bin: contributed programs
- /lib: miscellaneous libraries for the programs
- /man: man pages for the programs
- /tclman: presumably even more man pages
- /demo: fun things to try when emulating DOS
- /home: link to /home (user directories WERE here before)
- /include: things of interest to C programmers mostly
- /lib: more fun things for C programmers
- /libdata: files associated with the DOS emulator
- /libexec: network daemons
- /local: more fun things
- /adm: sudo config files
- /bin: locally added binaries
- /etc: obsolete directory, scheduled for execution
- /httpd: obsolete (NCSA httpd), scheduled for execution
- /lib: library files for locally added programs
- /man: man pages for locally added programs
- /src: source files for locally added programs
- /www: empty
- /netscape-server: all the fun stuff for our Netscape Server
- /obj: empty
- /old: stale things, they're old, what can I say?
- /sbin: even MORE fun programs, primarily for system tweaking
- /share: tons of neat data files and other cool things
- /calendar: fodder for the 'calendar' program. <$friend>sassy</$friend>
- /dict: fodder for various things that use dictionaries
- /groff_font: fonts for the 'groff' program
- /locale: some things, apparently language-based
- /man: man pages for programs in here
- /me: unknown, perhaps for 'groff'
- /misc: more neat things, zip codes, airport IDs, and so forth
- /mk: makefiles of interest to people installing BSDI
- /ms: empty
- /sendmail: Sendmail, loved by some, hated by others - config files
- /skel: example stuff for home directories
- /tabset: funky things for funky terminals
- /tmac: unknown
- /vgafont: more unknown things
- /zoneinfo: time zone config files
- /skel: 'skel'eton files for new users
- /src: files included in a BSDI distribution
- /tmp: landing spot for some temporary files
- /ucb: symlink to /usr/bin
- /var: account files and other local system things
- /account: data files for 'lastcomm'
- /backups: backups of important system files (passwd, etc)
- /cron: the wonderful scheduler's stuff lives here
- /db: things of interest to BSDI kernel hacker types
- /emacs: emacs, participant in many an editor war.
- /lock: temporary files locked by emacs a long time ago
- /games: games used to live here, now just some leftover files
- /log: tons of nice logs about system activity
- /mail: user mail spools, some quite large
- /msgs: unknown
- /preserve: empty
- /quotas: empty
- /run: temporary files used by running system programs
- /rwho: nothing important
- /at: control files for the 'at' program
- /fax: things for fax handling, unused here
- /lpd: files for the print spool
- /mqueue: outgoing mail queue
- /news: stuff for Usenet news, presently unused
- /notes: files for the 'notes' program
- /oldnotes: empty
- /output: empty
- /secretmail: it's a secret..... (it's empty)
- /uucp: UUCP lock files, for ttys and such
- /uucppublic: empty
- /tmp: landing strip at the airport for temporary files
- /var: symlink to /usr/var
And now, some extremely freeform reactions based on reading this for probably the first time in 24 years:
I'm pleased that I was reminding people that root should not log in even back then. Today, it might involve the word "evil".
I guess this is before I had been sufficiently chastised by the then up-and-coming Linux weenie crew for calling it "X-windows" and switched over to either "the X Window System" (no S!), X11, or just "X". Why the drama? Because "Windows" was the devil!!11! It was the 90s, what can I say?
Speaking of Windows, that date of this file looked familiar, so I went and looked. Sure enough, it's four days after the release of Windows 95. Start me up, indeed. (Did they ever listen to the other verses of that Rolling Stones song? You're doing what to a dead man?)
I'm pretty sure I didn't count myself in the set of C programmers back then based on the comments for /usr/include and /usr/lib.
/usr/demo? Emulating DOS? I sure hope I never actually tried that on that box. It had enough to do as a mere 486DX2-66 already.
Apparently the home directories weren't on their own device initially, hence /usr/home. Then, when they got their own drive, that was mounted on /home and /usr/home became a symlink to it. This happened before I took over the box.
I had a friend back then who loved labeling things 'sassy', kind of equivalent to "awesome" or "badass" or "lit" or whatever else we use today. They were namechecked in the original document but are parameterized here for their privacy.
This file suffers from the problem of "I hope you know how to look up some of this crap" when it says things like "fonts for the 'groff' program". If the reader doesn't know what groff is, and has no idea how to use man/whatis/apropos or similar, they're not going to learn much from this thing. They might intuit that it has something to do with fonts, but what?
I apparently had no idea what locales were used for back then, and thought cron was "wonderful". Ignorant bliss!
I hung a lantern on the whole love it, hate it thing with Sendmail. Just think of how many remote root exploits came through that giant swinging barn door in the years after this was written. Where are the time travel scifi novels about going back in time and rooting every single machine you see because you know all of the holes that won't be found for years or even decades? "Oooh, it's only 1987 so the Morris worm hasn't happened yet! Hello WIZ and fingerd overflow!"
As for "files included in a BSDI distribution", ermmm, isn't that damn near everything on the disk except for the stuff the users created? It's a poor description for /usr/src at any rate since it glosses over the whole notion of source code entirely.
My first reaction to /usr/ucb was a "wow, that's old". My second reaction was something vague about improv. Yes, and...
Did you notice that it's /usr/var on this box as the canonical location? I had to double-check the document to be sure when I hit that part of it. Crazy. Sure enough, down at the bottom, there's /var, pointing over at /usr/var. I guess the notion of "try to set up your /usr so it could theoretically be mounted read-only" never entered the picture. Nobody tried to do "common RO /usr over NFS" here, clearly.
Kernel hackers would care about what's in /usr/var/db? What?
Regarding /usr/var/emacs, technically the participants are the (human) users of the various editors. The editors themselves are just standing there watching people do their performance art. Funny, though, that there's no "vi" path anywhere, right? (Save your venom -- I used pico back then, and I still use nano today, including this right now).
I think /usr/var/games died because "we don't want students playing games on the school equipment". You know, because all of those ASCII orcs and kobolds are taking up SO much memory and CPU time. Of course, the older, more sensible me says "it's so the kids focus on their school work instead of leveling up in dungeons".
We had some user mailboxes which were "quite large" by my own admission, and right next door, we had nothing configured in /var/quotas. What an amazing coincidence!
Usenet, "presently unused". Did I think we were going to get newsgroups flowing in, whether via UUCP or NNTP? On a high school machine? If the powers that be didn't like nethack and rogue, what would they think of alt.2600 and worse? Yeah, that was never going to happen.