Inferno - das "hotter than hell" OS
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Inferno – das “hotter than hell” OS Bernd R. Fix Wenn man ein neues Betriebssystem entwickelt, dann braucht es nicht nur neue Konzepte, sondern auch viele neue Namen: Für das OS selbst, für Protokolle, Utilities und vieles andere mehr. Wenn der Architekt des neuen Systems dann auch noch Dantes “Göttliche Kommödie” liest und als Inspiration wirken lässt, dann kommen dabei auch schon mal ungewöhnlichere Namen heraus – wie eben “Inferno”. Das zeigt uns aber schon mal, das der Architekt eher Nerd als Marketing Manager war: der Name ist werbe-technisch – gelinde ausgedrückt – problematisch. “Das kann doch gar nicht funktionieren” sagt sich der Anwender und denkt “Nomen est Omen”. Aber Nerds ist Dante eben wichtiger als Dollar. Apropos Dante: Noch einen kleinen Merkspruch bevor es losgeht... Um den Zugang zu Inferno zu finden, gehen wir mal in der Zeit zurück – sehr weit zurück: Am Anfang war alles Eins... Doch dann entdeckten die Menschen die Null, bauten einen Computer und brauchten ein Betriebssystem. Das war die Zeit, in der UNIX geboren wurde, sich über die Rechnerwelt ausbreitete und viele Nachkommen hervorbrachte. Schauen wir uns den Stammbaum von UNIX einmal in vereinfachter Form an: Das ursprüngliche UNIX, in den Bell Laboratories von AT&T ab etwa 1968 entwickelt, war seiner Zeit weit voraus: Nicht nur weil es funktionierte (was man von vielen anderen Betriebssystem der damaligen Zeit nicht unbedingt behaupten konnte), sondern auch weil es völlig neue Konzepte wie z.B. hierarchische Filesysteme einführte, für den Multi-User-Einsatz geeignet war und selbst auf leistungsschwacher Hardware (das hiess damals so etwas wie PDP-7) laufen konnte. Inferno – das “hotter than hell” OS Seite 1/8
Der letzte Punkt war schon dadurch bedingt, dass man den Entwickler-Nerds keine bessere Hardware überlassen wollte und man das Projekt überhaupt nicht so ganz ernst nahm. So wundert es nicht, dass dieses erste Ur-UNIX kein kommerzielles Produkt war. Der Begriff “OpenSource” war damals noch nicht erfunden und es gab auch nicht so viele Leute, die eine PDP-7 im Keller hatten – aber im “Forscher-”Kreisen (sprich: Universitäten) wurde UNIX durchaus wahrgenommen und quell-offen verteilt. So wundert es nicht, dass die erste “Abspaltung” vom Ur-UNIX an der Universität Berkeley passierte, wo das heute noch aktive BSD entstand. Da insgesamt die Zahl der UNIX-Installationen aber stetig stieg, weckte das auch das kommerzielle Interesse, unter anderem natürlich bei AT&T, die UNIX ja sozusagen erfunden hatten. Mit “UNIX System III” steigt AT&T in den kommerziellen UNIX-Markt ein. Die zweite Generation besteht nur aus UNIX-Varianten, die heute praktisch nicht mehr relevant oder tatsächlich schon ausgestorben sind. Erst die dritte Generation hat wieder lebende Mitglieder. Wer Linux vermisst: Linux basiert auf keiner Quellcode-Linie und gehört deshalb wie andere Kandidaten (Minix) nicht in diesen Stammbaum. Linux ist vielleicht am ehesten so etwas wie eine “Cleanroom”-Implementation von UNIX SysV. Spätestens mit dem Aufkommen der ersten kommerziellen UNIX-Varianten (die natürlich Closed-Source waren) bestand die Notwendigkeit, UNIX so etwas wie einer Standardisierung zu unterwerfen, damit die verschiedenen Entwicklungen nicht zu sehr auseinander laufen und Software (auf Quellcode-Ebene) portabel bleibt. Es gründete sich POSIX, ein Konsortium von Firmen, die UNIX vertrieben. Damit war aber auch das “Grundkonzept” von UNIX festgeschrieben – jedes OS, das nur einige Konzepte von UNIX übernahm, aber grundlegende Sachen grundlegend anders machte, war – wie zum Beispiel DOS oder Windows - dadurch per Definition auch kein UNIX mehr. Inferno – das “hotter than hell” OS Seite 2/8
Dieser UNIX-Stammbaum umspannt 40 Jahre, so dass die Frage: “Ist dies Innovation? Oder nur eine langsame Evolution?” durchaus berechtigt ist. Meine ernüchternde Antwort darauf ist: “Ja, es ist leider nur eine Evolution.” Und im technischen Bereich bedeutet das auf lange Zeit das Todesurteil: Die technologische Entwicklung schreitet heute so schnell voran, dass ein System, dass sich nur evolutionär entwickelt, auf Dauer nicht überleben wird. Aber keine Panik: Wenn für UNIX alles gut läuft, dann gibt es noch ein paar UNIX- Systeme, die den Epoch Time Overflow im Jahr 2038 live erleben... Wenn es also einen Fluch der UNIX-Gene gibt, was ist dann diese UNIX-Gen, das andere Betriebssysteme nicht haben? [...] Es ist das Konzept, Ressourcen (vor allem interne und externe Hardware- Komponenten) wie Dateien im Filesystem zu behandeln; die Steuerung von Ressourcen geschieht dabei jedoch durch einen getrennten Mechanismus (ioctl). Als Beispiel für eine solche Ressource wollen wir uns mal die serielle Schnittstelle ansehen (in Linux als /dev/ttyS0 definiert). Dafür gibt es einen Kernel-Treiber, der mit der entsprechenden Hardware interagiert. Wollen wir jetzt Zeichen über die serielle Schnittstelle empfangen oder senden, können wir ganz normale Dateioperationen (Lesen/Schreiben) auf der entsprechenden Ressourcen-Datei ausführen – das vereinfacht die Anwendungs- Entwicklung natürlich ungemein, da man sich mit den Internas der Ressource nicht auseinandersetzen muss. Um aber die Schnittstelle zu steuern – also zum Beispiel um die Baudrate einzustellen oder festzulegen, wie Paritätsbits zu handhaben sind – müssen wir ioctl-Aufrufe auf der Serial-Schnittstelle verwenden. Dieses Grundkonzept wurde mit dem Ur-UNIX Anfang der 70'er Jahre eingeführt, hier sehen wir die beiden “Erfinder” bei der Arbeit (Ken Thompson stehend, Dennis Ritchie am Terminal). Kennt noch jemand den Rechner im Hintergrund? [...] Inferno – das “hotter than hell” OS Seite 3/8
Jetzt mal ehrlich: sehen die beiden Burschen so aus, als hätten sie nach UNIX genug von Betriebssystemen und danach nur noch Buchhaltungssoftware pro- grammiert? Wohl kaum... Aber UNIX grundlegend weiter zu entwickeln, war nach POSIX auch nicht möglich – das wäre dann kein UNIX mehr gewesen. Aber Thompson und Ritchie erkannten, das UNIX noch kein konsequent zuende gedachtes System war und so etwas ist für Nerds eine schlimme Beleidigung. Also arbeiteten sie daran, die Unvollkommenheit von UNIX zu überwinden: Alles, aber auch wirklich alles, ist ein File – auch die Steuerung von Ressourcen. Und so entstand Plan9... “Plan 9 From Outer Space” - der unbestritten schlechteste SciFi-Film aller Zeiten stand hier Pate für den Namen des Betriebssystems. Wer den Film nicht kennt, hier ein Trailer: Ausser dem Namen haben Plan9 und der Film wenig gemeinsam, im Gegenteil: Der Film hat gezeigt, dass man alles falsch machen kann und trotzdem berühmt wird, während Plan 9 alles richtig macht und trotzdem relativ unbekannt bleibt. Machen wir uns mit einigen Beispielen zuerst einmal klar, was “alles ist ein File” in Plan9 bedeutet: [Beispiele] Natürlich gehen die neuen Konzepte von Plan 9 über die “alles ist ein File”-Strategie hinaus, deshalb wollen wir uns diesen neuen Konzepten näher zuwenden: Zuerst einmal ersetzt Plan 9 das Root Filesystem, das jedes UNIX zum Hochfahren benötigt durch einen sogenannten Namespace: Ein Namespace ist eine hierarchische Struktur von Namen. Files (Blätter des Baumes) und Pfade (Directory-Abfolge) werden dabei in üblicher Schreibweise dargestellt. Die logische Sicht auf einen Namespace ist praktisch identisch mit der logischen Sicht auf ein Filesystem. Inferno – das “hotter than hell” OS Seite 4/8
Aus physikalischer Sicht gibt es aber einen wesentlichen Unterschied: Der Namespace ist virtuell (in-memory) und nicht mehr an eine Hardware (Festplatte o.ä.) gebunden. Das hat enorme Konsequenzen: Im Gegensatz zum Root Filesystem, das ein Singleton ist und für alle Prozesse in UNIX global sichtbar ist, gibt es in Plan 9 beliebig viele Namespaces: genau einen für jeden Thread, wobei ein Thread (i.d.R.) den Namespace seines Erzeugers als Kopie erbt. Das bedeutet, das “mount” keine privilegierte Operation mehr ist, das sie ja nur den individuelle Namespace manipuliert. Allerdings mountet der Befehl auch nicht mehr eine Hardware-Ressource, sondern einen “Server” - mehr dazu nachher. Mit “bind” können (gemountete) Pfade im Namespace übereinander gelegt werden, um eine einheitliche Namespace-Struktur zu erhalten (ähnlich UnionFS in Linux). Das Ganze ist aus Sicherheits-Sicht natürlich eine super Sache – jeder Prozess und Anwender bekommt einen Namespace zugeteilt, in dem nur das enthalten ist, was der Prozess/User sehen darf. Für gemeinsam benutzte Namespaces gibt es weiterhin Permissions, Gruppen und Owner. Der “Kern” von Plan 9 ist das Protokoll, mit dem Namespaces (lokal und entfernt) manipuliert werden können; das Protokoll wird oft als “Styx” oder “9P” bezeichnet. Das Protokoll werden wir uns gleich anschliessend genauer ansehen. Der Kernel ist grob gesehen nur so etwas wie ein lokaler Styx-Handler, der die lokalen Namespaces verwaltet (und ggf. exportiert). Alle Bibliotheksfunktionen in Plan 9 übersetzen den jeweiligen Request in Styx-Messages, die vom Kernel abgearbeitet werden. Daraus resultiert ein kleiner, leicht protierbarer Kernel, der nur etwa 10% des Syscall-Umfangs eines Linux-Kernels hat und zudem auch noch immanente Sicherheit bietet. Grundlage des Ganzen ist wie gesagt das Namespace-Protokoll “Styx” bzw. “9P”: Es ist ein NFS für Namespaces, aber sehr viel einfacher und vor allem mit mehr Inferno – das “hotter than hell” OS Seite 5/8
Sicherheits-Funktionen: ● Server und Client müssen sich mit Zertifikaten authentifizieren. ● Die Datenübertragung erfolgt verschlüsselt und integritätsgesichert. ● Es hat nur ~30 Befehle, die wie erwähnt so etwas wie das Kernel-API sind Mit diesem Protokoll sind jetzt nicht nur die lokalen Ressourcen ein File, sondern auch die Ressourcen anderer Computer in einem 9P-Netzwerk. Gemeinhin nennt man so etwas dann ein Netzwerk-Betriebssystem. Vorhin haben wir gesehen, dass Plan 9 das Root Filesystem durch Namespaces ersetzt. Natürlich gibt es auch weiterhin Filesysteme für permanente Files auf Festplatte o.ä., aber diese sind eben kein “Root FS” mehr und werden vom Kernel-Mount-Device per Styx bearbeitet. Und auch das neue Filesystem von Plan 9 ist sehr innovativ: Das Filesystem heisst Fossil und ist ein sogenanntes Snapshot-Filesystem. Das OS erzeugt periodisch (z.B. täglich) einen Snapshot des aktiven Filesystems. Der Anwender kann die Snapshots mounten und so einfach auf ältere Versionen von Dateien zugreifen. So ist es in Plan 9 sehr einfach, z.B. alte Versionen von Programmen auszuführen. Um Snapshots zu archivieren gibt es in Plan9 den Venti-Server, der auch mit überraschenden Konzepten aufwartet. Dateien werden blockweise archiviert, wobei ein Block zwischen 512 Bytes und 56kB gross ist; grössere Dateien werden in mehrere Blöcke aufgeteilt. Die Ablage-Addresse eines Blockes im Repository wird jetzt über den Hashwert der Blockdaten berechnet, d.h. gleicher Inhalt = gleicher Hashwert = gleiche Repository-Addresse. Damit werden automatisch gleiche Dateien im Archiv nur einmal gespeichert und können nie mit anderen Daten überschrieben werden, denn andere Daten = anderer Hashwert = andere Ablage-Addresse. So etwas nennt man dann revisions-sichere Archivierung. Wer sich jetzt an die Centera von EMC erinnert fühlt, hat Recht: Das ist das gleiche Prinzip – und wer von wem abgekupfert hat, kann sich jeder selbst Inferno – das “hotter than hell” OS Seite 6/8
ausrechnen. In Plan9 jedenfalls ist das Open-Source und umsonst dabei, eine Centera ist deutlich teurer ;-) Plan9 spielt seinen Vorteil des Netzwerk-Betriebssystem natürlich erst in (grossen) Netzwerken aus, in denen viele Computer ihren Dienst tun. Eine “typische” Plan9-Installation besteht also aus einem schnellen Backbone-Netz, an dem die Rechenknechte hängen. Ein Gateway schafft den Übergang in ein LAN, an dem die Terminals hängen (diskless). Auch der Übergang ins Internet passiert im Gateway und erlaubt auch die Nutzung von entfernten Terminals. Aber natürlich kann man auch Stand-alone Plan9-Installationen haben (Xen sei Dank!) und neben anderen Betriebssystemen nutzen. Oder es im heimischen Umfeld benutzen, wie folgendes Beispiel zeigen soll: Wir haben einen Computer mit Internetanbindung (rechts) und ein kleines Gerät, dass nur eine Infrarot-Schnittstelle besitzt (links). Wenn wir jetzt mit dem kleinen Gerät ins Internet wollen, gibt es ein Problem: das Gerät besitzt keinen IP-Stack, wohl aber die grosse Maschine. Mit zwei Befehlen können wir den IP-Stack über die Infrarot-Verbindung in das kleine Gerät importieren. Danach sind wir “drin im Internet” und können es nutzen. Zum Abschluss des Themas “Plan9” noch eine kurze Liste mit wenig bekannten Fakten zum Betriebssystem: Plan9 ist der Erfinder des UTF-8-Zeichensatzes und das erste OS, dass UTF-8 auch konsequent nutzt. Da es ein so schönes und schlankes Netzwerk-Betriebssystem ist, wundert es auch nicht, das Rechner- Cluster und Supercomputer gerne darauf zurückgreifen. War das jetzt schon das Ende? Sind die Architekten von UNIX und Plan9 danach in Rente gegangen. Weit gefehlt – denn man kann Gutes immer noch besser machen. Wenn schon Ressourcen geteilt werden, warum dann nicht auch Programme in dieses Konzept einbinden? Inferno – das “hotter than hell” OS Seite 7/8
So passierte der nächste Schritt und Inferno wurde aus der Taufe gehoben. Komisch, die Namen der Architekten kennen wir schon vor irgendwo her... Inferno übernimmt alle Basiskonzepte von Plan9 – alles, was ich vorher über Plan9 gesagt habe, gilt auch bei Inferno. Der Unterschied liegt in der Applikationsentwicklung: Während Plan9 mit einem C-Compiler aufwartet und damit wie unter UNIX programmiert wird, besitzt Inferno eine neue Programmiersprache namens Limbo. Diese ist nicht ganz objekt-orientiert (Module), hat aber interessante Konstrukte (Channels wie in Occam) für netzwerk-taugliche (verteilte) Applikationen und die VM ist direkt in den Kernel integriert. Alle Utilities wie shell, window manager und development tools sind in Limbo programmiert. Vereinfacht lässt sich sagen: Inferno ist Plan9 mit einer Kernel VM. Als Inferno entwickelt wurde, haben die Architekten kurzzeitig überlegt, Java als Programmiersprache zu nehmen. Leider war damals Java noch sehr jung (pre- 1.0) und entsprach auch nicht genau den Vorstellungen – das Channel Paradigma fehlte zum Beispiel. Irgendwo ist das schade, weil Inferno heute sicher bekannter wäre, wo es doch so viele Java-Programmierer gibt. Aber auf der anderen Seite auch nicht, denn die neuen Konzepte möchte man auch nicht missen. Inferno – das “hotter than hell” OS Seite 8/8
Sie können auch lesen