#171 – Der kleinste Großrechner der Welt

Vorwort: Fest anschnallen Freunde, heute wird es ziemlich „nerdy“! 😀

Mich hat das Projekt einfach interessiert und wenn man erst mal angefangen hat sich einzuarbeiten ist es einfach schon zu spät einen Rückzieher zu machen! 😉

Wie dem auch sei, ich hoffe ich habe das Thema auch für „Nicht-Nerds“ halbwegs transparent rübergebracht. Ich habe mir Mühe gegeben – ernsthaft!

In diesem Sinne, viel Spaß mit einem Einblick in eine längst vergessene Welt der Informatik…

********

Ein Großrechner – vielen vielleicht noch als EDV-Ungetüm (nicht nur) aus Science-Fiction-Filmen der letzten Jahrzehnte bekannt. Das sind diese großen Kisten, welche in einem Rechenzentrum (meist in Kombination mit Platten- oder Tape-Systemen bzw. Bandlaufwerken) stehen und eher wie „mechanische Schränke“ aussehen als wirkliche Hightech-Geräte! 😉

Zugegeben – heutzutage sieht ein Großrechner etwas fortschrittlicher aus. Trotz des großen Namens (:D) sind die Systeme wesentlich kleiner geworden und haben jetzt stylische Plastiktüren! Das ist natürlich nur ein optischer Hingucker, denn auch technisch hat sich die Welt weitergedreht. Moderne Großrechner-Systeme stellen state-of-the-art Technologien zur Verfügung. Bandlaufwerke gehören größtenteils der Vergangenheit an, stattdessen besitzen Großrechner Glasfaser-Anschlüsse und bieten zahlreiche Möglichkeiten zur Dateiverschlüsselung sowie Nutzung von Cloud-Technologien!

Doch keine Panik, darauf will ich gar nicht zu sehr eingehen. Letztendlich ist ein Großrechner (auch „Mainframe“ oder „Host“ genannt) auch nur ein Computer, welcher aus Hardwarekomponenten besteht und ein Betriebssystem benötigt. Im Vergleich zu einem Desktop-PC oder einem Laptop kann ein Mainframe aber eine Vielzahl an Ressourcen (Arbeitsspeicher, CPUs, Storagesysteme, etc.) verwalten und bietet somit die perfekte Grundlage für die Verarbeitung von Massendaten („Big Data“). Vielleicht verwenden gerade aus diesem Grund auch heute noch viele große Unternehmen diese IT-Dinosaurier aus der EDV-Steinzeit. Kein Witz – so werden z.B. 90% aller Kreditkartentransaktionen weltweit noch mit Mainframes erledigt – irre! 🙂

Fun Fact: Auf Grund ihrer Größe und der verbauten Technik werden Mainframes gerade von Amerikanern auch gerne „Big Iron“ genannt! 😀

Wenn ihr echte Nerds seid und euch das Thema „Großrechner, Mainframes und z/OS“ interessiert, kann ich euch wärmstens das Buch „What On Earth is a Mainframe“ empfehlen! Darin werden auf kurzweilige Art und Weise die grundsätzlichen Prinzipien eines Großrechners erklärt! 🙂

So, lang genug gelabert – schließlich ist Theorie langweilig und wir wollen Praxis-Action! 😀 Nun, was soll ich sagen? Leider kann ich mir keinen echten Großrechner für mehrere Millionen anschaffen und in den Keller stellen. Nicht nur, dass das aus finanzieller Hinsicht unmöglich wäre, auch benötigen diese Systeme ganz andere Standort-Voraussetzungen wie ein PC. So würde alleine der massive Stromverbrauch vermutlich das Stromnetz meiner Gemeinde lahmlegen. Von der Wärmestrahlung möchte ich gar nicht erst anfangen. Ohne geeignete Kühlsysteme hätte man vermutlich recht schnell eine Sauna im Keller! Auch die Tatsache, dass solche Geräte mehrere Tonnen schwer sind, macht es nicht einfacher, so ein Teil trägt man nicht eben einfach mal die Kellertreppe runter… 😀

Fun Fact: Ein amerikanischer Teenager hat sich genau das in den Kopf gesetzt: Einen alten Mainframe zu kaufen, in seinen Keller zu stellen und zu betreiben – kein Witz! Gelinde gesagt ein aufwändiges und teures, wenn nicht sogar nahezu unmögliches Unterfangen…

Tja, und jetzt? Leider ist auch der technische Aufbau, bzw. die Architektur eines Mainframes doch krass unterschiedlich im Vergleich zu „normalen“ Computern. So können wir z.B. ein Mainframe-Betriebssystem nicht einfach auf einem Computer (z.B. anstatt von Windows) installieren.

Hm, nicht gerade positive Nachrichten. Doch nicht verzagen, denn tatsächlich gibt es eine Möglichkeit. Das Zauberwort heißt – mal wieder – „Emulation“! 😉

