Emulation einer PDP-11/70 unter SIMH mit Unix Time-Sharing System Seventh Edition (V7)

Vor knapp einem Jahr habe ich den Beitrag über den Sanos PDP-11 Simulator mit dem Time-Sharing System Seventh Edition verfasst. Bei dem Sanos PDP-11 Simulator handelte es sich nur um eine Live CD-Demo, die man in das CD/DVD-Laufwerk des eigenen PCs – oder als ISO-Datei in eine virtuelle Maschine – einlegt und von ihr startet. Technisch wird dabei wahrscheinlich ein sehr keines Linux-Live System gebootet, welches direkt den SIMH-Emulator mit der nachgebildeten PDP-11 startet. Für den allerersten Eindruck von dem Time-Sharing System V7 ist dieser ganz in Ordnung, aber außer ein paar Verzeichnisse erstellen, Dateien manipulieren oder ein kleines C-Programm schreiben, kompilieren und Ausführen wird da nicht mehr möglich sein. Dieser Emulator ist nämlich auf mehreren Ebenen ziemlich beschränkt. Dies fängt schon bei der emulierten Hardware an.: Der nachgebildeten PDP-11 wird nur verhältnismäßig wenig Speicher gestellt. – 512 KiB. Die späteren Modelle konnten bis zu 4 MiB RAM adressieren. Außerdem ist das Time-Sharing System V7 nur auf einem emulierten DEC RL02 Wechselplattenlaufwerk vorinstalliert, welches eine formatierte Gesamtkapazität von nur 10 Megabyte hat. Aus der recht wenig vorhandenen Festspeicherkapazität resultiert natürlich auch der geringe Umfang an Software und Programmquellen des Time-Sharing Systems. So fehlen bestimmt eine Reihe an Kommandos, sowie der Quellcode des Kernels. Da der Sanos PDP-11 Simulator am PC von einer CD – also einem Read-only-Medium gestartet wird, kann der veränderte Zustand nicht gespeichert werden, beziehungsweise es gibt keine Möglichkeit ein beschreibbares Medium an dem Emulator zu koppeln. Somit gehen alle Änderungen in der ausgeführten Emulation nach dem Neustart des PCs verloren. – Das ist schade!

Nun ist klar, dass mit dem SIMH prinzipiell auch eine individuelle Hardware-Konfiguration der PDP-11 möglich ist. So bin ich neulich beim Durchstöbern des ‚Computer History Wiki!‘ auf eine Installationsanleitung vom Time-Sharing System V7 auf eine DEC PDP-11/70 gestoßen. Diese emulierte PDP-11/70 ist mit 2 MiB RAM konfiguriert und besitzt als Systemfestplatte ein DEC RP06 Disk Drive mit 176 Megabyte Speicherkapazität, deren Plattenstapel im Original auch entfernbar, beziehungsweise wechselbar ist. Hinzu kommt noch ein DEC TU10 Magnetband-Laufwerk. Dies ist nötig, da die Installationsquelle von einem 1/2″ Magnetband kommt. Abgerundet wird dies durch ein DC11 Serial Interface für erst einmal bis zu 4 seriellen Terminals, damit die Installation auch echt Multiuser-fähig wird. Allerdings kann der Kernel das DC11-Interface nicht von Haus aus ansprechen, sondern das System muss nach vollendeter Installation erst neu konfiguriert und ein neuer Kernel erstellt werden.
Bei dem Time-Sharing System V7 kommt das Installations-Magnetband zum Einsatz, welches Keith Bostic von der Unix Heritage Society zur Verfügung gestellt hat. Ein Gimmick dieser Installationsquelle ist der vorhandene Account ‚dmr‘ des inzwischen 2011 verstorbenen Unix-Entwicklers Dennis MacAlistair Ritchie.

Unix Time-Sharing System V7
Research Unix Version 7 from 1979

