home.social

#unix-v4 — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #unix-v4, aggregated by home.social.

fetched live
  1. UNIX Fourth Edition on SIMH v3.12-5

    UNIX v4 was officially released for the DEC PDP-11/45 computers on November 1973, when those computers were the only computers eligible for this version of UNIX. Since then, it was thought to be lost until November 7th when the tape has been rediscovered. Apparently, this tape was sitting somewhere in one of the storage rooms in the University of Utah.

    The Computer History Museum has further handled this by letting bitsavers.org conduct the recovery process, where the tape has been successfully recovered to a raw tape, which has then been uploaded publicly to the Internet Archive for publication, and the installation instructions were then laid out for simh.

    So, we have followed the instructions on how to set up a minimal UNIX v4 system on an Arch Linux host using simh version v3.12-5. First, we have downloaded the system tape files.

     [aptivi@archapt ~]$ mkdir uv4  [aptivi@archapt ~]$ cd uv4  [aptivi@archapt uv4]$ wget squoze.net/UNIX/v4/disk.rk  --2026-04-01 13:56:49--  squoze.net/UNIX/v4/disk.rk  Resolving squoze.net (squoze.net)... 93.128.9.138  Connecting to squoze.net (squoze.net)|93.128.9.138|:80... connected.  HTTP request sent, awaiting response... 200 OK  Length: 2494464 (2.4M) [application/octet-stream]  Saving to: ‘disk.rk’   disk.rk                       100%[================================================>]   2.38M   511KB/s    in 5.8s       2026-04-01 13:56:55 (423 KB/s) - ‘disk.rk’ saved [2494464/2494464]   [aptivi@archapt uv4]$ wget squoze.net/UNIX/v4/unix_v4.tap  --2026-04-01 13:57:47--  squoze.net/UNIX/v4/unix_v4.tap  Resolving squoze.net (squoze.net)... 93.128.9.138  Connecting to squoze.net (squoze.net)|93.128.9.138|:80... connected.  HTTP request sent, awaiting response... 200 OK  Length: 2572452 (2.5M) [application/octet-stream]  Saving to: ‘unix_v4.tap’   unix_v4.tap                   100%[================================================>]   2.45M   332KB/s    in 6.9s       2026-04-01 13:57:54 (365 KB/s) - ‘unix_v4.tap’ saved [2572452/2572452]   [aptivi@archapt uv4]$ wget squoze.net/UNIX/v4/install.ini  --2026-04-01 13:58:00--  squoze.net/UNIX/v4/install.ini  Resolving squoze.net (squoze.net)... 93.128.9.138  Connecting to squoze.net (squoze.net)|93.128.9.138|:80... connected.  HTTP request sent, awaiting response... 200 OK  Length: 68 [text/plain]  Saving to: ‘install.ini’   install.ini                   100%[================================================>]      68  --.-KB/s    in 0s         2026-04-01 13:58:00 (10.9 MB/s) - ‘install.ini’ saved [68/68] 

    Afterwards, we have installed UNIX v4 files from the installation tape. The install.ini file contained the following contents:

     set cpu 11/45  att rk0 disk.rk  att tm0 unix_v4.tap  d sr 2  boot -o tm 

    We had to use the mcopy command to install the system to the rk disk, then use uboot, with writing k and unix to boot to the installed kernel. Depending on your host distribution, the executable file for running the PDP11 simulator is either simh-pdp11 or pdp11.

     [aptivi@archapt uv4]$ simh-pdp11 install.ini   PDP-11 simulator V3.12-5  Disabling XQ  =mcopy  'p' for rp; 'k' for rk  k  disk offset  0  tape offset  75  count  4000  =uboot  k  unix  mem = 64530   login: root  # ls  bin  dev  etc  lib  mnt  tmp  unix  usr  # sync  #   Simulation stopped, PC: 002040 (MOV (SP)+,177776)  sim> exit  Goodbye 

    The Unix files have been successfully written to the rk disk, so we need to boot to Unix from it with boot.ini as the configuration file for simh.

    Hint: CTRL + D to log out from your user account. CTRL + E to stop the simulation.

     set cpu 11/45  set tc en  att rk0 disk.rk  d sr 2  boot rk 

    Again, we have to write both k and unix to boot to the kernel.

     [aptivi@archapt uv4]$ wget http://squoze.net/UNIX/v4/boot.ini  --2026-04-01 13:59:55--  squoze.net/UNIX/v4/boot.ini  Resolving squoze.net (squoze.net)... 93.128.9.138  Connecting to squoze.net (squoze.net)|93.128.9.138|:80... connected.  HTTP request sent, awaiting response... 200 OK  Length: 76 [text/plain]  Saving to: ‘boot.ini’   boot.ini                      100%[================================================>]      76  --.-KB/s    in 0s         2026-04-01 13:59:55 (13.3 MB/s) - ‘boot.ini’ saved [76/76]   [aptivi@archapt uv4]$ simh-pdp11 boot.ini   PDP-11 simulator V3.12-5  Disabling XQ  k  unix  mem = 64530   login: root  # 

    Now, we need to make device files for tape disk controllers using /etc/mknod and create them on /dev. This is needed to be able to read tapes on the installed system. They will be persistent across reboots.

     # chdir /dev  # /etc/mknod mt0 b 2 0  # /etc/mknod tap0 b 1 0  # /etc/mknod tap1 b 1 1  # /etc/mknod tap2 b 1 2  # /etc/mknod tap3 b 1 3  # sync  #   Simulation stopped, PC: 002040 (MOV (SP)+,177776) 

    Now that we have the tape device files, we can now read from tapes. We will recompile the kernel to integrate the enhanced rk driver. After the recompilation, we’ll reboot the system to the new kernel and create device files for rk.

     [aptivi@archapt uv4]$ wget http://squoze.net/UNIX/v4/sys.tp  --2026-04-01 14:02:21--  squoze.net/UNIX/v4/sys.tp  Resolving squoze.net (squoze.net)... 93.128.9.138  Connecting to squoze.net (squoze.net)|93.128.9.138|:80... connected.  HTTP request sent, awaiting response... 200 OK  Length: 17408 (17K) [application/octet-stream]  Saving to: ‘sys.tp’   sys.tp                        100%[================================================>]  17.00K  8.45KB/s    in 2.0s       2026-04-01 14:02:25 (8.45 KB/s) - ‘sys.tp’ saved [17408/17408]   [aptivi@archapt uv4]$ simh-pdp11 boot.ini   PDP-11 simulator V3.12-5  Disabling XQ  k  unix  mem = 64530   login: root  #   Simulation stopped, PC: 002040 (MOV (SP)+,177776)  boot.ini> # type k  Unknown command  boot.ini> # type unix  Unknown command  sim> att tc1 sys.tp  TC1: 16b format, buffering file in memory  sim> c   # chdir /usr/sys  # tp 1t  run  dmr/run  dmr/rk.c  ken/run  conf/conf.c     5 entries     9 used   544 free    33 last  END  # chdir /usr/sys/dmr  # mv rk.c rk.c.orig  # chdir ../  # rm -f conf/conf.c  # tp 1x  END  # sh run  alloc.c:  clock.c:  fio.c:  iget.c:  main.c:  nami.c:  prf.c:  rdwri.c:  sig.c:  60: Warning: assignment understood  61: Warning: assignment understood  slp.c:  subr.c:  sys1.c:  sys2.c:  sys3.c:  sys4.c:  sysent.c:  text.c:  trap.c:  bio.c:  cat.c:  dc.c:  dh.c:  dhdm.c:  dhfdm.c:  dn.c:  dp.c:  dv.c:  kl.c:  lp.c:  malloc.c:  mem.c:  partab.c:  pc.c:  pipe.c:  rf.c:  rk.c:  rp.c:  tc.c:  tm.c:  tty.c:  vs.c:  vt.c:  # mv a.out /unix  /unix: 0644 mode y  # sync  #   Simulation stopped, PC: 002040 (MOV (SP)+,177776)  sim> exit  Goodbye  TC1: writing buffer to file  [aptivi@archapt uv4]$ simh-pdp11 boot.ini   PDP-11 simulator V3.12-5  Disabling XQ  k  unix  mem = 64529   login: root  # chdir /dev  # rm -f null  # /etc/mknod mem c 1 0  # /etc/mknod kmem c 1 1  # /etc/mknod null c 1 2  # /etc/mknod rk0 b 0 0  # /etc/mknod rk1 b 0 1  # /etc/mknod rk2 b 0 2  # /etc/mknod rk3 b 0 3  # ls -l  total 0  crw-rw-rw- 1 root    1,  1 Jun 12 19:54 kmem  crw-rw-rw- 1 root    1,  0 Jun 12 19:54 mem  brw-rw-rw- 1 root    2,  0 Jun 12 19:52 mt0  crw-rw-rw- 1 root    1,  2 Jun 12 19:54 null  brw-rw-rw- 1 root    0,  0 Jun 12 19:54 rk0  brw-rw-rw- 1 root    0,  1 Jun 12 19:54 rk1  brw-rw-rw- 1 root    0,  2 Jun 12 19:54 rk2  brw-rw-rw- 1 root    0,  3 Jun 12 19:54 rk3  brw-rw-rw- 1 root    1,  0 Jun 12 19:52 tap0  brw-rw-rw- 1 root    1,  1 Jun 12 19:52 tap1  brw-rw-rw- 1 root    1,  2 Jun 12 19:52 tap2  brw-rw-rw- 1 root    1,  3 Jun 12 19:52 tap3  crw--w--w- 1 root    0,  0 Jun 12 19:55 tty8  # ps a   0     0 ???d??H??`?? ak??Z? ????? k?  ?     0     1 /etc/init     8     7 -     8    17 ps a      0     6 /etc/update    # 

    To verify that the new driver works properly, we’ll copy the UNIX source code to the second rk disk. We’ll then make it as a mount point as /usr/source for the source code files that will be located there.

     sim> att tm0 src.tap  TM: creating new file  sim> att rk1 src.rk  RK: creating new file  sim> c   # /etc/mkfs /dev/rk1 4872  isize = 103  # /etc/mount /dev/rk1 /mnt  # chdir /usr/source  # tp mr *   256 entries  1194 used  1256 last  END  # tp mt  s1/ac.c  s1/ar.s  s1/as11.s  s1/as12.s  s1/as13.s  s1/as14.s  s1/as15.s  s1/as16.s  s1/as17.s  s1/as18.s  s1/as19.s  s1/as21.s  s1/as22.s  s1/as23.s  s1/as24.s  s1/as25.s  s1/as26.s  s1/as27.s  s1/as28.s  s1/as29.s  s1/bas0.s  s1/bas1.s  s1/bas2.s  s1/bas3.s  s1/bas4.s  s1/bas5.s  s1/basx.s  s1/cal.c  s1/cat.s  s1/cc.c  s1/cdb.c  s1/check.c  s1/chmod.c  s1/chown.s  s1/clri.s  s1/cmp.s  s1/comm.c  s1/cp.c  s1/date.c  s1/db1.s  s1/db2.s  s1/db3.s  s1/db4.s  s1/dc1.s  s1/dc2.s  s1/dc3.s  s1/dc4.s  s1/dc5.s  s1/dd.c  s1/df.c  s1/diff1.c  s1/diff2.s  s1/dsw.s  s1/du.s  s1/dump.c  s1/echo.c  s1/ed1.s  s1/ed2.s  s1/ed3.s  s1/exit.c  s1/fc.c  s1/fed1.s  s1/fed2.s  s1/fed3.s  s1/find.c  s1/form1.s  s1/form2.s  s1/form3.s  s1/form4.s  s1/form5.s  s1/form6.s  s1/getty.s  s1/glob.c  s1/goto.c  s1/grep.s  s1/if.c  s1/init.c  s1/kill.s  s1/ld1.s  s1/ld2.s  s1/ldx.s  s1/ln.c  s1/login.c  s1/lpd.s  s1/lpr.c  s1/ls.c  s2/mail.c  s2/mesg.s  s2/mkdir.s  s2/mkfs.c  s2/mknod.c  s2/mount.c  s2/msh.s  s2/mv.c  s2/nice.c  s2/nm.c  s2/nohup.c  s2/od.c  s2/passwd.s  s2/pfe.s  s2/pr.c  s2/prof.c  s2/ps.c  s2/pwd.c  s2/restor.c  s2/rew.s  s2/rm.c  s2/rmdir.s  s2/sa.c  s2/sh.c  s2/size.c  s2/sleep.c  s2/sort.c  s2/split.c  s2/strip.s  s2/stty.c  s2/su.c  s2/sum.s  s2/sync.c  s2/tee.c  s2/time.s  s2/tp1.s  s2/tp2.s  s2/tp3.s  s2/tp4.s  s2/tr.c  s2/tty.s  s2/typo.c  s2/umount.c  s2/uniq.c  s2/update.s  s2/wc.c  s2/who.c  s2/write.s  s3/atan.s  s3/atof.s  s3/atoi.s  s3/compar.s  s3/crypt.s  s3/ctime.c  s3/dpadd.s  s3/ecvt.s  s3/exp.s  s3/fakfp.s  s3/fp1.s  s3/fp2.s  s3/fp3.s  s3/fpx.s  s3/gamma.s  s3/get.s  s3/hypot.s  s3/ldiv.s  s3/log.s  s3/mesg.s  s3/mon.s  s3/nlist.s  s3/pow.s  s3/put.s  s3/qsort.s  s3/rand.s  s3/sin.s  s3/sqrt.s  s3/switch.s  s3/ttyn.s  s4/abort.s  s4/atan.s  s4/atan2.s  s4/atof.s  s4/chdir.s  s4/chmod.s  s4/chown.s  s4/close.s  s4/cos.s  s4/crand.s  s4/creat.s  s4/crt0.s  s4/crypt.s  s4/dup.s  s4/ecvt.s  s4/errlst.c  s4/execl.s  s4/execv.s  s4/exit.s  s4/exp.s  s4/ffltpr.s  s4/floor.s  s4/fltpr.s  s4/fmod.s  s4/fork.s  s4/fstat.s  s4/gamma.s  s4/getc.s  s4/getchr.s  s4/getcsw.s  s4/getgid.s  s4/getpw.c  s4/getuid.s  s4/gtty.s  s4/hmul.s  s4/hsw.s  s4/kill.s  s4/link.s  s4/locv.s  s4/log.s  s4/ltod.s  s4/makdir.s  s4/mcrt0.s  s4/mdate.s  s4/mknod.s  s4/mon.c  s4/mount.s  s4/nargs.s  s4/nice.s  s4/nlist.s  s4/open.s  s4/perror.c  s4/pipe.s  s4/pow.s  s4/printf.s  s4/prof.s  s4/putc.s  s4/putchr.s  s4/qsort.c  s4/read.s  s4/reset.s  s4/retrn.s  s4/rin.c  s4/rsave.s  s4/sbrk.s  s4/seek.s  s4/setgid.s  s4/setuid.s  s4/signal.s  s4/sin.s  s4/sleep.s  s4/sqrt.s  s4/ssw.s  s4/stat.s  s4/stime.s  s4/stty.s  s4/switch.s  s4/sync.s  s4/time.s  s4/times.s  s4/umount.s  s4/unlink.s  s4/wait.s  s4/write.s  s7/roff1.s  s7/roff2.s  s7/roff3.s  s7/roff4.s  s7/roff5.s  s7/roff7.s  s7/roff8.s  s7/suftab.s   256 entries  1194 used  1256 last  END  # chdir /mnt  # mkdir s1 s2 s3 s4 s7  # chown bin *  # chmod 755 *  # tp mx  END  # chdir /usr/source/s1  # rm -f [a-f]*  # rm -f *  # chdir ../s2  # rm -f *  # chdir ../s3  # rm -f *  # chdir ../s4  # rm -f [a-f]*  # rm -f *  # chdir ../s7  # rm -f *  # chdir ..  # rmdir *  # chdir /  # /etc/umount /dev/rk1  # /etc/mount /dev/rk1 /usr/source  # ed /etc/rc  70  $  /etc/update  i  /etc/mount /dev/rk1 /usr/source  .  w  102  q  #  

    Adding users to this system isn’t as straightforward as the modern Unix distributions; you’ll need to directly modify the /etc/passwd file to add a new entry that contains a new user, aptivi.

     # ed /etc/passwd  30  $  bin::3:1::/bin:  a  aptivi::10:1::/usr/aptivi:  .  w  57  q  # mkdir /usr/aptivi  # chown aptivi /usr/aptivi  #   login: aptivi  % who  aptivi  tty8 Jun 12 20:03  %   login: root  # passwd aptivi test  #   login: aptivi  Password:   % 

    As the site that provided us this tutorial claimed that we can install the B programming language compiler, but our tests have failed due to errors in the installation process.

     [aptivi@archapt uv4]$ wget http://squoze.net/B/b.tp  --2026-04-01 14:15:13--  squoze.net/B/b.tp  Resolving squoze.net (squoze.net)... 93.128.9.138  Connecting to squoze.net (squoze.net)|93.128.9.138|:80... connected.  HTTP request sent, awaiting response... 200 OK  Length: 137216 (134K) [application/octet-stream]  Saving to: ‘b.tp’   b.tp                          100%[================================================>] 134.00K   168KB/s    in 0.8s       2026-04-01 14:15:14 (168 KB/s) - ‘b.tp’ saved [137216/137216]   [aptivi@archapt uv4]$ simh-pdp11 boot.ini   PDP-11 simulator V3.12-5  Disabling XQ  k  unix  mem = 64529   login: root  #   Simulation stopped, PC: 002040 (MOV (SP)+,177776)  boot.ini> # type k  Unknown command  boot.ini> # type unix  Unknown command  sim> at tc0 b.tp  TC0: 16b format, buffering file in memory  sim> c   # mkdir /usr/b  # chdir /usr/b  # mkdir bilib libb  # chown bin *  # chmod 755 *  # tp 0x  END  # sh install  libb.a: non existent  chdir  chmod  chown  close  creat  ctime  execl  execv  exit  fork  fstat  getchr  getuid  gtty  lchar  link  makdir  open  printf  printn  putchr  read  seek  setuid  sleep  stat  stty  time  unlink  wait  write  char  bilib.a: non existent  a  b1  b10  b102  b103  b11  b112  b113  b114  b115  b116  b117  b12  b120  b13  b14  b15  b16  b17  b2  b20  b3  b4  b5  b6  b7  c  f  n11  n123  n4  n6  n7  s  t  u10  u2  u3  u4  u5  u6  u7  va  vx  x  y  z  brt1  brt2  bc  File not found: /usr/lib/bilib.a  un: s  un: x  un: c  un: n4  un: b7  un: f  un: ix  un: n2  un: vx  un: t  un: n3  un: ivx  un: b1  un: u4  un: n1  un: b5  un: n11  un: va  un: iva  un: u10  un: u7  un: a  un: ia  un: b4  un: b14  un: b2  un: n6  un: z  un: b11  un: b114  un: u3  un: b3  un: b10  un: b15  un: b17  un: u5  un: y  un: u2  un: u6  un: b6  un: b116  un: b117  un: n7  un: ic  un: b103  un: b13  un: b20  un: b16  ba  File not found: /usr/lib/bilib.a  un: y  un: s  un: x  un: c  un: n4  un: b7  un: f  un: ix  un: n2  un: vx  un: t  un: n3  un: ivx  un: b1  un: iva  un: n1  un: b11  un: ia  un: z  un: n6  un: a  un: b17  un: b14  un: va  un: b114  un: u7  un: b5  un: b4  un: b15  un: u6  un: u3  un: n11  un: b3  un: u10  un: b10  un: b2  un: u2  un: n7  un: ic  un: b20  un: b16  B  i  Bus error -- Core dumped  Source file non-existent  B  i  Bus error -- Core dumped  Source file non-existent  #  

    Other than this error when it comes to the B programming language, the Unix system works.

    #news #simh #Tech #Technology #Unix #UNIXFourthEdition #UNIXV4 #update
  2. Unix V4, eines der frühesten Betriebssysteme, ist nun frei herunterladbar! 🖥️📥 Tech-Enthusiasten und Historiker können die Quelle des modernen Unix erkunden. Entdeckt die Pionierarbeit von Thompson & Ritchie: golem.de/news/betriebssystem-u #UnixV4 #OpenSource #TechGeschichte #RetroComputing
    #Newz

  3. UNIX Fourth Edition tape has been recovered!

    For half a century, the UNIX v4 tape was not found, until this year. Everything changed when staff members at the University of Utah have found the UNIX v4 tape while cleaning out storage rooms. That was a very strong sign that the computer history was preserved and archived by those who make archives of old operating systems and other computer-related things.

    UNIX v4 was officially released for the DEC PDP-11/45 computers on November 1973, when those computers were the only computers eligible for this version of UNIX. Since then, it was thought to be lost until November 7th when the tape has been rediscovered. Apparently, this tape was sitting somewhere in one of the storage rooms in the University of Utah.

    The Computer History Museum has further handled this by letting bitsavers.org conduct the recovery process, where the tape has been successfully recovered to a raw tape, which has then been uploaded publicly to the Internet Archive for publication.

    For those who are eager to run UNIX v4 using the simulation program, simh, on your host PC, you can follow the instructions on this page.

    The Internet Archive entry has very interesting pieces of history of this tape that said:

    • UNIX V4 tape from the University of Utah, received by Martin Newell in June 1974 around when he modeled the Utah Teapot.
    • This is the raw analog waveform and the reconstructed digital tape image (analog.tap), read at the Computer History Museum’s Shustek Research Archives on 19 December 2025 by Al Kossow using a modified tape reader and analyzed with Len Shustek’s readtape tool.
    • The tape was found in July 2025 by Aleks Maricq in the storage closet of the Flux Research Group in the Merrill Engineering Building, among the documents of Jay Lepreau.
    • It was brought to the Computer History Museum by Jon Duerig and Thalia Archibald.

    This tape was preserved in the storage room for more than half a century before it’s found in July 2025, then discovered on November, before being uploaded to the Internet Archive on December 22nd.

    #news #simh #Tech #Technology #Unix #UNIXFourthEdition #UNIXV4 #update

  4. While reading the various #UNIXv4 Mastodon posts I came across @flexion who has some very interesting posts and SGI history which I especially appreciate. oldbytes.space/@flexion/115752

  5. I followed the instructions at squoze.net/UNIX/v4/README to boot the #UNIXv4 tape that @ricci and friends have recovered.

    Was able to build the kernel from scratch then boot from it successfully.

    Very fun! I am now running #UNIX Fourth Edition from November 1973 from a kernel I compiled myself on my #OpenBSD system.

    #unix_surrealism #retrocomputing

  6. It's a Unix V4 system, I know this!

    Terminal image cheerfully yoinked from oldbytes.space/@flexion/115752

  7. A website with instructions and files for installing, running, and building the newly discovered and recovered UNIX v4 tape.

    squoze.net/UNIX/v4/README

    #unixv4 #unix #retrocomputing