I've assembled some notes from old manuals and other sources
on the formats used for on-disk file systems through the
Additional notes, comments on style, and whatnot are welcome.
(It may be sensible to send anything in the last two categories
directly to me, rather than to the whole list.)
All, IEEE Spectrum have asked me to write a paper on Unix to celebrate the
40th anniversary of the release of 1st Edition in November 1971. I'm after
ideas & suggestions!
I think my general thrust is that Unix is an elegant design, and the
design elements are still relevant today. The implementation is mostly
irrelevant (consider how much the code has changed from assembly -> C,
from the simple data structures in V7 through to current BSD), but the
original API is classic. Note that about 28 of the 1st Ed syscalls are
retained in current BSDs and Linux, and with the same syscall numbers.
I'm having some trouble thinking of the right way to explain what is
an elegant design at the OS/syscall level, so any inspirations/ideas
would be most welcome. I might highlight a couple of syscall groups:
open/close/read/write, and fork/exec/exit/wait.
If you have any references/URLs you think I should look at, please
pass them on to me.
I'm also trying to chase down some quotes; my memory seems to be failing me
but I'm sure I've seen these somewhere:
- in a paper, I think by Thompson & Ritchie, where they assert that the
kernel should provide no more than the most minimal services to the
userland programs. I thought this was the CACM paper, but I can't spot
this bit. Maybe it's in Thompson's preface to the Lions Commentary,
of which my copy is elsewere at present.
- I'm sure I remember someome (Kernighan?) say that Ritchie encouraged
them to espouse the use of processes as context switching was cheap,
but later measurements showed that in fact it wasn't that cheap in
the early versions of Unix.
Anyway, if you can think of good ideas/references about the elegance of
Unix, especially from the design perspective, I would much appreciate them.
As part of my IEEE Spectrum article on 40 years since 1st Edition
Unix, I've been asked for some suitable imagery/photos. Has anybody brought
1st Edition up on a real PDP-11/20, and if so, could they take some photos
of the system?
I think they would even be happy with photos of PDP-11s running V6 or V7.
Anything that you can supply would be great - there is not a lot of
photos from the early days of Unix.
Thanks in advance,
I was looking at Tom Yam's 4.0 BSD 'starunix' restoration project, and I had
a question about the version number that is reported vs the dates... I'm
using wikipedia as a source (I know I know..)
Anyways Tom's 4.0 boots up like this:
87844+15464+130300 start 0x530
VM/UNIX (Berkeley Version 4.1) 11/10/80
But the wiki page lists 4.1 being from June of 1981, and 4.0 being from
November of 1980.. Did 4.0 BSD ship reporting itself as 4.1? I guess there
is the possibility that the kernel may include patches to bring it up to
Does anyone have tape dumps of 4.0 & 4.1 ...?
I did find some iso image that has various levels of BSD but they are not in
tape dumps but rather extracted to the filesystem.. the 4.0 & 4.1 from there
seem identical Or at a minimum they use the same kernel that reports itself
as 4.1 ...
Anyways I'm just wondering....
Also from that cd image there was enough of 4.1c to make a working system by
untarring it from within 4.2 BSD ...
VAX780 simulator V3.8-1
Listening on port 23 (socket 156)
215688+63964+69764 start 0xf98
4.1c BSD UNIX #2: Tue Aug 28 09:39:12 PDT 1984
real mem = 8384512
avail mem = 7036928
using 148 buffers containing 838656 bytes of memory
mcr0 at tr1
mcr1 at tr2
uba0 at tr3
hk0 at uba0 csr 177440 vec 210, ipl 15
rk0 at hk0 slave 0
rk1 at hk0 slave 1
uda0 at uba0 csr 172150 vec 774, ipl 15
ra0 at uda0 slave 0
ra1 at uda0 slave 1
zs0 at uba0 csr 172520 vec 224, ipl 15
ts0 at zs0 slave 0
dz0 at uba0 csr 160100 vec 300, ipl 15
mba0 at tr8
root on ra0
WARNING: should run interleaved swap with >= 2Mb
Automatic reboot in progress...
Tue Aug 28 09:54:53 PDT 1984
/dev/rra0a: 836 files, 6010 used, 1419 free (35 frags, 173 blocks)
/dev/rra0h: 6598 files, 41780 used, 320080 free (160 frags, 79980 blocks)
Tue Aug 28 09:54:58 PDT 1984
local daemons: telnetd ftpd tftpd syslog sendmail.
preserving editor files
standard daemons: update cron accounting berknet mail printer.
starting network: rshd rexecd rlogind rwhod routed.
Tue Aug 28 09:55:00 PDT 1984
ucbmonet login: root
Last login: Tue Aug 28 09:44:44 on tty00
4.1c BSD UNIX #2: Tue Aug 28 09:39:12 PDT 1984
Master source now lives here; freeze your 4.1c stuff now.
For those who are curious....
When I boot V7 in SIMH (pdp11), I get a root shell and a root filesystem,
but... I see that /usr/bin is on root's default PATH, but I have no
/usr/bin directory. Is there some way I could get a /usr/bin with
additional executables, to get the full flavor of V7?
By way of introduction, I first started with *ix on an AT&T 3Bmumble, and
started really getting into it with SunOS 4.1.1. I've recently become
interested in trying a large number of different *ix's - I guess it was the
ease with which VirtualBox allowed many of those, and then seeing Nordier's
V7 port to x86 got me curious about trying some really old versions - he
mentioned that there was a pdp11 emulator available...
> Date: Wed, 3 Aug 2011 20:35:15 -0700
> From: Larry McVoy <lm(a)bitmover.com>
> To: Dan Stromberg <drsalists(a)gmail.com>
> Cc: tuhs(a)minnie.tuhs.org
> Subject: Re: [TUHS] /usr/bin on V7?
>> By way of introduction, I first started with *ix on an AT&T 3Bmumble, and
>> started really getting into it with SunOS 4.1.1.
> SunOS 4.1.1, ah, sweet memories. I and a bunch of my friends worked on
> that one. Guy Harris, even though he had left for Auspex, would come back
> to building 5 at Sun around 5:30, bang on the door, John Pope or I or one
> of the other kernel guys who worked into the night, would let him in and
> give him a place to work, and for the next few hours you'd hear "Jesus,
> they still haven't fixed this?" and some fix would get pushed in.
> That was how much we loved SunOS. Solaris? Not so much. We put in tons
> of effort to make SunOS good and it was a very pleasant version of Unix.
if you haven't yet, check out tme sometime:
On Wed, Aug 3, 2011 at 8:24 PM, Michael Davidson <m_d(a)pacbell.net> wrote:
> You probably don't have /usr/bin because you haven't mounted /usr yet.
That's a good hypothesis, especially given the info I presented, but I do
have -some- things under /usr, and if I manually rerun sh -x /etc/rc in
multiuser, I get an error about /usr already being mounted.
> On V7 as best I can remember. /usr was always a mounted filesystem.
> So, somewhere in your V7 image there should be a disk image for /usr that
> can be hooked up to an appropriate device under SIMH and then mounted.
> Actually, it might already be there if your disk image is the entire device
> and not just the root filesystem - if you can figure out what your root
> device is then I would expect /usr to be on the same major device number but
> with aminor device # of 2 (root being 0 and swap being 1).
I'm thinking /usr is /dev/rp3, because my /etc/rc looks like:
# cat /etc/rc
echo "Restricted rights: Use, duplication, or disclosure
is subject to restrictions stated in your contract with
Western Electric Company, Inc." >/dev/console
cat /dev/null >/etc/utmp
/etc/mount /dev/rp3 /usr
rm -f /usr/spool/lpd/lock
: /etc/accton /usr/adm/acct
rm -f /usr/tmp/*
rm -f /tmp/*
> Actually if you just take the system multi-user it might even do it for
This does seem to at least try to mount /usr for me - hitting ctrl-d at the
initial singleuser #, that is.
Interestingly though, it seems that the number of directories in /usr is the
same on first boot into single user, as after /etc/rc has run as part of
entering multiuser, so perhaps my root filesystem has things in /usr that
would normally be obscured by a /usr mount. Also, /etc/mtab seems untouched
(in fact, it's nonexistent) after entering multiuser, and the output of
/etc/mount continues to be nothing.
touch /t does create a file named t in the root directory, so it's not
something about the root filesystem being readonly.
I'm puzzled. And yet, I'm enjoying it. :)
> --- On *Wed, 8/3/11, Dan Stromberg <drsalists(a)gmail.com>* wrote:
> From: Dan Stromberg <drsalists(a)gmail.com>
> Subject: [TUHS] /usr/bin on V7?
> To: tuhs(a)minnie.tuhs.org
> Date: Wednesday, August 3, 2011, 7:53 PM
> When I boot V7 in SIMH (pdp11), I get a root shell and a root filesystem,
> but... I see that /usr/bin is on root's default PATH, but I have no
> /usr/bin directory. Is there some way I could get a /usr/bin with
> additional executables, to get the full flavor of V7?
> By way of introduction, I first started with *ix on an AT&T 3Bmumble, and
> started really getting into it with SunOS 4.1.1. I've recently become
> interested in trying a large number of different *ix's - I guess it was the
> ease with which VirtualBox allowed many of those, and then seeing Nordier's
> V7 port to x86 got me curious about trying some really old versions - he
> mentioned that there was a pdp11 emulator available...
> -----Inline Attachment Follows-----
> TUHS mailing list
> TUHS(a)minnie.tuhs.org <http://mc/compose?to=TUHS@minnie.tuhs.org>
What type of licensing agreements (maybe informal) were used for the
early INGRES tape distributions? I am trying to see if they were an
example for BSD or how compared with early BSD.
The BSD-style licenses were not introduced until 1987 and later
(starting in but not completed in 4.3BSD-Tahoe). But various earlier BSD
(distribution) components did have open source licenses long before that
-- such as Eric Allman's trek (circa 1977) in 1BSD and MIT's X
components (1985) shipped with 4.3BSD.
The COPYRIGHT for INGRES 6.3/-1 (February 1, 1981) source shipped with
2.79BSD (Febuary 1981) indicated it was not open source: "... may not be
reproduced or disclosed without the prior written permission of the
My BSD history book in progress has at least 15+ pages of examples and
commentary and interview quotes about the history of proprietary and
open source licensing in early BSDs. I also plan to research the
history of licensing for W and early X.