1 of 80

Unearthing Unix History

Warner Losh

2 of 80

3 of 80

Standard History of Unix

Condensed to 3ish slides

4 of 80

Typical Unix History (1)

1964 →Join Multics�1969 ←Exit Multics

1969

PDP-7 Unix

1971�PDP-11 Unix

1973 (V4)

C rewrite of Unix

5 of 80

Typical Unix History (2)

1975 (V6)�Unix in the wild

and ports start

1979 (V7)�Unix explodes

1983 4.2BSD�Unix gets networking

1984 System V

Unix goes Commercial

1980s

Unix Wars

1990s

Rise of Linux

and FOSS

6 of 80

Simplified Family Tree

Today’s Talk

7 of 80

8 of 80

9 of 80

Research Resources

  • TUHS - The Unix Historical Society
  • Bitsavers - scanning and archiving interesting bits of computing history

10 of 80

The Unix Historical Society (TUHS)

  • Founded by Warren Toomey
  • Outgrowth of the PUPS (PDP Unix Preservation Society)
  • http://tuhs.org
  • Collects all publicly available Unix artifacts in one place
    • Also some private ones that can’t be redistributed (but are preserved)
  • Provides a community for preservation and restoration of artifacts
    • 1972 version of Unix from DECtapes (V2/V3 kernel with surviving V5 disk image)
    • 1st Edition kernel from listings
    • PDP-7 kernel and userland source restoration
    • Some hardware emulation work to run old systems
    • BSD 4.1 restoration from partial copies
  • Pronounced “Toos” or “2’s”

11 of 80

Bitsavers

  • Dedicated to preserving paper and media artifacts from computing history
  • http://www.bitsavers.org
  • Started by Al Kossow
  • Scanning paper documents for almost 20 years
  • Focused on preserving documentation needed to write emulators
  • Labor of love by Al, although he now accepts well scanned documents
    • And works under the Computer History Museum in Mountain View

12 of 80

SIMH

  • http://simh.trailing-edge.com to download
  • Emulates most DEC hardware (minicomputers and peripherals)
  • Emulates important non-DEC hardware (mostly mainframes and minis)
    • Interdata (Perkin-Elmer) 16b and 32b systems (First V6 Unix port?)
  • Runs all of DEC’s old operating systems
    • TOPS-20
    • RSX-11
    • RT-11
    • RSTS/e
    • Unix (V4, V5, V6, V7, Sys III and Sys V)
  • Extensive network functionality (including emulators to talk to each other)
  • Written by ex DEC engineer

13 of 80

Who is AT&T?

  • AT&T is The American Telephone and Telegraph Company
  • “The Phone Company” monopoly in the US through 1982
  • Founded by Alexander Graham Bell
  • Bell Labs is the research group inside of AT&T
  • The Bell System is all the things it took for AT&T to deliver phone service
  • The US is big, so AT&T made most of its money on Long Distance Calls
  • Monopoly consent decree in 1956 made early licensing weird
  • 1982 breakup allowed AT&T to monetize Unix aggressively (System V)

14 of 80

What’s a PDP-7?

  • “Low Cost” 18-bit mini computers from 60s
  • Mostly binary compatible from model to model

PDP-1 (59)

~10

PDP-4 (62)

~25

PDP-7 (64)

~100

PDP-9 (66)

~400

PDP-15 (70)

~200

15 of 80

What’s a PDP-11 and/or VAX?

  • 16-bit (PDP-11) and 32-bit (VAX) minis
  • 600,000 PDP-11s and 400,000 VAXen sold

16 of 80

Ken’s New System

  • Ken loved the game Space Travel
  • GECOS version $50-$75 per game
  • Ken found discarded PDP-7 from Visual and Acoustics Department
  • Ken rewrote GECOS Space Travel in PDP-7 assembler to play
  • Transported binaries from GE-635 to PDP-7 on paper tape
  • Started Ken’s New System to make Space Travel hacking easier
  • Ken also started a Fortran compiler, ended up with writing B...

17 of 80

18 of 80

19 of 80

20 of 80

21 of 80

22 of 80

23 of 80

24 of 80

25 of 80

26 of 80

?

27 of 80

Lost? Not so fast...

  • Robert Morris Sr
  • Bell Labs from 1960-1986
  • Known for crypt, /etc/passwd
  • Passed away in 2011
  • Had large collection of papers
  • Doug McIlroy sorted in 2015
  • Found PDP-7 Unix manuals
  • Posted on https://tuhs.org/
  • Still no source

28 of 80

Spring 1971�UNIX-7 Late 1969

UNIX-11 Feb 1971

29 of 80

2016 PDP-7 sources recovered

  • Norman Wilson finds PDP-7 sources
  • Warren Toomey / TUHS “V0 unix”
  • PDP-7 toolchain written
  • PDP-7 “user mode” simulator
  • SIMH enhanced to run pdp-7 unix
  • Userland limited to: adm, als, apr, as, bc, bi, bl, cas, cat, check, chmod, chown, chrm, cp, db, dmabs, ds, dskio, dskres, dsksav, dsw, ed, and mksys
  • init, ln, ls, mv and sh newly written
  • https://github.com/DoctorWkt/pdp7-unix

