Chris Torek:
You're not perpendicular to your own surface? :-)
===
I'm not as limber as I used to be.
Besides, I'm left-handed, so what use would I have for
right angles?
Norman Wilson
Toronto ON
(I don't wish to know that)
> From: Steve Nickolas
> I personally believe a lot of code in modern operating systems is larger
> than the task requires.
The "operating" is superfluous.
Noel
George Michaelson:
wish I hadn't read "Norman Wilson" as "Norman Wisdom" (british
prat-fall comedian in the style of Jerry Lewis)
===
It's much better than the more-common typo in which
people call me normal. Neither accurate nor an
aspiration.
Norman Wilson
Toronto ON
I've always enjoyed this paper; recently I found occasion to thumb
through it again. I thought I'd pass it on; I'm curious what some on
the list think about this given their first-hand knowledge of relevant
history (Larry, I'm looking at you; especially with respect his
comments on the VM system).
- Dan C.
http://www.terzarima.net/doc/taste.pdf
As an admirer of minimalism, who has given talks that extol
Norman Wilson's streamlining of research Unix, I naturally
like Forsythe's thesis.
I noticed unintended irony in one more or less throw-away remark:
"It is dangerous to place too much hope in any improvement coming from just
following new fashions, if we lack insight into what really went wrong
before. Without that insight, I suspect that rewriting UNIX in C++,
for example, could easily become an excuse for increasing complexity
(because by using C++ `we can handle more complexity')."
Bjarne Stroustrup's avowed reason for building cfront, which
evolved into C++, was to have a tool for building an operating
system in object-oriented style. The tool took on a life of
its own, and arguably became more complex than the old-fashioned
Unix he aspired to improve on.
Doug
On Oct 22, 2017 1:39 AM, "Will Senn" <will.senn(a)gmail.com> wrote:
[...]
What is the last bootable and installable media, officially distributed by
Berkeley?
Is that image currently publicly accessible?
What is the closest version, that is currently available, that would match
the os described in "The Design and Implementation of the 4.4 BSD Operating
System"?
Probably one of the best ways to get questions about installation media
answered is to simply email Kirk McKusick. He's a really nice guy and will
probably give you an answer pretty quickly.
That said, of the three distributions you mentioned, bootable/installable
media only existed for 4.4BSD (also called the "encumbered" distribution).
-Lite and -Lite2 were "reference distributions." It didn't take *too* much
work to get -Lite working, but it wasn't something that ran out of the box
(or more properly, off of the tape). The original idea was to release
4.4BSD-encumbered to Unix source licensees, and at the same time publish
4.4BSD-Lite sans the redacted bits as an open source distribution. These
were to be the final BSD releases from UCB, but the CSRG found they had
some coin left in the coffers a few months later, so they did -Lite2 as
something of a final hurrah snapshotting some ongoing maintenance work (and
possibly some research?) before officially shutting down.
At one point, I had a copy of a bootable exabyte tape with 4.4-encumbered
installation and source images for SPARC, specifically sun4c machines, that
I had liberated from somewhere. My understanding was that the reference
hardware at Berkeley was 68030- and 68040-based HP 9000 machines, and the
SPARC bits were a contribution from Chris Torek. I got -Lite running on an
older SPARCstation 1, but it wasn't particularly reliable (the compiler
would segfault, and it panic'ed once a day or so), so we put SunOS back on
it pretty quickly.
Hope that helps.
- Dan C.
I'm wondering, with 80s and 90s era Unix being discussed, if there are
any copies of the 80s and 90s era CAD software extant in some form or
other? (Preferably free to good archive?)
IIRC it was a major driver of graphics capabilities in Unix
workstations around that time.
Wesley Parish
> macOS requires you to have a data section aligned to 4K, even if you
> don't use it. The resulting binary is a little over 8K; again, mostly
> zeros.
Not quite. The classic empty executable file for /bin/true works
on OS X. That is not just a clever trick;it's a natural consequence
of Kernighan's ancient prrecept: do nothing gracefully. Conceivably
the 4K data section is, too--if the page has no physical presence
until it is accessed.
Doug
> From: Dan Cross <crossd(a)gmail.com>
> Hope that helps.
I don't have anything to add to this discussion, but may I point out that this
is _exactly_ the kind of thing we'd like to make available at the Computer
History Wiki:
http://gunkies.org/wiki/Main_Page
I'm too busy with other tasks to add it all myself, but I hope you all will be
able to add your pearls there, where it will be available in an organized way,
rather than having to hope Google/Bing/etc can find it in the list archives
among the megatons of other dross on the Internet.
If anyone would like an account there (due to spam issues, anon editing has
been disabled), please let me know, and I'll get you set up right away - just
send me the account name you like (a lot of us use our old time-sharing system
account names :-), and the email address you'd like associated with it.
Noel
All,
I'm not 100% sure how best to ask this, but here goes...
I own a copy of the CSRG Archives CD Set that Kirk McKusick maintained.
I bought them ages and ages ago (BTW, they are now all available on
Archive.org) I dusted them off today because I had the brilliant idea
that with my significant growth in understanding related to all things
unix and ancient unix, that I might find them interesting and useful.
They are interesting, jury's out on useful beyond being a broweasable
historical archive of individual files. One of the CD's contains a 4.4
and 4.4BSD-Lite2 folder and is labeled releases (disk 3). I opened the
4.4 folder and it appears to be a set of folders and files I would
expect to find on a release tape, but unlike a tape, which one could
mount and boot from, I have no idea if this would be usable as install
media (if you do, please let me know how).
I googled about the two releases and although the same text appears all
over the place about how Berkeley released one version, then removed
some components, then re-released, and eventually wound up at
4.4BSD-Lite2, I could not figure out whether the word release meant
sourcecode, installable media, or what. I gather a lot of this made
sense back in the early 1990's but it's all a bit muddy to me in 2017.
In trying to figure it all out, I came across a webpage talking about
2.11BSD (maintained into this decade) and another about 4.3BSD
Quasijarus (also maintained in this decade?). Both descriptions
contained the text, "It is the release of 4.4BSD-Lite, and requires the
original UNIX license" (see http://damnsmallbsd.org/pub/BSD-UNIX) My
sense of things after reading and browsing and such is that with regards
to 4.4, 4.4BSD-Lite, and 4.4BSD-Lite2, they are either not released
(4.4), encumbered and retracted (4.4BSD-Lite), or not installable
(4.4BSD-Lite2)...
Dang, so confusing...
My interest is pretty much based on a strong desire to boot up a 4.4
system that as closely as possible maps to the one described in "The
Design and Implementation of the 4.4 BSD Operating System" that I can
experiment with as I'm going through the text. I think I understand the
version history as it is described in various places, but I just can't
figure how the last handful of versions relate to real media that is
available to enthusiasts.
Questions begging answers:
What is the last bootable and installable media, officially distributed
by Berkeley?
Is that image currently publicly accessible?
What is the closest version, that is currently available, that would
match the os described in "The Design and Implementation of the 4.4 BSD
Operating System"?
Many thanks,
Will
--
GPG Fingerprint: 68F4 B3BD 1730 555A 4462 7D45 3EAA 5B6D A982 BAAF
Dave Horsfall reported failures for the TUHS mirror at his site.
I've just looked at our TUHS mirror in Salt Lake City, Utah, USA, and
found that
% rsync rsync://rsync.math.utah.edu
produces the expected list.
I also checked the mirror cron job logs, and found that they all look
similar for every day this year, with no indication of connection
errors.
I then checked the TUHS filesystem tree, and found only two files
created in the last month (timestamps in UTC):
-rw-rw-r-- 1 mirror mirror 99565 Oct 20 17:27 UA_Documentation/TUHS/Mail_list/2017-October.txt.gz
-rw-rw-r-- 1 mirror mirror 400419 Sep 30 17:27 UA_Documentation/TUHS/Mail_list/2017-September.txt.gz
The first of those arrived here late last night (Oct 20 23:15 MDT, Oct
21 05:15 UTC).
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe(a)math.utah.edu -
- 155 S 1400 E RM 233 beebe(a)acm.org beebe(a)computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
> sed *n l pathname
>
> The latter also has the advantage that its output is
> unambiguous, whereas the output of historical cat *etv is not.
>
> But mind you, in preparation of this email i found a bug in
> Busybox sed(1) which simply echoes nothing for the above.
I assume that * is a typo for - . If so, sed did just what
-n tells it to--no printing except as called for by p or P.
And speaking of sed anticipating other tools, the inclusion
of "head" in v7 as a complement to "tail" was a close call
because head is subsumed by sed q.
Doug
All, behind the scenes we have had Grant Taylor and Tom Ivar Helbekkmo
helping us find a solution to the TUHS list DKIM issues. We have been
running two separate lists (unmangled and mangled TUHS headers) for a
few weeks. It looks like we can now merge them all back together and
use the settings on one to avoid (most of) the DKIM problems.
So that's what I've done: merged back to a single TUHS mailing list.
I've restored the [TUHS] on the Subject line as well.
I'll monitor the logs for further bounces. Fingers crossed there won't
be any further unsubscriptions from the list due to bounce processing.
If there are, I'll manually put you back in.
Cheers all & thanks to Grant and Tom.
Warren
[I tried to send this earlier, but was thwarted by list shenanigans.
Apologies if it's a dup.]
On Thu, Oct 19, 2017 at 10:52 AM, Ron Natalie <ron(a)ronnatalie.com> wrote:
> My favorite reduction to absurdity was /bin/true. Someone decided we
> needed shell commands for true and false. Easy enough to add a script that
> said "exit 0" or exit 1" as its only line.
> Then someone realized that the "exit 0" in /bin true was superfluous, the
> default return was 0. /bin/true turned into an empty, yet executable, file.
>
> Then the lawyers got involved. We got a version of a packaged UNIX (I
> think it was Interactive Systems). Every shell script got twelve lines of
> copyright/license boilerplate. Including /bin true.
> The file had nothing but useless comment in it.
Gerard Holzmann has something on this that I think is great:
http://spinroot.com/gerard/pdf/Code_Inflation.pdf
- Dan C.
PS: A couple of thoughts.
The shell script hack on 7th Edition doesn't work if one tries to
'execl("/bin/true", "true", NULL);'. This is because the behavior of
re-interpreting an execution failure as a request to run a script is
done by the shell, not exec in the kernel. This implies that one could
not directly exec a shell script, but rather must exec the shell and
give the path to the script as the first argument. I vaguely recall we
had a discussion about the origin of the '#!' syntax and how this was
addressed about a year or so ago.
I tried to write a teeny-tiny '/bin/true' on my Mac. Dynamically
linked, the obvious "int main() { return 0; }" is still a little over
4KB. Most of that is zeros; padding for section alignment and the
like. I managed to create a 'statically' linked `true` binary by
writing the program in assembler:
% cat true.s
# /bin/true in x86_64 assembler for Mac OS X
.text
.globl start
start:
mov $0x2000001, %rax # BSD system call #1
mov $0, %rdi # Exit status: 0 = 'true'
syscall
# OS X requires a non-empty data segment.
.data
zero: .word 0 As I recall,
%
macOS requires you to have a data section aligned to 4K, even if you
don't use it. The resulting binary is a little over 8K; again, mostly
zeros.
There are parlor tricks people play to get binary sizes down to
incredibly small values, but I found the results interesting. Building
the obvious C program on a PDP-11 running 7th Edition yields a 136
byte executable, stripped. Still infinitely greater than /bin/true in
the limit, but still svelte by modern standards.
> How realistic would the experience be to actually running the system
> described in the Unix Programming Environment [v8] if it's actually
running > BSD 4.1... Thanks for any insights y'all might have on this.
This question bears on a recent thread about favorite flavors of Unix. My
favorite flavor is Universal Unix, namely the stuff that just works
everywhere. That's essentially what K&P is about.
That's also what allowed me to use a giant Cray with no instruction
whatsoever. And to do everyday "programmering" on the previously
inscrutable Macintosh, thanks to OS X.
The advent of non-typewriter input put a damper on Universal Unix. One has
to learn something to get started with a novel device. I am impressed,
though, by the breadth of Universal Unix that survives behind those
disparate facades.
> From: Larry McVoy
>>> I was told, by someone that I don't remember, that uwisc was the 11th
>>> node on the net. ... If anyone can confirm or deny that I'd love to know.
> I dunno.
I don't have any axe to grind here. I don't care if they were the first, or
the last. You asked "If anyone can confirm or deny that I'd love to know",
and all I'm trying to do is _accurately_ answer that.
> That 1985 map has uwisc in there
I have a large collection of ARPANET maps here:
http://www.chiappa.net/~jnc/tech/arpanet.html
and the first one on which UWisc shows up is the October, 1981 geographical
map - over ten years since the ARPANet went up (December, 1969 is the earliest
map I have there).
> I do know that prior to the net there was uucp
Which "net" are we talking about here? ARPANET? CSNET? Internet? The UUCP network
long post-dated the ARPANET - I think it was started in the late 70's, no?
The earliest Internet map I have is from 1982, here:
https://upload.wikimedia.org/wikipedia/commons/6/60/Internet_map_in_Februar…
and again UWisc is not on it. (Yes, I know it's on Wikipedia, but I'm the one
who uploaded it, so I can verify it.)
CSNET I don't know much about, that may have been what the comment referred
to.
Wikipedia (for what little we can trust it) says "By 1981, three sites were
connected: University of Delaware, Princeton University, and Purdue
University"; since Lawrence Landweber at UWis was the main driver of CSNET, I
doubt it would have been far behind.
Noel
> From: Grant Taylor
> Does anyone know of a good place to discuss networking history, routing,
> email, dns, etc. I'd like to avoid getting too far off topic for TUHS.
You could try the "Internet History mailing list":
http://www.postel.org/internet-history/
which covers all of networking, including pre-Internet stuff.
Noel
> From: Larry McVoy
> I was told, by someone that I don't remember, that uwisc was the 11th
> node on the net. ... If anyone can confirm or deny that I'd love to know.
There's a copy of the July '77 revision of the HOSTS.TXT file as an appendix
here:
http://www.walden-family.com/dave/archive/bbn-tip-man.txt
The IMPs are numbered in order of deployment; so UCLA is #1, SRI is #2, Utah
is #4, BBN is #5, etc.
I don't see Wisconsin in the list at all. Maybe the person meant CSNET?
Noel
Does anyone know why stty won't accept '^?' in v7? It will accept '^h',
but then the shell expects ^h to "backspace". I am trying to get the
delete key on my mac to do the backing up and it's '^?'. # isn't my
favorite since it's used in C programs, but pressing CTRL-h to backup is
a pain too. If you've read this far, I have three more questions:
1. How do you escape # in order to write a C program if # is the erase
character in the terminal?
2. How do you enter a literal character in the v7 shell (I am used to
CTRL-v CTRL-DEL to enter the delete character on other unices)?
3. Is there a way to echo the ascii value of a keypress in v7?
Thanks,
Will
--
GPG Fingerprint: 68F4 B3BD 1730 555A 4462 7D45 3EAA 5B6D A982 BAAF
Dear THUS members,
An international conference on the history of Unix will be held in
Paris, Oct. 19th, at the Conservatoire National des Arts & Métiers. Here
is the link to the (bilingual) program :
http://technique-societe.cnam.fr/colloque-international-unix-en-france-et-a…
<http://technique-societe.cnam.fr/medias/fichier/programme-colloque-unix-bil…>
There will be audio recordings of the symposium available afterwards -
check the program page to know where and when.
It will be followed, the next day, by a kick-off meeting of the research
project “What is a computer program?”:
http://technique-societe.cnam.fr/table-ronde-qu-est-ce-qu-un-programme-info…
<http://technique-societe.cnam.fr/table-ronde-qu-est-ce-qu-un-programme-info…>
Please note that an active member of this list, Clem Cole, will be
giving a much awaited talk!
Best,
Camille Paloque-Bergès, for the orgazining committee(a THUS lurker !).
--
Institutional email address : camille.paloque_berges(a)cnam.fr
<mailto:camille.paloque_berges@cnam.fr>
*Laboratory for the History of Techno-Sciences (HT2S), Conservatoire
national des arts et métiers, 2 rue Conté, 75003 Paris, France
*Associate researcher at the Digital Paths cluster of CNRS' Institute
for Communication Sciences (ISCC)
I remember a thread on the mailing list a while back where Warren
announced the availability of the V8-V10 source code and being intrigued
at the possibility of running it. Then I recently came across a note by
dmr referring to V8 and further tweaking my interest:
http://minnie.tuhs.org/pipermail/tuhs/2003-June/002195.html
Here's what he said:
As for the system aspects: K&R 1 (1978) was done on
what would soon be 7th edition Unix, on 11/70;
K&R 2 (1988) using 9th edition on VAX 8550.
Kernighan and Pike's Unix Programming
Evironment (1984) used 8th edition
on VAX 11/750.
About the releases (or pseudo releases) that
Norman mentions: actually 8th edition was
somewhat real, in that a consistent tape
and captured, probably corresponds fairly
well with its manual, and was educationally
licensed for real, though not in large quantity.
9th and 10th were indeed more conceptual in that
we sent stuff to people (e.g. Norman) who asked,
but they weren't collected in complete and
coherent form.
This combined with my tinkering with V7 and working through K&R (1978)
got me hankering to go through K&P (1984) on a Vax running V8. Then, I
came across this:
https://virtuallyfun.com/2017/03/30/research-unix-v8/
and decided to jump in and start running V8. Then it hit me - is it even
possible to run a V8 instance (similarly to V5/V6/V7, from tape) or is
it as this note says, necessary to run the bits on a 4.1 BSD base? How
realistic would the experience be to actually running the system
described in the Unix Programming Environment if it's actually running
BSD 4.1... Thanks for any insights y'all might have on this.
Thanks,
Will
--
GPG Fingerprint: 68F4 B3BD 1730 555A 4462 7D45 3EAA 5B6D A982 BAAF
> From: Will Senn
> All that cooked and raw stuff is gobbledegook that I'll have to read up
> on.
The raw/cooked stuff isn't the source of the worst hair in the TTY driver;
that would be delays (on the output side), and delimiter processing (on the
input side).
The delays are for mechanical terminals, because they need delays after a
motion command (e.g. NL, CR, etc) before the next printing character is sent;
differing for different motion control commands, further complexified by the
current print head position - a Carriage Return from column 70 taking a lot
longer than one from column 10. The driver keeps track of the current column,
so it can calculate this! It does the delays by putting in the output queue a
chacter with the high bit set, and the delay in the low bits; the output start
routine looks for these, and does the delay.
On the input side, every time it sees a delimiter (NL, EOF), it inserts a 0xFF
byte in the input queue, and increments a counter to keep track of how many it
has inserted. I _think_ this is so that any given read call on a 'cooked'
terminal will return at most one line of input (although I don't know why they
don't just parse the buffer contents at read time - although I guess they need
the delimiter count so the read call will wait if there is not a complete line
there yet).
I should look and see how the MIT TTY driver (which also supported 8-bit input
and output) dealt with these...
Noel
> From: Will Senn
> I didn't know that the delete key served a purpose, interrupt
At MIT, the PWB1 (effectively) system that was standard at Tech Sq had had its
teletype driver completely re-written by the time I started using it, and that
was changed, so I never saw this IRL.
Recently, I needed a Unix to run under Ersatz-11, to talk to physical QBUS
-11's and download them over their console line, so I went with V6 (since I
had not at that point managed to recover the MIT system). Wow. Talk about
a rude awakening!
That was one of the things that was, ah, problematic - and in V6, there's no
way to change the interrupt character. (And no, I didn't feel like switching
to a later version!)
An even bigger problem was that in vanilla V6, there's _no way_ to do 8-bit
input _and_ output. Sheesh. I managed to fix that too, after a certain amount
of pain. (I missed a code path, or something like that, and it took me quite a
while to figure out why my fixes didn't work.)
Noel
Many thanks for on and off list replies to my query.
I happened to stumble across a paper by Krik McKusick (right here in the THUS archives) that has some more background:
http://www.tuhs.org/Archive/Documentation/Unix_Review/Berkeley_Unix_History…
and in particular on page 38 of the magazine (page 6 of the PDF).
It says (with some reformatting for clarity):
"The contract called for major work to be done on the system so the
DARPA research community could better do its work. Based on the needs
of the DARPA community, goals were set and work began to define the
modifications to the system.
In particular, the new system:
- was expected to include a faster file system that would raise
throughput to the speed of available disk technology,
- would support processes with multi-gigabyte address space requirements,
- would provide flexible interprocess communication facilities that
would allow researchers to do work in distributed systems,
- would integrate networking support so that machines running the new
system could easily participate in the ARPAnet.”
So, IPC facilities to support distributed systems were apparently an explicit goal, and that helps explain the composition of the committee.
It continues:
"To assist in defining the new system, Duane Adams, Berkeley's contract
monitor at DARPA, formed a group known as the "steering committee” to
help guide the design work and ensure that the research community's needs
were addressed.
This committee met twice a year between April, 1981 and June, 1983, and
included [name list as before]. Beginning in 1984, these meetings were
supplanted by workshops that were expanded to include many more people.”
This shift in membership after 4.2BSD shipped had already been noted. The committee seems to have had a productive start:
"An initial document proposing facilities to be included in the new system
was circulated to the steering committee and other people outside Berkeley
in July, 1981, sparking many lengthy debates.”
I would assume that those initial discussions included debates on what would become the socket API. I’ve asked Kirk McKusick if he still remembered that initial discussion document. The reply was:
"The document to which you refer became known as the "BSD System
Manual". The earliest version that I could find was the one
distributed with 4.2BSD in July 1983 which I have attached.”
If anyone knows of earlier versions of that document (prior to 1982), I’d be highly interested.
The paper also notes:
"During the summer, Joy concentrated on implementing a prototype version
of the interprocess communication facilities.”
I’ll scan the early (partial) SCCS logs for remnants of that (a long shot, but worth a try).
Paul