[TUHS] 1972 UNIX V2 "Beta" Resurrected

Yufeng Gao via TUHS tuhs at tuhs.org
Tue Feb 18 19:31:55 AEST 2025


Hi everyone,

First-time poster here. Near the end of last year, I did some forensic analysis on the DMR tapes (https://www.tuhs.org/Archive/Applications/Dennis_Tapes) and had some fun playing around with them. Warren forwarded a few of my emails to this list at the end of last year and the beginning of this year, but it was never my intention for him to be my messenger, so I'm posting here myself now.

Here's an update on my work with the s1/s2 tapes - I've managed to get a working system out of them. The s1 tape is a UNIX INIT DECtape containing the kernel, while s2 includes most of the distribution files.

The s1 kernel is, to date, the earliest machine-readable UNIX kernel, sitting between V1 and V2. It differs from the unix-jun72 kernel in the following ways:

- It supports both V1 and V2 a.outs out of the box, whereas the unmodified unix-jun72 kernel supports only V1.
- The core size has been increased to 16 KiB (8K words), while the unmodified unix-jun72 kernel has an 8 KiB (4K word) user core.

On the other hand, its syscall table matches that of V1 and the unix-jun72 kernel, lacking all V2 syscalls. Since it aligns with V1 in terms of syscalls, has the V2 core size and can run V2 binaries, I consider it a "V2 beta".

login: root
root
# ls -la
total   42
 41 sdrwrw  7 root     80 Jan  1 00:02:02 .
 41 sdrwrw  7 root     80 Jan  1 00:02:02 ..
 43 sdrwrw  2 root    620 Jan  1 00:01:30 bin
147 l-rwrw  1 root  16448 Jan  1 00:33:51 core
 42 sdrwrw  2 root    250 Jan  1 00:01:51 dev
 49 sdrwrw  2 root    110 Jan  1 00:01:55 etc
 54 sdrwrw  2 root     50 Jan  1 00:00:52 tmp
 55 sdrwrw  7 root     80 Jan  1 00:00:52 usr
# ls -la usr
total    8
 55 sdrwrw  7 root     80 Jan  1 00:00:52 .
 41 sdrwrw  7 root     80 Jan  1 00:02:02 ..
 56 sdrwrw  2  28      60 Jan  1 00:02:22 fort
 57 sdrwrw  2 jack     50 Jan  1 00:02:39 jack
 58 sdrwrw  2   6      30 Jan  1 00:02:36 ken
 59 sdrwrw  2 root    120 Jan  1 00:00:52 lib
 60 sdrwrw  2 sys      50 Jan  1 00:02:45 sys
142 s-rwrw  1 jack     54 Jan  1 00:52:29 x
# ed
a
main() printf("hello world!\n");
.
w hello.c
33
q
# cc hello.c
I
II
# ls -l a.out
total    3
153 sxrwrw  1 root   1328 Jan  1 00:02:12 a.out
# a.out
hello world!
#

It's somewhat picky about the environment. So far, aap's PDP-11/20 emulator (https://github.com/aap/pdp11) is the only one capable of booting the kernel. SIMH and Ersatz-11 both hang before reaching the login prompt. This makes installation from the s1/s2 tapes difficult, as aap's emulator does not support the TC11. The intended installation process involves booting from s1 and restoring files from s2.

What I did was I extracted the files from the s1 tape and placed them on an empty RF disk, then installed the unix-jun72 kernel. After booting from the RF under SIMH, I extracted the remaining files from s2. Finally, I replaced the unix-jun72 kernel with the s1 kernel using a hex editor, resulting in an RF disk image containing only files from s1/s2. This RF image is bootable under aap's emulator but not SIMH.

The RF disk image can be downloaded from here (https://github.com/TheBrokenPipe/Research-UNIX-V2-Beta):
Direct link - https://github.com/TheBrokenPipe/Research-UNIX-V2-Beta/raw/refs/heads/main/s1s2unix_rf.img

Interestingly, its init(7) program does not mount the RK to /usr, suggesting that /usr was stored on the RF.

Sincerely,
Yufeng


More information about the TUHS mailing list