> They are all in the V6 library.
Oops, not _end. In the V6 linker, "_end" is not defined if there are still
undefined symbols at the end of the linking run.
I remember finding this in some obscure place in the V6 documents; it's not
in 'ld(I)'. Anyone remember where it's discussed?
I've been doing a lot of reading of systems admin books lately including:
Frisch, E. (1991). Essential System Administration (3rd edition is my
fattest book other than Unabridged Shakespeare)
Hunter, B. H., & Hunter, K. B. (1991). UNIX Systems Advanced
Administration and Management Handbook (Opinionated praxis)
Nemeth, E., Synder, G., & Seebass, S. (1989). UNIX System Administration
Handbook (5th edition is another fatty)
Tons of other more recent drivel.
I have been working on my ancient and not so ancient Unix library for a
while now, and it's kind of funny. It seems like once I read a book, be
it new or old, I hardly need it anymore - most of them wind up back at
half-price books. The exceptions are those that I find myself going back
to over and over and over again and wow are those few and far between.
An example of one of the gems is S. R. Bourne's The UNIX System, another
is Kernighan and Pike's The UNIX Programming Environment, and a couple
of newcomers for me are Volumes 3 and 8 of O'Reilly's The Definitive
Guides to the X Window System. I've written in the margins so many times
with these that there are sections where I can't fit any more notes.
That's the kind of sys admin guide I'd like to hear about. So, my
question for y'all is, what did y'all think about sys admin texts as
they were coming out? Were they well received, were they water to a
dying horse, were they paperweights, what? If you are of the camp, "we
don't need no stinking admin guide", or "we did it all by muscle memory
and didn't use books", don't reply. I'm curious about the experience of
those of y'all who actually used them. Were there any early standouts
and why did they stand out?
Anything from 1970 on is fair game.
P.S. Can you believe that 2000 is fast becoming 'history' worth
preserving? In 1997, we were rewriting our gas pump and credit card
transaction systems, which were written in C, to deal with upcoming Y2K
bugs. Oh, how the worm has turned :).
So now that I'm done futzing with the 4.1 manual for a while, I've decided to look around a few others to try and get a better feel for the continuity of different features as well as documentation practices between branches. On that note, the more I compare, the more continuity I find between PWB 1.0 and UNIX System III. Between that, various emails here, and some info from Clem, I feel fairly confident calling System III and V as well as the 4.1 in between PWB releases, at least as far as version continuity is concerned, so I may start using that nomenclature more here and there. On the flip side, the name UNIX/TS seems to bear less and less relevance outside of whatever efforts it did originate with in the late 70's. I eventually mean to aggregate all the references I've found together to develop a better picture of what that was, but just know that documentation consistency points to PWB 3, 4, and 5 as the true identity of the USG releases in the 80s, not UNIX/TS as I have referenced previously.
So now for an interesting bit of init history I've managed to piece together. The 4.1 manual still indicates the same init system as System III, based on a file called /etc/inittab but with a slightly different format and semantics from what we ultimately see in System V. That init, seen earliest thus far in PWB 3.0, seems to have been developed around that time. I'm struggling to find the email right now but I think someone on the list mentioned having written this one in either '79 or '80. As for the init in System V, it likely entered the PWB line from CB-UNIX based on the CB-UNIX 2.3 manual which can be found here: https://www.tuhs.org/Archive/Distributions/USDL/CB_Unix/cbunix_man5.pdf . I say likely as some recent perusal of the MERT Release 0 manual has now cast some doubt on that. So to start, CB-UNIX 2.3 appears to be somewhat contemporaneous with UNIX 5.0 in that the manual has pages labeled specifically UNIX 5.0. That said, the issue date on the front pages of the manuals is over a year apart, so the 5.0 additions could be just that, added pages after the formal 2.3 issue. Anyway, in common between them is an init system utilizing likewise a file named /etc/inittab, but with a slightly different format and some expanded functionality. The CB-UNIX manpage for this inittab(5) can be found on page 29 of the above document. I had never looked further in that one though, and a couple days ago, I was cataloging all of the pages present in that manual when I came across page 34. This is a page for lines(5) that simply says "No longer used. See inittab(5)." Curious, so perhaps this stream of init once called the file /etc/lines, then renamed it inittab to match PWB? The very next page answers part of that question. Page 35, also lines(5), contains a description of a file very similar to the inittab(5) entry except a line is 5 fields wide, including a "shellcm" field. Unfortunately, the remaining pages of this entry are not in the PDF, presumably this was a mistaken entry. I have another such mistaken entry in a moment. Anywho, what is there of the page indicates the id field actually had an impact on the /dev entry for the terminal line in that it would be named /dev/ln<id>, and goes on to say that if a line monitor other than /etc/getty is used this must be accounted for. So interesting little note there about using something besides getty for line monitoring. Otherwise the page reads pretty similar for what is there, indicating a likely continuity between this /etc/lines-based init and the CB variant of the /etc/inittab system. One interesting note is that /etc/lines supports C-style comments, /etc/inittab instead uses sh conventions. This lines file also indicates there is a run-level 7 which may have become the S run-level. The respawn and wait actions are there, and that's where the page cuts off, so no further evidence here of what was in /etc/lines in 1979 in CB-UNIX 2.1. By 1980 it is replaced with /etc/inittab.
So aside from the lines(5) stuff, this has been pretty well understood that System V init came from or at least strongly resembles CB-UNIX init as far as what is available documentation-wise. Well, as I mentioned above, the MERT Release 0 manual may shed some further light on this matter, albeit without fully illuminating it. So first, some MERT context. This document details the origins of MERT Release 0 pretty succinctly: https://www.tuhs.org/Archive/Documentation/Manuals/MERT_Release_0/Pgs%2037-… . Basically MERT 0 is the first "supported" release by the "Small Systems Planning and Development Department (8234)" at Murray Hill. The manual is based on the USG Program Generic Issue 3 version of the manual which was issued in early 1977. This manual, in turn, is from October 1977. This intro goes on to indicate that this product will eventually be released instead as "UNIX/RT" to accompany the in-progress "UNIX/TS" which is said here to be based on V7 with additions from USG Generic 3 and PWB. The MERT-specific portion of this manual is technically considered the second edition, presumably in that the first was the material maintained and distributed by Lycklama and Bayer. So in any case, the landscape of the time seems to be that V7 is starting to go around to the various streams, with UNIX/TS in the works to present it with USG/PWB stuff and then UNIX/RT being planned as the MERT-counterpart. This isn't quite my focus here, but does provide some UNIX/TS "stuff" that has been explained to varying degrees already. So where this all relates to the init though is this: https://www.tuhs.org/Archive/Documentation/Manuals/MERT_Release_0/Pgs%2001-…'s%20Manual%20for%20MERT.pdf On page 4 of this document is a list of pages that one must replace in a standard USG Program Generic 3 manual to produce a MERT Release 0 manual. In other words, this essentially lists which pages are changed for MERT. Of interest to this discussion is the V File Formats section on page 5. The instructions are to remove a page called "lines" and to add a page called "ttys". If you then go on to read through the manual, in section V, the ttys file suggests an init system akin to the research init system. This is also indicated by replacement of the init page itself with one describing a system closer to that of research than anything else: https://www.tuhs.org/Archive/Documentation/Manuals/MERT_Release_0/Unix%20Pr… . So based on this, it sounds like USG Generic 3 may have had the same /etc/lines init that we see hints of in CB-UNIX. This also then suggests that CB-UNIX 2.3 may have some basis in USG Generic 3 just like MERT. Based on yet another email I'm struggling to find, another user here had offered up some info regarding a USG Generic 2 manual he has from days past. That manual contained an init similar in flavor to the research init as well, indicating that this init system shows up as part of Generic 3.
So now for that other misprint that also bears some relevance. In the UNIX 4.1 manual I recently finished restoring, there was an errant gettydefs(4) page which was only the very last few lines of the manpage (basically the SEE ALSO) section. This file is not part of the pages one needs to discard to create a MERT manual and is not otherwise in the manual, so does not appear to be a part of Generic 3. However, this file does show up in CB-UNIX 2.3, and from there presumably gets sucked into System V, but the misprint suggests such a manpage existed somewhere that would've accidentally wound up in a UNIX 4.1 typesetting run. In any case, it is very well possible this init system may have started popping up in the PWB line before 5.0, but I can't confirm this.
In any case, to consolidate this information, here's a bit of a timeline for the init as I see it:
1975 May - V6 issued. Begins getting adopted as the standard base for various streams
1976 January - USG Generic 2 issued. From what has been discussed, this still has a research-style init based on /etc/rc and /etc/ttys
1977 March - USG Generic 3 issued. This allegedly features the addition of the /etc/lines-based init that eventually becomes System V init
1977 May - PWB 1.0 issued. Forks the documentation style quite a bit, starts trends that continue to System III and beyond, still research-style init
1977 October - MERT 0 issued. This uses Generic 3 as a base but reverts to a research-style init system
1979 January - V7 issued. Still using /etc/rc and /etc/ttys
1979 November - CB-UNIX 2.1 issued. This appears to be using a Generic 3-style /etc/lines init
1980 June - PWB 3.0 issued. This has the first known appearance of /etc/inittab but with a different implementation from USG Generic 3
1981 May - CB-UNIX 2.3 issued. By this point, /etc/lines has morphed into /etc/inittab and /etc/gettydefs has been added
1981 June - PWB 4.1 issued. The manual still features the PWB 3.0-style init but an errant page suggests at least possibly /etc/gettydefs support
1982 June - PWB 5.0 issued. The transformation is complete, PWB now uses Generic 3-descended init with CB-UNIX gettydefs
This all makes me wonder what PWB 2.0 and UNIX/TS (if it ever coalesced) would've used. Precedent would say PWB 2.0 would use research-style init and UNIX/TS would've likely used Generic 3 if the aim was continuity with the USG Generics, but who knows. Anywho, hope that info's helpful to anyone else researching init systems. Of course if you have info that contradicts or enhances any of this I'd love to hear it!
- Matt G.
With all your help I thought I would share a couple
of programs I had a hand in.
more.c is like 'more' for Linux. more abc.txt or cat abc.txt | more or ls
-l | more
pg.c is a 'pager' program. pg abc.txt def.txt
cls. is a clear screen home cursor program using VT100 codes. It works on
the console or telnet or putty.
All can be compiled and placed in /usr/bin
cc -o /usr/bin/cls cls.c
cc -o /usr/bin/pg pg.c
cc -o /usr/bin/more more.c
More to come. Enjoy.
> From: Michael Huff
> All of the simh vax tutorials on Gunkies still give instructions to turn
> all of the tar files (plus things like miniroot) into a single tap file
> for installation.
If those are out-of-date, you/someone should get a CHWiki account and
update them! :-)
Documentation skew from code has always been a problem...
I am using enblock to create tap files from tar files.
Was a program ever written to convert tap files to tar files or
a Linux program that could read tap files?
I also see that writing to a tap file from Unix the size increases
when writing multiple files however when writing 1 file to the tap
file "tar cv0 ..." the tap file still remains at its larger size from the
previous larger writes. Is this what is expected?