30 of 80

31 of 80

Still No working Space Travel

This remains the only Space Travel screen shot we have

Sources build, need full working SIMH Graphics II simulator (coming soon?)

32 of 80

33 of 80

34 of 80

35 of 80

Ken’s Discarded PDP-7 was SN 34

$45,000

$32,700

$6,300

$25,800

$7,700

$1,625

$4,100

~$125,000

Total: ~$250,000 1965 Price List

36 of 80

37 of 80

Could it be?

Conclusion: The PDP-7 in The Incredible Machine looks to be the same one Ken scrounged SN 34...

38 of 80

Living Computer History Museum boots pdp7 unix

SN 129

Custom JK09 no RC09/RB09

No video display, just TTY

Using TUHS source base

39 of 80

40 of 80

1st Edition PDP-11/20

November 1971

41 of 80

1st Edition Unix

  • Released November, 1971
  • Supported only the PDP 11/20
  • Transliteration of PDP-7 assembler into PDP-11 assembler (not MACRO-11)
  • We have reconstructed sources, but no tapes from the time remain
    • Only kernel, shell and init survive
  • We have scans of the manual
  • We have scans of Bell Labs slide deck to reconstruct sources

42 of 80

2nd Edition PDP-11/20 (prep for 11/45)

June 1972

43 of 80

Source: https://www.tuhs.org/Archive/Distributions/Research/Dennis_v1/

44 of 80

Typical Unix History (2)

1975 (V6)�Unix in the wild

and ports start

1979 (V7)�Unix explodes

1983 4.2BSD�Unix gets networking

1984 System V

Unix goes Commercial

1980s

Unix Wars

1990s

Rise of Linux

and FOSS

45 of 80

Programmer’s Workbench (PWB)

46 of 80

PWB - Programmer’s Workbench

  • PWB’s first system installed 1973
    • Canaday, Mashey in BISP division
  • Focused on expanding Unix to being a development platform
    • SCCS (Source Code Control System) originated here
    • Remote Job Entry for various mainframes
    • Make, pwb sh (not bourne), other tools
    • October 1976 CACM had 6 articles on it
  • PWB 1.0 May 1977 (first release outside of bell labs)
    • 6th Edition Unix (plus patches)
    • Typestter C
  • PWB 2.0 1981 (first official release outside of bell labs)
    • 7th Edition based
  • PWB was blended into Unix/TS 3.0 aka System III

47 of 80

Typesetter C and the “50 changes”

  • After 6th Edition
  • Newest ‘C’ language features, including
    • long, unsigned and union data types
    • Typedef, struct initializers
    • Bit field support
    • Static support
    • Cpp enhancements
  • Dennis Ritchie came up with 50 diffs to take V6 into the then-current Research Unix that were supposedly adopted, at least in part by Unix/TS, PWB and CB-Unix in advance of V7.
  • Similar fixes wound up leaking out of Bell Labs… was an early viral spread of data...

48 of 80

UNIX/TS

  • Unix Support Group, USG, 1973 Berkley Teague
  • Support focused on using Unix for Time Sharing 4th Edition and newer
  • Started formal releases with 6th Edition
    • V6 + 50 patches + typesetter C UNIX/TS 1.0 (1978)
    • V7 UNIX/TS 2.0 (1979)
  • Merged with PWB and 32V to become UNIX/TS 3.0 aka System III
  • More merges with CB-UNIX to become UNIX/TS 4.0 (never released)
  • UNIX-TS 5.0 merged in pager and became System V

49 of 80

MERT - Multiple Executive Real Time

  • Approximately 4th Edition Unix (later updated through 6th edition)
  • Unix ran as a supervisor process under MERT
    • Much like today’s paravirtual KVM or HyperV guests
  • MERT allowed real time scheduling and used HW registers for separation

50 of 80

  • SCCS Unix
  • Evolved into Columbus Unix (CB-Unix)

51 of 80

Columbus Unix - CB Unix

  • Started in 1971 (1st Edition) for a Switching Control Center System (SCCS!) for a Electronic Switching System (ESS) by New Jersey Bell.
  • Earliest “fork” I could find of Unix
    • Pulled in code from research version frequently in early days
    • Had a lot of Add Ons that were innovative, many appeared in later versions
    • Power-fail restart, tty line disciplines, terminal types and IPC features (1974)
  • Maintained by Division 59473 in Columbus Ohio
    • OSG Operating System Group
  • Widely used for call data systems by different Bell divisions
  • Little known outside of Bell System, mostly lost

52 of 80