Fun Fact: Das Prinzip ist das gleiche wie bei den Konsolenemulatoren, die ich bei vergangenen Bastelprojekten schon häufig verwendet habe. Letztendlich ist ein Emulator nur ein Programm, welches eine andere Architektur (also letztendlich die Hardware) simuliert. Als PC-Anwender kennt man das z.B. von einem N64-Emulator (z.B. „Project64“) mit dem man Nintendo 64 Spiele auf einem Computer spielen kann! Ebenso habt ihr bestimmt in einem meiner Artikel schon mal etwas von dem „DOSBox“-Emulator gehört. 😉

Heutzutage gibt es so gut wie für jedes halbwegs populäre System Emulatoren, so auch für Mainframes! 🙂 Schlaue Köpfe haben die unterschiedlichen Architekturen von Mainframe-Systemen analysiert und den Emulator „Hercules“ programmiert. Die Open Source Software ist kostenlos und bietet das technische Grundgerüst eines Großrechners – auf einem PC!

Fun Fact: Ganz wichtig – Hercules versucht nur die Hardware eines Großrechner-Systems (möglichst analog zum Original) virtuell abzubilden. Ein Betriebssystem enthält der Emulator selbst nicht.

Als besondere Challenge – und um endlich den Titel des heutigen Blogbeitrags zu erklären – habe ich es mir als Ziel gesetzt so einen emulierten Großrechner portabel auf einem USB-Stick zum Laufen zu bekommen – crazy shit! 😀

Also, was brauchen wir für unseren Mini-Mainframe? Zuerst mal einen USB-Stick! Ich habe für das Projekt einen günstigen 32GB Samsung-Stick (USB 3.1) verwendet. Letztendlich ist es egal für welches Speichermedium (USB-Stick, Festplatte, SSD) man sich entscheidet.

Fun Fact: Einzige Voraussetzung ist, dass der Datenträger halbwegs gute Schreib- und Leseraten besitzt, sonst dauert es Minuten bis was vorwärtsgeht. Oder habt ihr Lust eine halbe Stunde zu warten, bis das System endlich hochfährt? 😀

Nach dem Download der portablen Version von Hercules muss das ZIP-Archiv auf dem USB-Stick entpackt werden.

Fun Fact: Ich habe den Stick natürlich passenderweise mit dem Namen „MAINFRAME“ formatiert! 😉

Anschließend kann der Emulator über die Datei „hercules.exe“ gestartet werden. Puh, nur ein schwarzes Fenster mit etwas Text. Tja, viel mehr braucht es eben nicht, solange alles funktioniert! 😉

Fun Fact: Tatsächlich ist das nur die Logdatei des Emulators, außer geladenen Einstellungen sieht man hier nicht viel – keine Panik! 😀

Mit einem Druck auf die Escape-Taste wird es noch schlimmer. Uff – sind wir in der Matrix angekommen oder was?! Das sieht ja nicht gerade „benutzerfreundlich“ aus! 😀

In diesem Fenster sieht man neben den Inhalten des Arbeitsspeichers (Programmregister, PSW) unter „Peripherals“ die im Emulator definierten Geräte, so auch die DASD (Direct Access Storage Devices) Geräte. Im Endeffekt sind das Geräteadressen von Festplatten, aber man kann sich die Teile ungefähr so wie die Mountpoints bei Linux vorstellen. Ist ja eigentlich logisch, ohne Speicherplatz geht nichts! 😉

Fun Fact: Tatsächlich wird diese Übersicht liebevoll „grafischer Modus“ genannt – kein Witz! 😀

Natürlich bringt uns der Mainframe-Emulator an sich noch nichts, denn dieser simuliert nur die Hardware. Wir brauchen noch ein geeignetes Betriebssystem! Viele ältere (und damit mein ich sehr alte) Mainframe-Betriebssysteme wurden mittlerweile kostenlos veröffentlicht. Ein sehr populäres System ist z.B. „Turnkey MVS 3.8“, für welches auch noch Anleitungen (und Videos) zur Installation existieren. An sich könnten wir das für einen einfachen Test hernehmen, aber ich möchte stattdessen eine alte Version von „z/OS“, einem Betriebssystem von IBM verwenden, da ich das bereits aus meiner beruflichen Laufbahn kenne! 🙂

Fun Fact: Der Name besteht aus den Teilen „z“ und „OS“. OS steht natürlich für „Operating System“ – ist klar. Das „z“ steht für „zero downtime“ (nicht geplante Betriebsunterbrechung) und soll die hohe Verfügbarkeitsquote und Stabilität des Betriebssystems untermauern.

Die einzelnen „.cckd“-Dateien (Hercules Compressed CKD DASD image files) sind letztendlich virtuelle, komprimierte Festplattenimages von den für das Betriebssystem benötigten Festplatten bzw. deren Inhalt. Ich habe die entsprechenden Dateien in einen Ordner namens cckd auf den USB-Stick kopiert und bei der Gelegenheit in ein etwas handlicheres Format umbenannt.