Was mit dem Ende der Installation als Erstes auffällt, ist, dass es keine Befehle für den Halt des Systems, Shutdown und Reboot gibt. Man ist eher angehalten, das Dateisystem zu pflegen, in dem vor dem Abschalten oder Reset der Hardware der Befehl sync ausgeführt wird, damit die Superblöcke der Dateisysteme auf die Datenträger geschrieben werden. Auch wird stattdessen empfohlen, wenigstens einmal täglich jedes Laufwerk oder auf alle Fälle nach jedem Systemabsturz alle Dateisysteme mit den Kommandos icheck und dcheck auf ihre Konsistenz zu prüfen.
Ein Programm oder einen expliziten Befehl zum Anlegen eines weiteren Benutzers existierte unter dem Time-Sharing System V7 noch überhaupt nicht. Stattdessen heißt es Dateien editieren, Verzeichnisse erstellen, die Verzeichnisse den entsprechenden Eigentümern zuordnen und Zugriffsrechte erteilen. – Oder man schreibt sich am Ende selber ein Programm zum Anlegen der Benutzer als Shellscript. Wie bereits erwähnt, enthält diese Unix-Version den Login-Namen ‚dmr‘, der sein Heimatverzeichnis unterhalb von /usr besitzt. Diese Anordnung der Benutzerverzeichnisse war dann noch sehr lange gängig. Der Ordnung halber habe ich für meinen eingeschränkten Account erst das Verzeichnis /home angelegt, in dessen mein Heimatverzeichnis untergeordnet wird, so wie es inzwischen bei den modernen BSDs und unter Linux üblich ist.
Für das Bearbeiten von Dateien musste man sich Ende der 1970er Jahre immer noch mit dem Zeilen-orientierten Texteditor ed zufriedengeben. Der vi war zu diesem Zeitpunkt zwar schon geboren, fristete aber noch derzeit unter BSD sein Nischendasein, gab es doch schon für die PDP-11 neben den Druckerterminals bereits das eine oder andere Videoterminal mit einem Röhrenbildschirm. Und bedingt durch die Druckerterminals gab es auch sonst noch keinen Komfort auf der Bourne Shell.

Für den normalen Multiuser-Betrieb habe ich den SIMH mit der emulierten PDP-11 in einer GNU Screen-Session gestartet. Danach die Sitzung trennen und sich mit Telnet auf einer der seriellen TTY-Schnittstellen anmelden. Im Gegensatz zum Terminalfenster unter Screen bleiben so die Rollback-Zeilen des Terminals erhalten. – Was nötig ist, denn die Ausgabe der Shell unter Unix V7 findet quasi auf einem emulierten Druckerterminal statt, welches nichts von einer Seitenweisen Darstellung versteht.

Anleitung Installation und Einrichtung im eigenem DokuWiki

Links:

Sanos PDP-11 Simulator mit UNIX V7

Wer seinen PC in eine PDP-11 von DEC mit der UNIX Time-Sharing System Seventh Edition (V7) als Betriebssystem verwandeln möchte, der kann den Sanos-Port von Bob Supnik’s PDP-11 simulator ausprobieren. Denn mit Diesem ist es möglich, UNIX so auszuführen, wie es Dennis Ritchie und Ken Thompson im Jahr 1979 getan haben.
Ein Sanos-Entwickler hat ein ISO-Image mit Sanos, dem PDP-11-Simulator und dem UNIX V7-Kit vom Computer History Simulation Project erstellt. Einfach eine CD-ROM in den PC einlegen und starten. Danach wird für alle nostalgischen UNIX-Geeks der PC zu einer PDP-11 mit dem UNIX V7.

Um die UNIX V7-Demo ausprobieren zu können, zuerst das ISO-Image herunterladen und entpacken. Es ist möglich, das Image mit dem bevorzugten Brennprogramm auf eine CD-ROM zu brennen und dann den Computer von dieser CD-ROM zu starten. Es ist aber inzwischen weitaus sinnvoller, es mit einer Desktop-Virtualisierungslösung wie VirtualBox auszuprobieren, indem die pdp11.iso Datei als ISO-Image für das CD-ROM festgelegt wird. Die Quelle, mit der das Image erstellt wurde, ist unter dem entsprechenden Link zu finden.

Wenn von der CD-ROM gebootet wird, startet Sanos und dieses startet den PDP-11-Simulator. Der Simulator startet dann UNIX V7 vom Image.

  • Bei dem Boot-Prompt b eingeben.
  • Bei dem @-Prompt ist boot<enter> einzugeben.
  • Bei dem : ist folgendes einzugeben: rl(0,0)rl2unix<enter>
  • Bei dem # ist <ctrl-d> zu drücken
  • Bei dem Login root als User mit dem Passwort root
UNIX V7 Emulator Boot
UNIX V7 Emulator Boot

Das Unix V7 ist dann betriebsbereit. Es können die gewohnten Unix-Befehle wie cat, ls, man und andere verwendet werden. Es kann dann auch ein einfaches C-Programm kompiliert und ausgeführt werden.

UNIX V7 Hello World
UNIX V7 Hello World

Mein absolutes Kernfeature ist, dass es als Texteditor nur den Zeilen-orientierten ‚ed‘ gibt. Der ‚vi‘ war seinerseits noch nicht verfügbar.

Links:
Sanos PDP-11 Simulator with UNIX V7
Bob Supnik’s PDP-11 simulator
Geschichte von Unix (engl. Wikipedia)
DEC PDP11 (engl. Wikipedia)
VirtualBox (engl. Wikipedia)
Kurzeinstieg zum ed-Editor (eigenes Blog)