Emulation einer VAX mit SIMH: Ultrix

In der zweiten Runde habe ich auf meiner emulierten MicroVAX das von der Digital Equipment Corporation entwickelte ULTRIX installiert. ULTRIX ist die Unix-Variante für die VAX- sowie die DECstation- und DECsystem-Rechnerfamilien von DEC, die erstmals im Jahr 1982 veröffentlicht wurde.
Das erste native VAX UNIX-Produkt von DEC war Ultrix-32, basierend auf 4.2BSD mit einigen Nicht-Kernel-Funktionen von System V, und wurde im Juni 1984 veröffentlicht. Später wurde es um Funktionen von BSD4.3 und Unix System V Release 2 ergänzt. Mit ULTRIX-11 bot DEC noch eine Implementation für die Minicomputer der Reihen PDP11 und Micro/PDP-11 an. Die letzte Version von ULTRIX war die Version 4.5 für DECstation und DECsystem mit RISC-CPU, sowie der VAX-Architektur. Sie wurde im November 1995 veröffentlicht.
ULTRIX unterstützte sowohl TCP/IP als auch DECnet, ebenso beherrschte es neben SMTP auch Mail-11. Ursprünglich wurde für die VAXstations unter Ultrix-32 die Desktopumgebung Ultrix Workstation Software (UWS) basierend auf dem X Window System verwendet. Mit der Verbreitung von X Version 11 (X11) wurde die DECwindows-Umgebung eingeführt, welche auch Grundlage für die Gestaltung des späteren Motif der OSF war.

Die letzte von DEC veröffentlichte ULTRIX Version 4.5 habe ich auch im Internet als CD-ROM Image gefunden. Hat man im Emulator von dem Installationsmedium gebootet, so steht man auch schon vor der ersten Hürde. Da es sich nicht um (originale) Hardware handelt, stimmen die Laufwerksbezeichnungen für CD-ROM Laufwerk und Festplattenlaufwerk nicht überein. Die Lösung ist, dass die Bezeichnung in dem Installationsprogramm angepasst werden müssen. Und das ist zum Glück keine wilde Sache, denn bei dem Installationsprogramm handelt es sich lediglich nur um ein etwas umfangreiches Shellscript. Allerdings stand ich dann vor der nächsten Hürde. Das minimale System des Installationsmediums, welches in den Computer geladen wurde, besitzt noch nicht einmal den vi als Texteditor. Es steht lediglich nur der noch ältere und zeilenorientierte ed als Texteditor zur Verfügung. Ich habe mich daher bereits im Vorfeld mit der Bedienung dessen ein wenig auseinander gesetzt gehabt. – Und es ist noch nicht mal das Programm cat auf der Shell verfügbar, mit dem man sich den Inhalt des Installationsskripts ausgeben lassen könnte. Auch hier ist man auf umständliche Weise auf den ed angewiesen.

ULTRIX war nie Jahr 2000-kompatibel. Also habe ich mich exakt um 25 Jahre in die Vergangenheit gebeamt, also in den November 1995. Die Zeit in der ULTRIX 4.5 veröffentlicht wurde und ich so langsam begann mich für Computer zu interessieren.

Login ULTRIX
Login ULTRIX mit DECwindows

Man ist aus heutiger Sicht durchaus erstaunt, wie übersichtlich doch die Config-Datei für den ULTRIX-Kernel ist. Es gibt lediglich sieben Optionen, die zusätzlich hineinkonfiguriert und kompiliert werden können. Ein Menuconfig, respektive Xconfig hat unter Linux über die Jahre hingegen deutlich an Optionen und Komplexität zugenommen.

Man ist ja froh, dass ULTRIX neben DECs eigenem DECNet auch irgendwann TCP/IP-Protokollfamilie aus der BSD-Welt mit übernommen hat. Ich konnte dem Host zwar eine IPv4 Adresse und das Gateway konfigurieren, aber das Routing über den nächsten Hopp hinaus habe ich nicht hinbekommen, so dass Computer aus anderen Netzen leider nicht zu erreichen sind. Auch die Namensauflösung von Domains funktioniert leider nicht. Dies liegt wahrscheinlich an der bereits veralteten Bind-Version. Das Problem scheint zu sein, dass ULTRIX sogenannte inverse Abfragen sendet, um eine IP-Adresse einem Hostnamen zuzuordnen. Die meisten DNS-Server unterstützen diese inversen Abfragen aber nicht mehr.

ULTRIX wird von dem Installationsprogramm so installiert und eingerichtet, dass der Systembenutzer root leider kein eigenes Heimatverzeichnis /root/ erhält. Alle Dateien werden also in die oberste Wurzelverzeichnisebene erstellt. Da ich ein Freund von Ordnung bin, habe ich das nachgebessert, so wie ich es von Linux und den modernen BSD-Unix gewohnt bin. Verzeichnis /root/ erstellen und alle .xxx-Dateien in dieses verschieben. Interessanterweise gibt es unter ULTRIX die Datei /etc/shadow nicht. Die Passwörter der User werden verschlüsselt auch in der Datei /etc/passwd abgelegt.

Motif DECwindows
Motif DECwindows