Fun Fact: Das verwendete z/OS-System ist ein Komplettpaket (Betriebssystem mit einigen vorinstallierten und konfigurierten Anwendungen), welches vor Jahren zu Schulungszwecken erstellt wurde. Wer zu viel Lebenszeit hat, könnte natürlich auch versuchen alles von Grund auf neu aufzubauen. Seht es mir nach, wenn ich darauf verzichte. Für so eine Aktion bräuchte man mehrere langjährig ausgebildete Techniker und Spezialisten – und natürlich sehr viel Zeit…

Damit Hercules die virtuellen Images erkennt, müssen wir sie in der Konfigurationsdatei des Emulators („hercules.cnf“) definieren:

Hier gibt es zahlreiche weitere Parameter zu setzen, auf die ich jetzt nicht genau eingehen werde. Wichtig ist nur, dass die CCKD-Dateien eingebunden und die Adresse des „Loadparm“ (Angabe wo das System seine Konfiguration findet) korrekt gesetzt wurde.

Fun Fact: Ich erspare euch die stundenlange, mühsame Fehlersuche im Internet. Bei mir haben Teile des Systems nicht funktioniert, weil ich eine falsche Loadparm-Adresse angegeben hatte („0A95DB..“ anstatt „0A95DC..“) – so ein Mist! 😀

Soweit die Basiskonfiguration. Neben dem Emulator und den Systemdateien selbst benötigen wir noch eine Möglichkeit auf unser Betriebssystem zuzugreifen. Mainframes verwenden ein eigenes Protokoll (eine spezielle Variante von Telnet) namens „TN3270“. Eine Software, die mit dem Protokoll umgehen kann und auf modernen PCs läuft ist z.B. „wc3270“.

Fun Fact: Früher gab es physikalische Terminals mit schwarzem Bildschirm und grüner Schrift (so ganz ohne Internet, Office und sonstigen Anwendungen). Mittlerweile werden diese Geräte nur noch mit entsprechender Software emuliert.

Nach dem Download der „noinstall“-Version muss wc3270 auf den USB-Stick gepackt werden.

Anschließend müssen zwei Sessions mit Hilfe des Session Wizards (wc3270wiz.exe) angelegt werden. Als Hostname wird „127.0.0.1“ und als Port „3270“ verwendet.

Fun Fact: Es ist wichtig, dass man die IPv4-Adresse 127.0.0.1 angibt, ich habe es erst mit „localhost“ probiert und bin auf einen Fehler gestoßen, weil der Name bereits in eine IPv6-Adresse aufgelöst wird und der Terminalemulator damit nicht umgehen kann. Fail! 😀

Jetzt ist es endlich soweit und wir können zum ersten Mal unseren Großrechner hochfahren! 🙂

Dafür müssen die beiden 3270-Session und der Hercules-Emulator gestartet werden. Um das nicht immer per Hand machen zu müssen, habe ich mir eine kleine Batch-Datei geschrieben:

Um jetzt das System zu starten, müssen wir mit „ESC“ in den grafischen Modus wechseln und mit „l“ und einem anschließenden „f“ (Auswahl der Systemplatte) den IPL (initial program load), also den Startvorgang des Systems einleiten.

Beim ersten Startversuch kann es sein, dass ein Warnhinweis zur Initialisierung des Systems auftaucht. Diesen kann man einfach mit „r 00,i“ beantworten, damit der Startvorgang fortgeführt wird.

Anschließend geht die Post ab und das System fährt hoch. Auf der 3270-Session „console“ kann man der Systemkonsole beim Arbeiten zusehen, wie nach und nach die einzelnen Dienste gestartet werden. Schon spannend – fast wie in einem SciFi-Film! 😉

Je nachdem wie viel Power (CPU, Datenträger, etc.) der PC, auf dem der Emulator ausgeführt wird, hat, dauert es einige Minuten bis z/OS vollständig initialisiert wurde. Die aktuell gestarteten Dienste kann man sich über den Befehl „d a,l“ anzeigen lassen.

Und tatsächlich – einige Minuten später sieht man den Anmeldebildschirm (TSO logon screen) auf der zweiten 3270-Session aufpoppen. Ein erfreuliches Ergebnis, denn das bedeutet, wir haben einen kleinen Mainframe zum Laufen gebracht! 🙂

Soweit so gut, und was kann man jetzt damit machen? Nun, ich denke dieser Frage sollten wir beim nächsten Mal nachgehen. Ich möchte das Thema lieber in kleineren, und dafür (hoffentlich) verständlicheren Häppchen betrachten, als alles in einen Artikel zu quetschen. Und wenn ich ehrlich bin habe ich das Gefühl, dass der heutige Beitrag eh schon wieder zu lang geworden ist! 😀

In diesem Sinne – bis die Tage! 🙂

Write a comment