CB Unix Timeline

  • 1971 First SCCS deployed by New Jersey Bell in New Brunswick, NJ
    • First application outside of Research / Patent Office
    • Ran on 11/20 with no memory management
  • 1974 semaphores (Hal Pearson) and tty line disciplines (Bill Snider)
  • 1975 messages and shared memory added (derived from R.J. Purdue)
    • Maus (pronounced mouse) was shared memory, and survived into PDP-11 System Vr1
  • ~1976 CB Unix 1.0 based on 6th Edition Released + local additions
  • November 1979 CB Unix 2.1 released (PWB Unix 1.0 and 7th Edition + local)
  • May 1980 CB Unix 2.3 released
  • 1982 Roger Faulkner merged semaphores, messages and shared memory into UNIX/TS 4.0 (eventually became System V semaphores, etc)

53 of 80

What Remains of CB Unix?

  • Scan of CB Unix 2.3 Manual
    • Apparent from the SCCS division based on the local manual sections
  • Scan of a kernel source listing
  • A 1984 in net.unix posting by Dale DeJager supervisor of Columbus group
  • Interview mention from Victor Vyssotsky 1985 Unix Review
  • A tape was mailed to Dennis Ritchie before his death
    • TUHS mailing list post from 2003 confirms receipt by Dennis from Larry
    • Current whereabouts are unknown
  • Lots of invocations of its name in ~10 books for System V IPC:

UNIX Network Programming: Interprocess communications, Volume 2

W. Richard Stevens

54 of 80

Unix

55 of 80

3rd Edition PDP-11/45

February 1973

56 of 80

3rd Edition Unix

  • February 1973 (+8 months)
  • “The number of Unix installations has grown to 16, with more expected.”
  • Have both scanned manual and nroff sources
  • A mix of assembler and C
  • Have early C compiler from this release
  • No binary snapshots exist

57 of 80

4th Edition PDP-11/40, PDP-11/45

November 1973 (+9 months)

58 of 80

Throw it away… 4th! Rewrite of unix kernel 1973

  • 4th rewrite
    • Pdp-7 assembler (V0 or 0th Edition) 1970
    • pdp-11/20 transliteration (1st edition) 1971
    • pdp-11/45 port (start using MMU) (3rd edition) 1972
    • C rewrite (4th Edition) 1973
      • Kernel remains in C and fundamentally the same through System III (1982)

59 of 80

4th Edition (November 1973)

  • “The number of UNIX installations is now above 20, and many more are expected.”
  • Only have man page sources from this release (first release typeset)
  • Have a almost 4th edition kernel sources (first one in C)
    • Dates from August 1973, mostly complete, but lacks pipes
    • Recovered from a tape Dennis Ritchie had laying around labeled ‘nsys’
  • Rest of the system is lost
  • Key revision for Bell System adoption and specialization
  • First version released to Universities (4 or 5 universities)
  • USENIX forms

60 of 80

setuid() in V4 and later...

sys4.c

61 of 80

4th Symposium on Operating

System Principles

Oct 15-17, 1973

62 of 80

First Published Unix Paper

July 74 Communications of the ACM

(Abstract in SOSP '73: Proceedings of the fourth ACM symposium on Operating system principles October 1973)

  • Papers typeset with troff on Unix cite this paper in references
  • Uptick of Unix in the literature begins here
  • Best reference until 1978 BSTJ

63 of 80

4th Edition Family Tree

64 of 80

5th Edition Released to The World (PDP-11/70)

June 1974 (+7 months)

65 of 80

66 of 80

5th edition

  • More universities outside of Bell Labs get this
  • Still exclusively PDP-11 (added PDP-11/70 support)
  • Userland a mix of C and assembler
  • First version with complete surviving sources and binaries
  • PWB / MERT (Unix/RT) / Unix/TS / CB-Unix import this version
  • June 1974

67 of 80

First MP System

  • System V 4.0MP (1988)
  • AT&T’s OS/370 3B20 Port (1983)
  • Masscomp 7th Edition 68k port (1982)
  • Purdue’s Dual VAX 11/780 (1981)
  • MUNIX (1975)

68 of 80

MUNIX 1975

  • Likely V5 (delivered fall 1974, V6 May 1975)
    • No known copies survive
  • Dual PDP 11/50 processor
  • Paper talks about semaphores, u areas, etc

69 of 80

First Network Implementation

  • 4.1aBSD adds sockets with TCP/IP stack (1982)
  • Berknet (1979)
  • Datakit (1979)
  • UUCP (1978)
  • BBN TCP/IP stack (V6 based 1977)
    • surprise: BSD did socket API for 4.1a, but reused descendant of this stack for protocol
  • Terminal Interface Unix MACRO-11 TCP/IP stack SRI/BBN Jim Mathis (1976)
  • University of Illinois NCP stack (late 1974)
    • Modifications to V5 and later V6
  • Spider Cell Network (1973)
    • V3/V4 (Aug 1973) Unix driver available, maybe prior versions had driver (source for them lost)

70 of 80

71 of 80

72 of 80

73 of 80

v

74 of 80

75 of 80

76 of 80

77 of 80

78 of 80

79 of 80

Questions

Warner Losh

imp@FreeBSD.org

For config files and how-to for demos given in this talk, please see

https://people/talks/bsdcan2020/demos.html

80 of 80