Selbst das Release des letzten großen ULTRIX-Updates ist (nicht nur) aus heutiger sehr minimalistisch und unkomfortabel auf der Commandline-Shell. Es fehlt an erster Stelle schon an einer vernünftigen Shell. Selbst die Korn-Shell unter ULTRIX unterstützte noch keine Commandline-History und die Tabulator-Autovervollständigung der Befehle. Auch gibt es kein (GNU-)tar, dass in einem Rutsch gezipte tar-Archive dekomprimiert und in die Ordnerstruktur zurückextrahiert. Stattdessen muss ein Archiv jedes mal mit dem ineffizienten uncompress dekomprimiert und tar extrahiert werden.
Mal ganz davon abgesehen, dass außer dem Standard C-Compiler keine Skript-Programmiersprache wie Perl auf dem System verfügbar ist.
Der Hardwaresammler und Websitebetreiber Joachim Buss hatte sich mal die Mühe gemacht und eine eigene ULTRIX Freeware CD-ROM mit etwas GNU-Software, welche man auch eher aus dem Linux-Umfeld kennt, zusammengestellt und bietet diese als Download im Internet an. Das war im Jahr 2002. Das heißt, dass die Versionen der Programme aus heutiger Sicht auch schon wieder sehr veraltet sind, aber dank einer Bash, dem Midnight Commander, wget und Skriptsprachen wie Perl oder Python, macht es die Bedienung von ULTRIX deutlich komfortabler. Es ist auch zu empfehlen, sich als Erstes den GNU C-Compiler und GNU make zu installieren. So lässt sich nämlich GNU tar nicht mit dem Standard C-Compiler von ULTRIX bauen. GNU tar ist aber in der Lage ein tar-Archiv mit einem Befehl gleichzeitig zu dekomprimieren und extrahieren. Des Standard-tar unter ULTRIX kann ein Archiv nur extrahieren und dazu muss es aber vorher erst mit bzip2 separat dekomprimiert worden sein.
Einige Programme sind auf dieser CD-ROM als Quellcode vorhanden, während bei anderen wie dem Midnight Commander bereits vorkompilierten Programmbinaries einschließlich der Dokumentation als Archiv enthalten sind. Bei Diesen müssen die Dateien lediglich im Dateisystem entsprechend den Pfaden nachgehend kopiert werden.
So lässt sich das System um einige nützliche Programme, der GNU X11-Umgebung und Window-Manager erweitern. Es gibt aber auch einen SSH-, DHCP-, sowie einen Apache-Server für das ULTRIX.

Das letzte ULTRIX-Release war so rudimentär, dass es noch nicht einmal Aliase gab. Auch in vielen anderen Dingen ist das ULTRIX anders aufgebaut. So werden zum Beispiel die Heimatverzeichnisse der User nicht in dem Verzeichnis /home/ angelegt, wie es heute bei Linux und den BSD-Systemen die Konvention ist, sondern im Verzeichnis /usr/users/. Das Dialogbasierte Programm erlaubt die Speicherung der User-Verzeichnisse aber auch an eine andere beliebige Stelle des Dateisystems, ganz wie es dem Systemadministrator beliebt. Hier eine tabellarische Übersicht über die Unterschiede zwischen den einzelnen Unix-Derivaten und Linux. (eigenes DokuWiki)

ULTRIX DECwindows DECterminal 1
ULTRIX DECwindows DECterminal 1

Am Ende habe ich auf meinem Linux-Host, der die Emulation bewirtet, noch das Programmpaket xserver-xephyr installiert. Dieses erlaubt die Entgegennahme von einer X11-Session eines Host innerhalb eines Netzwerkes und stellt die Bildschirminformationen in einem separaten Fenster dar. Somit lässt sich die Ausgabe des X-Window-Servers vom Ultrix auch darstellen und das System über das grafische DECwindows mit Motif mit Maus und Tastatur bedienen. Allerdings hat sich das System bei mit ab diesem Punkt immer recht schnell die Karten gelegt und es funktionierte nicht über einen längeren Zeitraum. Mal ließen sich die Standard-Applikationen nicht starten oder das System brach nach einigen wenigen Minuten die X-Windows-Session wieder ab und warf mich auf das Login-Fenster zurück. Ich vermute – und das ist insgeheim auch meine Hoffnung – dass das Acer-Notebook als Host-Computer mit seinem AMD Athlon X2 Dual Core als Prozessor nicht leistungsstark genug für die Emulation ist.

ULTRIX DECwindows DECterminal 1
ULTRIX DECwindows DECterminal 2

Update 16. Mai 2021 14:05 Uhr:

Das sich die Standard-Applikationen von DECwindows sich oft nicht öffnen ließen, lag daran, dass ich das Fenster mit der dxconsole meistens geschlossen hatte. Damit die DECwindows-Programme sich immer starten lassen, sollte die dxconsole wenigstens als Icon minimiert im Hintergrund weiter ausgeführt werden. Allerdings lässt sich das Programm Paint prinzipiell nicht starten. Es muss wohl fehlerhaft sein, da auch andere User das Problem haben.
Aber es bleibt immer noch zu klären, warum mich nach wie vor die X-Windows-Session immer wieder nach ein paar Minuten ausloggt und mich wieder zum grafischen Login-Fenster zurückbringt.

Links: