LUG Erding

Die Vorgeschichte zu Linux


Rahmenereignisse die zur Entstehung von Linux beigetragen haben


Dirk Geschke, LUG-Erding


Letzte Änderung: 22.6.2010


Die Anfänge

Hier ist der Überblick über die einzelnen Passagen:

Der eigentliche Beginn ist schwer zu definieren. Der Anfang könnte natürlich auch beim Abacus gesehen werden der bereits gut 2400 Jahre vor Christus in Babylon erfunden wurde. Die erste urkundlich erwähnte Rechenmaschine wird Wilhem Schickard zugeschrieben. Diese wurde im Jahr 1623 in einem Brief an Johannes Keppler beschrieben.

1642
Blaise Pascal erfindet den tragbaren Additor Pascaline, sein Vater war Steuereintreiber.
1673
Leibniz erfindet eine Rechenmaschine, die mit Hilfe von Zahnrädern multiplizieren kann.
1727
Antonius Braun konstruiert eine Sprossenradrechenmaschine für den Wiener Hof
1770
Pfarrer und Erfinder Philipp Matthäus Hahn konstruiert eine Rechenmaschine in Dosenform mit konzentrisch angeordneten Zahnrädern, Staffelwalzen und einer zentralen Antriebskurbel.
1882
Chalres Babbage hat ein erstes Modell seiner rein mechanischen difference enginge fertiggestellt. Die eigentliche Maschine wurde aber erst nach seinem Tod fertig. Seine ebenfalls von ihm entworfene analytical engine wurde leider nie realisiert. Die analytical engine gilt aber als Vorläufer der heutigen Computer. Seine engest Mitarbeiterin Ada Lovelace entwickelt für diese Maschine ein Konzept zur Programmierung. Sie zählt daher als erste Programmiererin überhaupt.
1884
Hollerith erfindet eine mechanische Rechenmaschine, die Lochkarten verwendet. Diese kam bei der Volkszählung 1890 zum Einsatz. Die Hardware kostete nur 750.000 Dollar, allerdings wurden die Lochkarten separat verkauft. (1880 hatte die Volkszählung zirka 5 Millionen Dollar gekostet.)
1900
Charles Flint gründet die International Time Recording Company, diese stellte Uhren her. Daraus wurde im Jahr
1901
die Computing Scale Company of America. Sie stellten Waagen her, die gleich die Gebühren anzeigten.
1910
Flint und Hollerith gründen Computing Tabulating Recording (CTR).
1912
Thomas Watson (ehemals NCR) wird General Manager von CTR.
1919
CTR erstellt den ersten Listendrucker der über Hollerith-Karten erstellte Informationen ausgeben kann. In diesem Jahr wird auch der elektrische Flip-Flop-Schalter erfunden.
1924
CTR wird in International Business Machines Company (IBM) umbenannt.
1936
Alan Turing veröffentlicht On Computable Numbers, with an Application to the Entscheidungsproblem, die daraus resultierende (theoretische) Turingmaschine ist in der Lage jedes durch einen Algorithmus lösbare Aufgabe zu lösen.
1937
Konrad Zuse baut die mechanische Rechenmaschine Z1, diese läuft aber nicht sonderlich stabil.
1941-1945
Das Department of Defense der USA sponsert Computer-Projekte.
1941
Im Mai ist die Zuse Z3 betriebsbereit, sie gilt als der erste laufende, progammierbare und vollautomatische Computer. Er arbeitete elektromechanisch, die Programmierung erfolgte über Lochstreifen.
1942
Mit dem Atanasoff-Berry-Computer steht der erste elektronische Digitalrechner zur Verfügung, er war aber nicht programmierbar.
1943
Im englischen Bletchley Park wird Colossus zur Entschlüsselung der Kommunikation der deutschen Lorenz-Schlüsselmaschine in Betrieb genommen. Dies ist der erste elektronische Computer, der Einsatz war aber lange geheim gehalten worden. Daher glaubten viele, dass die ENIAC das erste System war.
1945
John von Neumann beschreibt in A First Draft of a Report on the EDVAC[1] eine Architektur für Computer die im wesentlichen schon früher von Konrad Zuse und auch bei der Colossus verwendet wurde.
1946
ENIAC, Electronic Numerical Integrator and Computer, ging in Betrieb. Die Entwicklung begann bereits 1942.
1952
Ken Olson & Co sowie IBM arbeiten an SAGE (Semi-Automatic Ground Environment), einen Computer für die Luftverteidigung.
1953
Aufgrund der starken Bindung zu IBM muss Olson gehen. Olson will IBM mit den eigenen Waffen schlagen und gründet die Digital Equipment Corporation (DEC).
1959
DEC präsentiert den ersten Prototyp: PDP-1 (Programmed Data Processor). Die Eckdaten: 18 Bit, maximal 32 kB Speicher, Speicherzugriff 5 μs, 100.000 Kalkulationen pro Sekunde, 3500 Transistoren und 4300 Dioden. Es gab einen Editor, Macroassembler, ALGOL Compiler, einen Papierstreifenleser und eine IBM-Schreibmaschine für die Ausgabe. Davon wurden 53 Stück verkauft, der erste ging an Bolt, Beranek und Newman (BBN) (siehe Arpanet und TCP/IP).

Die Modelle PDP-2 (24 Bit) und PDP-3 (36 Bit) wurden nie gebaut, PDP-4 hatte 18 Bit und floppte am Markt. Dabei war das Preis/Leistung-Verhältnis eigentlich sehr gut. Sie hatte einen Assembler, Editor, Fortran und viele andere nützliche Programme installiert.

Die PDP-5 war ein 12-Bit-Frontend für die PDP-4. Das wird dann wohl als Recycling bezeichnet. PDP-6 war eine 36-Bit-Maschine und floppte ebenfalls - nur 32 Stück wurden verkauft. Die Modelle PDP-7, PDP-9 und PDP-15 waren 18-Bit-Nachfolger der PDP-4. Die PDP-8 war wieder ein 12-Bit-System und der Ursprung der Minicomputer-Revolution im Jahre 1965. Sie kostete schlappe 18.000 Dollar. Davon wurden dann zirka 50.000 Systeme verkauft. Die PDP-10 war wieder ein 36-Bit-Nachfolger der PDP-6, recht unspektakulär.

Die PDP-11 war schließlich das System, mit dem DEC zum Marktführer für Minicomputer wurde: Sie erschien 1970, hatte 16-Bit und verkaufte sich 250.000 Mal. Das war ein Computer, wie ihn sich Universitäten leisten konnten. Die PDP-11 legte die Basis für den Erfolg von Unix - und dabei ist bis hier hinsichtlich Unix noch nicht viel passiert.

CTSS

Bis Anfang der 60er Jahre liefen Programme im Batch-Modus: Die abzuarbeitenden Programme wurden meist auf Lochkarten gestanzt, im Rechenzentrum legte eine Operator genannte Person diese zur Bearbeitung im Computer ein. Die Programme liefen der Reihe nach für eine vorgegebene Zeit. Wurde diese Zeit überschritten, so wurde das Programm einfach beendet - unabhängig davon, ob es zu einem Ergebnis gekommen war oder nicht. Um auf Nummer sicher zu gehen, dass auch ein Ergebnis erzielt wurde, ist meist mehr Rechenzeit beantragt worden, als notwendig war.

Die Folge war dann häufig, dass diese Programme nur in der Nacht laufen konnten, tagsüber liefen die kürzeren. Wenn nun ein Programmfehler auftrat konnte darauf erst am nächsten Tag reagiert werden, es wurden dann neue Lochkarten gestanzt und diese zur Abarbeitung in der Nacht dem Operator im Rechenzentrum übergeben. Dies war aber auch die Zeit der Hacker[2], diese nutzten die freigewordenen Zeiten der Maschinen in der Nacht um eigene Berechnungen anstellen zu können.

Das ist natürlich eine langwierige und oft frustrierende Angelegenheit gewesen. Mit Verbesserung der Hardware kam dann die Idee auf ein Betriebssystem zu erstellen, dass Jobs parallel abarbeiten kann: Time-Sharing oder neudeutsch Multitasking. Sogar interaktives Arbeiten sollte damit möglich sein[3]: CTSS - Compatible Time-Sharing System. CTSS wurde auf einer IBM 7090, später 7094, am MIT (Massachusetts Institute of Technology) entwickelt. Es konnten mehrere Programme parallel laufen, diese konnten zum Teil auf Band ausgelagert werden. Es gab zwei Prozessor-Modi: Einen Supervisor-Modus (heute Kernel-Modus) und einen Userprogamm-Modus. Zwischen diesen beiden konnte automatisch gewechselt werden. Ein direkter Versuch auf die Hardware zuzugreifen führte zu einem illegal-instruction Fehler und der Supervisor-Modus wurde aktiviert. Dieser hat sich diesen Fehler zum Anlass genommen und den gewünschten Systemzugriff realisiert.

Der Hauptspeicher konnte segmentiert werden. Hierdurch war es möglich mehrere Programme parallel im Speicher zu halten. Das interaktive Arbeiten war über Terminals möglich, diese waren zur damaligen Zeit eigentlich nur Schreibmaschinen. In dieser Zeit sind auch zahlreiche Anwendungen entstanden, die es heute noch in irgendeiner Form gibt:

MAIL
Da diese Systeme einen permanenten Speicher, zuerst ein Bandlaufwerk und später eine Festplatte, besaßen, begannen die Anwender Dateien anzulegen wie zum Beispiel TO_TOM. Der Anwender Tom wusste damit, dass für ihn eine Nachricht hinterlegt worden war. Da dies immer mehr Leute nutzten, entstand die Notwendigkeit, ein globales System zu entwickeln. Daraus entstand das MAIL-Programm
SHELL
Da das System interaktiv genutzt werden konnte und häufig mehrere Programme nacheinander gestartet werden sollten wurde etwas benötigt womit das automatisiert werden konnte. Dabei musste unter anderem auf Ergebnisse der Programme richtig reagiert werden. Das Programm was dies ermöglichte war der Vorgänger der heutigen Shells: RUNCOM. Ein Tribut an dieser Vorläufer-Shell sind die heutigen rc-Startskripte unter Unix (/etc/rc bei BSD, bzw. /etc/rc?.d/ bei SystemV basierten Systemen).
Textsatzsystem
Das erste Textverarbeitungssystem (eigentlich Textsatzsystem) wurde unter CTSS entwickelt und hieß RUNOFF. Die heutige Unix-Varianten heißen roff, beziehungsweise nroff, groff, troff,... Und es gibt sogar heute noch Bücher die mit vi und troff erstellt wurden, beispielsweise das von Teer, Rich: Solaris Systems Programming, Prentice Hall, 2004.

Eine Bemerkung am Rand: Ken Thompson bekam für die Entwicklung von Unix kein Geld, wohl aber für die Entwicklung eines Textsatzsystems. Man kann sich leicht denken was passierte: Er entwickelte Unix und als es an der Zeit war, ein Textsatzsystem zu präsentieren, erschuf er roff. Das ging dann natürlich erstaunlich schnell.

Es gab später am MIT AI-Lab (Artificial Intelligence) noch ein Time-Sharing-System: ITS - Incompatible Time-Sharing System. Der Name war eine Anspielung auf CTSS. Dieses System und Umfeld gilt als Kinderstube der Hacker. In dieser Umgebung wuchs auch Richard M. Stallman auf. Wem der Name nichts sagt: Stallman haben wir GNU zu verdanken sowie den Namen POSIX.

Multics

Multics, Multiplexed Information and Computing Service, war als ein Nachfolger von CTSS geplant. Drei Unternehmen haben sich 1965 für dieses Projekt zusammengetan:

Die Ziele von Multics waren hochgesteckt:

Vieles davon ist später Bestandteil von Unix geworden und zahlreiche Ideen wurden verwendet, wie etwa das Schreiben des Kernels in einer Hochsprache. Ein großes Problem war die Programmiersprache PL/1: Sie war für das Multics-Projekt noch nicht verfügbar. In der Zwischenzeit wurde das Multics System Programmer's Manual (MSPM) geschrieben. Das Handbuch hatte über 3000 Seiten, die mehrfach überarbeitet wurden. Die Dokumentation war also nie ein Problem von Multics und Unix lebte später sehr gut davon.

Danach zog sich die Entwicklung aber noch immer hin - vermutlich lag es daran, dass drei große Firmen ein gemeinsames Projekt stemmten? 1968 drohte ARPA (Advanced Research Projects Agency), der größte Geldgeber des Projektes, die Mittel zu sperren. 1969 stieg dann BTL aus dem Projekt aus. Zu diesem Zeitpunkt lief Multics, allerdings nur mit ein bis zwei Benutzern. Ab dem Dritten brach alles zusammen.

Die meisten sind der Meinung, dass Multics ein Fehlschlag war. Es gibt aber auch andere Meinungen dazu. Tatsache ist, dass am 30.10. 2000 um 17:08 Uhr die Canadian National Defence in Halifax das letzte Multics-System abschaltete. Seit November 2007 ist Multics im Quellcode als Open Source verfügbar[4].

Viele Ideen und Konzepte von Multics wurden später bei Unix wieder verwendet. Vielleicht wurde Unix auch nur ein Erfolg, weil hier ein paar Hobbyisten das Betriebssystem programmierten und nicht eine ganze Heerschar von Profis. ARPA als größter Sponsor hat auch das Arpanet und damit das Internet geschaffen. Und wenn man es streng nimmt, dann haben wir den Russen das Internet zu verdanken. Aber das ist wieder ein Kapitel für sich.

Die Anfänge von Unix

Alles fing mit einem Computerspiel an: Space Travel. Ken Thompson hatte dieses Spiel unter Multics programmiert. Es simulierte die Bewegung von Planeten im Sonnensystem, man konnte mit einem Raumschiff umherfliegen, in Umlaufbahnen einschwenken und sogar auf Planeten landen[5]. Das Programm wurde dann in Fortran für das GECOS Betriebssystem umgeschrieben und lief auf einer GE 635. Allerdings war da die Grafik mehr als bescheiden und die CPU-Stunde kostete 75 Dollar. Das war natürlich damals mehr Geld als heute und wäre auch heute noch recht teuer.

Auf der Suche nach einer billigen Lösung fand Ken dann eine wenig genutzte PDP-7 mit erstklassigem Terminal-Display - der Computer wurde für ein Projekt angeschafft, aber der Projektleiter hatte die Abteilung gewechselt. Der Rest ist nahe liegend: Space Travel wurde in Assembler neu geschrieben, auf der GE 635 cross-compiliert und via Lochstreifen auf die PDP-7 transferiert. Der Spieltrieb brachte es dann mit sich, dass für die PDP-7 ein Dateisystem entwickelt wurde. Was noch immer fehlte war ein Betriebssystem.

Zu dieser Zeit im Sommer 1969 fuhr Kens Frau für einen Monat mit ihrem einem Jahr alten Sohn zu seinen Eltern, die das Kind noch nicht gesehen hatten. In diesem einen Monat wurde dann der Rest des Betriebssystems installiert: Shell, Editor, Assembler, User Utilities zum Kopieren, Drucken, Löschen und so weiter. Damit war die GE 635 nicht mehr notwendig.

Obwohl Ken Thompson und Dennis Ritchie im Multics-Projekt involviert waren, wollten sie nicht einfach ein neues, besseres Multics erstellen. Aber viele der Ideen und Eigenschaften, wie beispielsweise das interaktive Arbeiten, gefielen ihnen. Sie waren also sehr wohl von Multics beeinflusst. Aber sie wussten auch, dass sie nicht die Hardware hatten und wollten daher eigentlich etwas viel Simpleres erstellen.

Alles musste in Assembler programmiert werden, was ein wenig umständlich war. Ein gutes System musste laut Ken einen Fortran-Compiler haben (PL/1 war für sie nicht erhältlich). Also fingen sie an, einen zu schreiben. Allerdings entschieden sie sich dann anders und nach einem Tag hatten sie B. Dies war eine abgespeckte Version von BCPL (Basic Combined Programming Language). Es war kein wirklicher Compiler, sondern er übersetzte die Sprache in Bytecode (ähnlich wie Java es heutzutage macht). Dieser Compiler stieß aber immer an die Grenzen des Speichers. Daher musste ein neuer, besserer Computer her.

1970 entstand dann in Anspielung auf Multics der Name Unics (UNiplexed Information and Computing Service). Im Laufe der Zeit wurde dann aus Unics das heute bekannte Unix - was sprachlich ziemlich gleich klingt. Geld für einen besseren Computer, damit Unix weiterentwickelt werden konnte, gab es allerdings bei BTL nicht. Wohl aber gab es Geld für den Kauf einer PDP-11 mit dem Ziel, ein Textsatzsystem zu erstellen. Den Rest kann man sich nun denken.

Am Anfang arbeiteten vier Leute an Unix:

Das Paradoxe dabei ist, dass die Unix-Entwicklung nur wegen eines Textsatzsystems (indirekt) finanziert wurde. Der Erfolg der ersten Unix-Computer basierte aber genau auf dieser Anwendung. Und dabei war das lediglich eine Portierung von RUNOFF alias roff.

Die nächsten Jahre standen dann im Zeichen der Weiterentwicklung des Betriebssystems. Dennis Ritchie schuf die Programmiersprache C. Nach anfänglichen Problemen - es gab noch keine Datentyp-Strukturen - wurde dann der Unix-Kernel komplett in C neu geschrieben. Das war ein riesiger Schritt in Richtung Portierbarkeit: Sobald der C-Compiler in der Lage war, den richtigen Code zu erstellen, konnte das meiste einfach wiederverwendet werden[6].

Die Verbreitung von Unix

Wesentliche Entwicklungen waren das Neuschreiben des Kernels in C. Dies machte die Portierbarkeit deutlich leichter. Aber auch die von McIlroy vorgeschlagenen Pipes wurden implementiert. Das war eine der größten Leistungen, obwohl es nur eine kleine Änderung war. Aber zu diesem Zeitpunkt gab es nur die Ausgabeumleitung in eine Datei. Der umgekehrte Weg, anstelle der Standard-Eingabe aus einer Datei zu lesen oder die Ausgabe eines anderen Programms dafür zu verwenden, war noch nicht möglich. Pipes machten aber gerade dies, sie nahmen die Ausgabe des ersten Programms und verwendeten sie als Eingabe für das nächste Programm.

Das führte dann recht früh zu der Unix-Philosophie:

Auf diese Weise konnten nun viele kleine Programme einfach wie in einem Baukasten miteinander verbunden werden. In der Folge konzentrierten sich die Entwickler darauf, kleine Programme zu schreiben die nur für einen Zweck gedacht und optimiert waren. Diese ließen sich dann leicht kombinieren.

Es gab aber noch ein großes Problem bei AT&T. In einem Antitrust-Urteil von 1956 wurde AT&T auferlegt, sich from engaging in any business other than the furnishing of common carrier communciation services fern zu halten. Es gab nur wenige Ausnahmen hierzu, etwa experiments for the purpose of testing or developing new common carrier communications services.

Klar ist, dass 1956 weder Computer noch Software erwähnt wurden. Das machte die Unix-Entwicklung außerhalb von AT&T, beziehungsweise BTL, schwierig. Eine weitere Auflage war, dass AT&T möglichen Konkurrenten Zugang zu Patenten gewähren musste.

Jetzt wird es spannend: Die Zusammenarbeit mit GE und MIT, um Multics zu schaffen, fiel in die Kategorie research experiment. Die Entwicklung und Verwendung von Unix innerhalb von AT&T stellte auch kein Problem dar. Aber nach einem Symposium, bei dem Ken Thompson Unix vorgestellt hatte (ACM Symposium on Operating Systems Principles, 15. bis 17. Oktober 1973), und die spätere Publikation des Textes führte zu einem Ansturm von Anfragen nach diesem System. Diese Anfragen kamen aber von Organisationen und Firmen, die nichts mit AT&T, BTL oder Western Electric zu tun hatten. Western Electric war wie AT&T in dem Antitrust-Verfahren wegen der marktbeherrschenden Stellung verurteilt worden. AT&T und Western Electric gehörten jeweils 50 Prozent von BTL.

Die Auflage, Lizenzen von Patenten zu veräußern, führte dazu, dass laut Einschätzung der Juristen bei AT&T auch Unix-Lizenzen verkauft werden mussten. Das hieß, AT&T verkaufte Unix-Lizenzen und verteilte Unix hauptsächlich an Universitäten da sie früher schon mit Universitäten viel zusammen gearbeitet hatten. Das Antitrust-Urteil bewirkte aber, dass sie selber auf diesem Gebiet nicht aktiv werden durften.

Andrew Tanenbaum, der Entwickler von Minix, fasste das Verhalten von BTL einmal so zusammen:

Die Folge war, dass Unix weiter verbreitet und verwendet wurde. Im Laufe der Zeit entwickelten einige Lizenznehmer eigene Erweiterungen und Verbesserungen oder portierten Unix auf Hardware, die es bei BTL nicht gab. Damit entstanden dann eigenständige Unix-Versionen von anderen Anbietern. Aber allen war eines gemein: Um die anderen Varianten verwenden zu können, musste dennoch bei AT&T eine Lizenz gekauft werden. Die erste nicht-AT&T-Variante war BSD von der Computer Science Research Group (CSRG) der Universität von Berkeley.

BSD

Eine der ersten Unix-Installationen außerhalb von BTL war in Berkeley (University of California at Berkeley, UCB). Hier gab es aber ein Problem: Die Mathematiker und Statistiker wollten lieber das Time-Sharing-System von DEC (RSTS, Resource Sharing Time-Sharing System) auf der Maschine laufen lassen. Die Computer-Wissenschaften hingegen bevorzugten Unix. Der Kompromiss bestand darin, dass acht Stunden Unix lief und danach 16 Stunden RSTS. Um das Chaos zu steigern wurden die Uhrzeiten rotiert: Mal lief Unix von 8 bis 16 Uhr, am nächsten Tag dann von 16 Uhr bis Mitternacht und am dritten Tag von Mitternacht bis 8 Uhr. Trotz dieser seltsamen Zeiten zogen es die Studenten der Computer-Wissenschaften vor, ihre Projekte unter Unix laufen zu lassen.

Die Professoren Eugene Wong und Michael Stonebraker waren durch diese Einschränkungen der Batch-Umgebung (RSTS) so sehr behindert, dass sie ihr INGRES-Datenbankprojekt als eines der ersten auf das Unix-System portiert hatten. Nebenbei sei erwähnt, dass PostgreSQL von diesem Projekt abstammt. Durch die Zeitbeschränkungen waren sie so verärgert, dass sie die Gelder für eine eigene PDP-11/45 auftrieben und kurz darauf wurde die erste Distribution von INGRES verteilt. Diese Datenbank half der UCB, einen sehr guten Ruf für die Erstellung von Software zu erlangen.

Anfang 1977 erschien dann die Berkeley Software Distribution. Sie wurde von William Nelson Joy, genannt Bill Joy, herausgebracht. Joy gilt als eine Triebfeder für die Entwicklung von BSD und verließ Berkeley als er zusammen mit Scott McNealy, Vinod Khosla und Andreas Bechtolsheim die Firma Sun gründete. Dort entwickelte er zuerst das SunOS und später Solaris. Er war auch einer der wenigen, die mit Unix richtig reich wurden.

Bestandteile der ersten Distributionen waren unter anderem ein Pascal-Compiler und der von Bill Joy erstellte Editor ex, ein Zeileneditor, den es auch heute noch unter Unix gibt. Als die ersten Terminals mit adressierbarem Cursor erschienen, war es Joy, der den vi geschrieben hat[7]. Dieser Editor ist auch heute noch der Editor unter Unix. Mit ihm ist es möglich, mehr als nur eine Zeile zu sehen und zu editieren. Da aber die alten Terminals noch weiter verwendet wurden, die Leute jedoch mit vi arbeiten wollten schrieb er ein Programm, dass den Terminal-Bildschirm jedes mal neu aufbaute: termcap.

1978 wurde dann dank dem Feedback vieler Anwender - im Gegensatz zur BTL durfte Berkeley darauf reagieren - die Distribution erneuert. Das war dann die Second Berkeley Software Distribution oder kurz 2BSD.

Spannend wurde es, als die UCB sich 1978 eine VAX anschaffte. UCB bestellte sie ohne Betriebssystem, obwohl eine VAX eigentlich mit VMS verkauft wurde. Das hat DEC ein wenig verwirrt. Die Unix-Version für die VAX hatte allerdings einige Beschränkungen, die nicht von der Hardware vorgegeben waren. Zum Beispiel konnte ein Prozess nur im Speicher oder nur im Swap existieren. Hier wurde dann das erste Virtual-Memory-System für Unix erstellt. Bald darauf folgte die komplette Portierung von 2BSD auf die VAX, im Dezember 1979 erschien 3BSD.

1980 erschienen dann 4BSD und das nächste Unix-Derivat: Xenix von Microsoft - sie versuchten sich erst an Unix und fielen damals schon dadurch auf, dass sie zu anderen Systemen inkompatibel waren[8]. Interessanterweise haben sie ihre Unix-Version nicht direkt vermarktet sondern vertrieben diese über die Firma SCO, Santa Cruz Operation. Letztere sorgte in jüngster Zeit für viel Wirbel um die Unix-Rechte.

4BSD war von DARPA (Defense Advanced Research Projects Agency, das Defense wurde später gestrichen[9] ) gesponsert worden mit dem Ziel, Computer an verschiedenen Standorten zu vernetzen.

AT&T

AT&T realisierte recht bald, dass mit Unix Geld verdient werden könnte. Mit Version 7 änderten sie daher die Lizenz. Diese untersagte es fortan, den Source-Code von Unix zu studieren. Damit wurden viele Unix-Kurse an den Universitäten recht abrupt beendet. Andrew Tanenbaums Lösung war es, ein Unix-kompatibles Betriebssystem von Grund auf neu zu schreiben, das keine einzige Zeile AT&T-Code enthält, er nannte es Minix.

Im Jahre 1982 wurde dann das Antitrust-Urteil modifiziert. Nach langem juristischem hin und her kam der Vorschlag, die operativen Unternehmen von AT&T abzuspalten (BabyBells - In Anlehnung daran wurde im Zusammenhang mit dem Antitrust-Verfahren gegen Microsoft und einer möglichen Aufsplittung von BabyBills gesprochen.)

BTL wurde abgespalten und in AT&T Bell Laboratories umbenannt. AT&T war es nun erlaubt, ins Hardware- und Software-Geschäft einzusteigen. In diesem Zusammenhang änderte das Unternehmen auch die Benennung der Versionen: Hießen die Versionen bislang Version 1 bis 7 (V1-V7), so hieß die erste öffentliche Version von AT&T nun System III. Version IV war nur intern gebräuchlich und System V erschien dann 1983. Das macht dann wiederum die Verwirrung perfekt, es gab zu System V noch einzelne Releases. Die Ähnlichkeit mit V und der römischen 5 sorgte dann noch für zusätzliches Chaos. System III war die erste Unix-Version, die nicht von BTL stammte. Zu dieser Zeit entstanden auch SunOS, HP-UX und Ultrix.

Weiterentwicklung von BSD

4.1BSD war eigentlich nur eine leistungsoptimierte Version von 4BSD. Gravierende Neuerungen brachte erst 4.2BSD mit sich: TCP/IP. Diese Version sollte eigentlich 5BSD heißen. Aber AT&T brachte die Version System V heraus und hatte Angst vor Verwechselungen. Daher ist 5BSD nie erschienen.

TCP/IP war eines der von DARPA gesponserten Projekte. Eigentlich sollte hier eine Version von BBN (Bolt, Beranek, Newman) zum Einsatz kommen. Diese schaffte aber nur 56 Kb/s bei 100 Prozent CPU-Last. Zu dieser Zeit kam jedoch das Ethernet auf, es waren theoretisch also deutlich höhere Übertragungsraten möglich.

Bill Joy setzte sich hin und optimierte sowohl das Protokoll als auch die Implementierung. Seine Vision war, dass dieses Protokoll nicht nur für DARPA nützlich ist. Er schaffte mit seiner Version eine Übertragungsrate von 700 Kb/s. Es gab dann noch einen kleinen Disput: BBN hatte eine überarbeitete Version von TCP/IP, aber Bill Joy weigerte sich, diese zu implementieren. Der Streit zog sich über Jahre hin und die Berkeley-Version gewann. Dennis Ritchie sagte dazu (das DARPA-Komitee traf sich alle halbe Jahr und diskutierte über die Vorgänge innerhalb des Projektes): Every six months we'd say, use the BBN version, and Bill would say no.

Man muss wohl manchmal nur hartnäckig sein. Immerhin genießt BSD noch heute einen sehr guten Ruf, was den Netzwerkbereich betrifft.

Aus dieser Zeit stammen auch die Berkeley-r-Tools: rlogin, rsh, rcp. Diese sollten es ermöglichen, mit einem entfernten Computer genauso zu arbeiten wie mit dem Lokalen. Und noch etwas stammte aus dieser Zeit in Berkeley: Eric Allman schuf sendmail.

AT&T, BSD und Copyrights

1988 erwarb AT&T 20 Prozent der Anteile an Sun Microsystems. Die Folge war, dass von SunOS BSD-Features in das klassische Unix eingebracht wurden. Damit entstand System V Release 4, beziehungsweise SVR4.

1990 wurde das Unix-Geschäft von AT&T ausgegliedert: Unix System Labs (USL) war nun für die Vermarktung von Unix zuständig. Die klassischen AT&T Bell Laboratories widmeten sich nun anderen Softwareprojekten. Ein Projekt war Plan 9, aber das ist eine andere, lange Geschichte.

AT&T lebte bis zu dieser Zeit sehr gut von den Lizenzen: Jeder, der ein Unix einsetzte, egal von welcher Firma, musste eine Lizenz von AT&T vorweisen. Auf der anderen Seite hat sich BSD immer mehr von dem alten AT&T-Code entfernt, der Anteil an AT&T-Code in BSD nahm beständig ab.

NET1 erschien in Berkeley. Es war eine Untermenge von BSD, aber komplett ohne Lizenz. NET1 hatte das klassische BSD-Copyright für die Sourcen und es war erlaubt, diese weiterzuverbreiten. 1991 erschien dann NET2. Diese Version enthielt bis auf sechs Kernel-Dateien keinen AT&T-Code mehr. Was dann folgte, war nahe liegend: Die letzten sechs Dateien wurden vom AT&T Code befreit, es entstanden auch Versionen für den jetzt verfügbaren Intel-386-Prozessor.

Darauf folgten mehrere Ereignisse:

Das besondere Ereignis jedoch war, dass USL BSDI auf Copyright-Verletzung verklagte. Diese Klage wurde 1993 außergerichtlich beigelegt nachdem auch im USL-Code Teile von BSD gefunden wurden. Aber bis zur Beendigung der Klage waren keinerlei Unix-Sourcen frei erhältlich. Dies ist ein wichtiger Grund dafür, dass Linux überhaupt entstehen konnte: Wäre das 386/BSD frei verfügbar gewesen, hätte Linus Torvalds laut eigenen Angaben wohl niemals Linux entwickelt[11].

Damit hätten wir nun den einen Zweig der Geschichte beisammen: Die Basis für die Entstehung von Linux war das Fehlen einer freien Unix-Variante (für den PC). Es gab zwar Minix und Linus arbeitete auch damit, aber das Betriebssystem hatte seine Probleme. Insbesondere war Minix für Forschung und Lehre gedacht, nicht für den produktiven Einsatz. Daher fehlten viele sinnvolle Funktionen die nur mühselig nachträglich hinzugefügt werden konnten. Die Lizenzbedingungen von Minix untersagten das Verteilen von modifizierten Versionen und jeder musste neue Funktionen die von anderen Anwendern bereitgestellt wurden via Patches einspielen.

ARPA, Arpanet, Internet

Alles fing mit dem internationalen geophysikalischen Jahr 1957[12] an: In diesem Jahr sollten unter anderem in der oberen Atmosphäre Messungen während intensiver Sonnenaktivitäten durchgeführt werden. US-Präsident Eisenhower kündigte 1955 an, dass die USA einen kleinen Satelliten in den Orbit bringen wollen. Der Kreml kündigte im Gegenzug an, dieses auch erreichen zu wollen.

Die Amerikaner planten dafür eine neue, dreistufige Rakete. Die Sowjetunion war da pragmatischer mit einem zweistufigen System: Sie hatte einfach vier konventionelle militärische Raketen zur ersten Stufe zusammengebunden, eine fünfte stellte die zweite Stufe dar. Am 4. Oktober 1957 schickte die UdSSR Sputnik 1 (Sputnik bedeutet Weggefährte) in den Erdorbit. Man kann es ahnen: Das war ein Schock für die Amerikaner. Sie hatten das Gefühl, über Nacht die technologische Überlegenheit verloren zu haben, die sie seit der Atombombe hatten[13].

Neben der rein technischen Leistung einen Satelliten in den Orbit zu schießen kam noch ein anderer Aspekt zum Tragen. Sowohl die USA als auch die UdSSR waren im Besitz von Atomsprengköpfen. Während Sputnik 1 bereits 83,6 kg in die Umlaufbahn befördern konnte so war Sputnik 2, mit welcher der Hund Laika in den Weltraum befördert wurde, in der Lage 508,3 kg zu transportieren. Sputnik 2 startete nur einen Monat später am 3. November 1957. Damit war dann offensichtlich, dass die UdSSR in der Lage waren Atomsprengköpfe bis zu den USA zu transportieren.

Der erste amerikanische Satellit wurde mit Explorer 1 erst am 1. Februar 1958 gestartet, also deutlich später. Die Nutzlast von lediglich 13,97 kg macht deutlich in wie weit die USA hinter den Fähigkeiten der UdSSR hinterherhinkten. Zusammen mit der atomaren Bedrohung, die aufgrund der Tragfähigkeit der Raketen eine nun besondere Bedeutung hatte, wird offensichtlich wie tief der Schock sitzen musste[14].

Als direkte Reaktion auf diesen Rückschlag gründeten die USA die Advanced Research Projects Agency (ARPA)[9] innerhalb des Verteidigungsministeriums[15]. Aufgabe dieses Projektes war es, die neuesten Technologien in der Verteidigung der USA einzubringen und vor allem zu vermeiden, dass die USA wieder so überrascht werden wie durch Sputnik 1. So gesehen haben wir alles Weitere den Sowjets zu verdanken.

ARPA wurde folglich die koordinierende technologische Denkfabrik die dem Department of Defense, also dem Verteidigungsministerium, unterstand wobei der Leiter durchaus nicht dem Militär angehören konnte. Diese Institution war mit üppigen finanziellen Mitteln ausgestattet. Sie finanzierte hunderte von Wissenschaftlern in diversen Projekten ohne selber aktiv welche zu beschäftigen. Ein besonderes Interesse bestand dann darin, die verteilten Forschungseinrichtungen miteinander kommunizieren zu lassen, insbesondere die Computer zu vernetzen. Zudem waren Computer teuer und sehr unterschiedlich. Durch die Vernetzung könnten andere Systeme mit anderen Programmen verwendet werden und so die Ressourcen effektiver genutzt werden.

1962 rief ARPA dann ein Computer-Forschungsprogramm unter Leitung von Joseph Carl Robnett Licklider ins Leben. Dieser hatte die Vision, dass alle Computer vernetzt sein würden und jeder zu diesem Netz Zugang habe. Lawrence Roberts wurde mit dem Auftrag betraut ein solches Netzwerk aufzubauen.

Leonard Kleinrock, den Roberts noch von der Universität kannte, entwickelte die Idee, die Informationen in Pakete zu zerlegen und einzeln zu verschicken. Auf der Empfängerseite sollten sie dann wieder zusammengebaut werden. Diese Methode wäre deutlich flexibler und sicherer als eine dedizierte Leitung, da die einzelnen Pakete so unterschiedliche Routen nehmen können und dennoch das Ziel erreichen[16]. Zudem bestand damit keine Gefahr, dass ein Leitungsausfall die Kommunikation unmöglich macht. 1965 wurden dann die ersten beiden Computer - einer in Berkeley, einer am MIT - via Telefonleitung vernetzt. Das war das erste Wide-Area-Network (WAN) der Welt.

Zwei Jahre später wurde ein Plan für ein Computernetzwerk veröffentlicht, genannt Arpanet. Mit Hilfe eines Interface-Message-Processors (IMP, erstellt von Honeywell) wurden die ersten Netze aufgebaut. Die IMPs stellten die Vernetzung dar, die eigentlichen zu vernetzenden Computer kommunizierten mit den IMPs die dann die Daten über das Netzwerk sendeten bzw. empfingen. Dadurch musste lediglich die Kommunikation zwischen diesen beiden Systemen für jeden neuen Computertyp angepasst werden, der Netzwerkbereich war unabhängig davon und konnte zentral verwaltet werden[17].

Ein wichtiger Aspekt dabei war, dass es eine offene Architektur sein sollte. Lickliders ursprüngliche Idee:

1972 wurde versucht das Arpanet an AT&T zu übertragen, der Konzern hatte allerdings kein Interesse daran. Sie waren im Telefongeschäft tätig und nicht in der digitalen Nachrichtenübermittlung. Daher waren so Aspekte wie ein auf einzelne Pakete zerstückelte Übermittlung von Daten mehr als weltfremd. Das ist übrigens auch einer der Gründe warum Paul Baran und später in England Donald Davies mit ihren paketbasierten Netzwerkkonzepten scheiterten.

Stattdessen übernahm das DCA, die Defence Communication Agency, die Kontrolle über das Internet. Das war aber eine militärische Behörde denen das offene Konzept des Arpanets zuwider war. Als Folge wurden stärkere Reglementierungen auferlegt und man musste sich mit Namen und Passwort am Netz anmelden. Das war dann ein starker Rückschritt hinsichtlich der Expansion des Netzes.

Auf der anderen Seite hatte das aber auch einen mehr als positiv zu bezeichnenden Effekt: Bis zu diesem Zeitpunkt erfolgte die Kommunikation im Arpanet über NCP, dem Network Control Program. Dieses war aber nicht geeignet unterschiedliche Netze zu verbinden. Daher wurde ein neues Protokoll benötigt: TCP.

Nun hatten die Wissenschaftler aber ihr funktionierendes Arpanet und waren glücklich damit. Ein neues Protokoll, dass obendrein inkompatibel zu NCP ist, zu implementieren war mit enormen Aufwand verbunden. Demzufolge war die Bereitschaft zu migrieren sehr niedrig.

Hier kam aber zu Gute, dass eine militärische Behörde die Aufsicht übernommen hatte: Sie hat einfach angeordnet, dass binnen zwei Jahren alle Systeme auf TCP umzustellen seien. Der Stichpunkt war dann der 1. Januar 1983. Ab diesem Zeitpunkt wurden alle anderen Systeme vom Netz getrennt. Effektiv hat sich gezeigt, dass der Termin noch ein paar mal für diverse Systeme die die Umstellung noch nicht abgeschlossen hatten verlängert wurde. Aber ab dem Sommer waren nur noch TCP-Systeme am Arpanet beteiligt.

Die Enge Verknüpfung des Militärs mit dem Arpanet wurde erst aufgehoben als das MILNET abgespalten wurde. In diesem Netz waren dann nur noch militärische Systeme zu finden. Jetzt wurde aber auch schon das Jahr 1983 geschrieben.

Zu diesem Zeitpunkt wurde auch IP abgespalten: TCP war ein recht aufwändiges Protokoll. Für Router auf dem Weg zum Ziel war es aber ein großer Aufwand TCP zu implementieren. Genau genommen war die Funktionalität von TCP hier nicht notwendig: Das war nur für das Ziel- und Quellsystem, also den Endpunkten, von Bedeutung. Daher wurde IP für das Routing abgespalten und fortan wurde von TCP/IP gesprochen wenn das Internet gemeint wurde.

Da der militärische Teil abgespalten war konnte der nicht-militärische Rest der Öffentlichkeit zugänglich gemacht werden. Das Arpanet diente als Backbone und diverse andere existierende Netzwerke wurden nach und nach daran angeschlossen. Als Folge entstand aus dem Arpanet das Internet welches ein Zusammenschluss vieler Netzwerke war.

Dadurch, dass nicht mehr Regierungsstellen für das neu entstandene Internet zuständig waren sondern kommerzielle Provider für den Netzbetrieb sorgten entfielen auch die Einschränkungen auf reine Forschung. Nun war es auch möglich das Internet kommerziell zu nutzen.

Zusammen mit der Entstehung des World-Wide-Webs Anfang der 90er Jahre entstand ein System, dass auch nicht-Wissenschaftler anlockte wodurch eine Vermarktung wirklich sinnvoll gestaltet werden konnte. Als Folge nahm die Zahl der Teilnehmer am Internet drastisch zu, auch außerhalb von Universitäten und Forschungseinrichtungen.

Für die Entstehung von Linux hat auch dieser Abschnitt Bedeutung. Denn nach und nach wurde das Internet aufgebaut, Anfangs hauptsächlich zwischen Universitäten. Wurden die klassischen Unix-Versionen gewöhnlich auf teuren Magnetbändern verkauft, so konnte Linux Anfang der 90er Jahre das Internet als Medium nutzen. Torvalds hätte wohl kaum die Ressourcen gehabt, um Linux via Magnetbändern oder Floppys zu vertreiben. Insbesondere die schnelle Entwicklung spielte hier eine Rolle, die Versionen kamen Anfangs in sehr schneller Folge.

So erschienen Ende 1993 innerhalb eines Monats ganze zwölf Versionen des Kernels - das war die Zeit, als Linus die Versionsnummern ausgingen. Die Kernel hießen dann zum Beispiel 0.99pl13 (pl: Patchlevel. Das war übrigens der erste Kernel, den ich verwendet hatte). Der Grund dafür war, dass Torvalds recht optimistisch war, die Version 1.0 herauszubringen. Daher gab es einen Sprung in den Versionsnummern von 0.12 auf 0.95.

Die Voraussetzung für die Versionsnummer 1.0 war allerdings ein einwandfrei funktionierendes TCP/IP im Kernel. Daher gab es auch in dieser Zeit so viele pl-Versionen, die Implementierung war doch nicht so einfach wie ursprünglich gedacht. Erst am 13. März 1994 erschien dann Version 1.0. Beachtenswert ist, dass Linux zwar im Internet groß geworden ist aber sehr lange gar nicht in der Lage war, das globale Netzwerk zu verwenden[18].

Stallman und GNU

Um die Motive, die zu der Freien Software (GNU) führten, zu verstehen, muss die Lebensgeschichte von Richard Mathew Stallman betrachtet werden. Ich beschränke mich hier aber auf den Teil, der an der Universität beginnt:

1970 fing Stallman ein Studium an der Harvard-Universität an. Er wählte die Fächer Mathematik und Physik. Zu den Computerwissenschaften sagte er, dass er sich das Programmieren beibrachte, indem er es einfach tat. Und daher wollte er etwas studieren, bei dem mehr gelernt wird. Da aber sowohl die Physik als auch die Mathematik eher für ihn unproduktiv waren, widmete er sich nebenbei der Programmierung. 1974 erhielt er den BA (den Bachelor gibt es mittlerweile auch in Deutschland) für Physik.

Die wichtigste Phase begann aber 1971, als er das AI-Lab des MIT besuchte. Die Erforschung der künstlichen Intelligenz (AI: Artificial Intelligence) erforderte schon damals die beste Hardware und die besten Programmierer. Es war das Mekka der Computerwissenschaften zu dieser Zeit; hier programmierten sie, bis sie vor Müdigkeit umfielen, sie schliefen häufig im Labor und arbeiteten weiter wenn sie wieder aufwachten. Stallman machte bei dem Besuch auf sich aufmerksam und bekam einen Sommerjob in diesem Hackerparadies.

Das Betriebssystem, das das AI-Lab auf den PDP-6 und später PDP-10 verwendete, war das in Assembler selbst entwickelte ITS (Incompatible Time-Sharing System, der Name entstand in Anspielung an das kommerzielle Compatible TimeSharing System CTSS), was allerdings nicht, wie es der Name vermuten lässt, besonders kompatibel zu anderen Time-Sharing Systemen war. Das compatible bezog sich darauf, dass unter diesem Betriebssystem die damaligen Fortran-Batchjobs, also der Abarbeitung der berühmten Lochkarten, problemlos laufen konnten wie unter dem originären IBM-Betriebssystem Fortran Monitor System (FMS) der legendären 7094[19]. Für den Anwender war es nicht zu unterscheiden ob CTSS lief, ihm kam es dann so vor als ob das Programm wie in einem ganz normaler Batchjob arbeitete.

Die Programmed Data Processor (PDP) von DEC wurde extra nicht als Computer bezeichnet, der Namensteil fehlt. Der Grund ist relativ einfach: Bei einem Computer wurde damals an Geräte mit den Ausmaßen einer IBM 7094 gedacht. Im Vergleich dazu waren die PDPs extrem klein, es wurde auch die Bezeichnung Minicomputer verwendet[20]. Heutzutage versteht man unter dem Begriff etwas was noch viel kleiner ist.

Hier im AI-Lab existierte die Freie Software obwohl es den Begriff noch gar nicht gab: Wenn einer ein Programm haben wollte, so bekam er es überlassen. Wenn jemand ein interessantes Programm schrieb, dann konnte einfach nach dem Source-Code gefragt werden und er wurde bereitwillig herausgegeben. Der Source-Code durfte studiert und modifiziert werden, es war auch erlaubt, daraus ein neues Programm zu schaffen. Wie bereits gesagt: Es war ein Hackerparadies.

In dieser Zeit modifizierte Stallman den Editor TECO, dem (paper) Tape Editor and Corrector, später Text Editor and Corrector. Dieser Editor wurde mit der Zeit extrem mächtig, aber auch kompliziert. Stallman entwickelte mit ihm den Editing Macros, kurz Emacs.

Grausam wurde es dann Anfang der 80er Jahre: Das MIT gab die Entwicklung von ITS auf der PDP-10 auf und es wurde das nicht-freie Time-Sharing System von Digital Equipment Corporation (DEC) verwendet. Damit ging nicht nur das ITS verloren, sondern auch alle für dieses System geschriebene Software. Diese war nicht portierbar. Gleichzeitig wurden die meisten Programmierer von der Firma Symbolics abgeworben. Es gab damit kaum noch Hacker im AI-Lab und das alte System konnte nicht mehr am Laufen gehalten werden.

Obendrein entstanden nun auch Software-Firmen, die nur noch fertige Software verkauften: Man musste für Software bezahlen, sie war nicht im Source-Code verfügbar und modifizieren war schon gar nicht möglich. Stallman sah für sich nur drei Möglichkeiten:

I was faced with a choice. One: join the proprietary software world, sign the nondisclosure agreements and promise not to help my fellow hackers. Two: leave the computer field altogether. Or three, look for a way that a programmer could do something for the good. I asked myself, was there a program or programs I could write, so as to make a community possible again?

Hier entstand die Idee: GNU is not Unix[21], ein GNU-Betriebsystem - ein freies System, mit dem man den alten Zustand von kooperierenden Hackern erreichen konnte. Das rekursive Akronym GNU bezieht sich dabei darauf, dass es ein Unix-ähnliches Betriebsystem sein sollte, aber frei von lizenziertem Code.

Die Überlegungen, die zur GPL (General Public License) führten, waren:

  1. Run the program, for any purpose.
  2. Modify the program to suit their needs. (To make this freedom effective in practice, they must have access to the source code, since making changes in a program without having the source code is exceedingly difficult.) They must have the freedom to redistribute copies.
  3. Redistribute copies, either gratis or free.
  4. Distribute modified versions of the program, so that the community can benefit from your improvements.

Das war die Idee, die hinter Freier Software steht. Wobei frei im Sinne von Freiheit und nicht im Sinne von kostenlos gemeint ist[22]! Dass Software gratis sein sollte, steht hier nirgends. Es steht auch nicht in der GPL. Es steht in der GPL jedoch auch nicht, dass die Software Geld kosten muss. Da aber jeder das Recht hat, die Software zu seinen Konditionen weiterzuverbreiten und mit dem Aufkommen des Internets alles Online gestellt werden konnte, führte dies praktisch dazu, dass die Software letztendlich kostenlos wurde.

Um ein Betriebssystem zu entwickeln werden aber erst die Werkzeuge dazu benötigt. Daher wurde als erstes der Emacs unter Unix neu geschrieben, dann entstand der Compiler GCC und der Debugger GDB. Diese wurden alle von Stallman programmiert, im Laufe der Zeit fand er aber auch viele Mitstreiter. Deren Ziele waren meist nicht so ideell, aber es half, das GNU-System zu entwickeln und zu verbessern.

Mit der Zeit gab es alle Tools, die ein Betriebssystem braucht: emacs, gcc, gdb, bash, glibc, etc. Aber was noch fehlte, war ein Kernel. Alles andere existierte nun schon. Im Jahr 1990 begann Stallman mit seinen Gefährten die Arbeit an HURD, ein auf der MACH-Architektur basierender Mikrokernel. Diese galten damals als die modernste Architektur für einen Kernel, siehe auch den Streit zwischen Linus Torvalds und Andrew Tanenbaum zum Thema Linux is obsolete[23].

Der Name stellt ein gegenseitig rekursives Akronym dar:

Hurd
Hird of Unix-Replacing Daemons.
Hird
Hurd of Interfaces Representing Depth.

Von diesem Kernel heißt es seit dieser Zeit: Er erscheint Anfang nächsten Jahres. Allerdings weder 1991 noch 2009. Aber 2010 wäre der nächste mögliche Termin. Mit anderen Worten: Der Kernel kommt in der Entwicklung nicht wirklich voran[24].

Den richtigen Durchbruch brachte dann aber Linux: Linux war ein Kernel ohne Betriebssystem, GNU ein Betriebssystem ohne Kernel. Diese Kombination brachte dann den Erfolg von Linux weswegen Stallman auf den Namen GNU/Linux pocht wenn von einem Linux-System, also einer Linux-Distribution, gesprochen wird. Linux für sich genommen ist eigentlich nur der Kernel.

Hier treffen sich Anfang der 90er Jahre die Threads:

Die Anfänge von Linux

Die Situation Anfang 1991 war:

Das einzige freie Betriebsystem für 32-Bit-PCs, das heißt frei von AT&T-Code und somit frei von einer AT&T-Lizenz, war Minix[25]. Linus Torvalds kaufte sich zu dieser Zeit einen 386er und wollte das System kennen lernen. Dass DOS nicht befriedigend war kann man sich leicht vorstellen, insbesondere war es nicht in der Lage den erweiterten Modus, den Protected Mode, zu nutzen. Minix hingegen war aber ein Lehrsystem von Andrew Tanenbaum und eigentlich nicht für den produktiven Einsatz gedacht. Es musste zudem gekauft werden und es hatte zahlreiche Mängel.

Diese Schwächen sorgten für Frust. Es gab zahlreiche Patches, die man sich aus dem Internet herunterladen und einspielen konnte - hauptsächlich von Bruce Evans aus Australien. Tanenbaum weigerte sich, diese Verbesserungen in Minix einzubauen. Sein Interesse war es, ein Lehrsystem zu haben. Da war einfacher, sauberer Code wichtiger als diverse Funktionalitäten. Ein besonderes Manko war die schlechte Terminal-Emulation. Diese brauchte Linus aber, um sich am Großrechner in der Universität einwählen zu können.

Also reifte in ihm die Idee, eine eigene Terminal-Emulation zu schreiben, die direkt auf der Hardwareebene arbeitet - ohne Minix. Eine Motivation dazu war einfach, die Leistungsfähigkeit des Computers kennen zu lernen. Die vermutlich größte Herausforderung hierbei war wohl, von der Floppy zu booten und dann in den Protected Mode des Prozessors zu wechseln. Standardmäßig startet ein Prozessor in den 16-Bit Real Mode. Hinzu kommt dann noch die Frage, wie der Bildschirm angesteuert und die Tastatur abgefragt werden können. Dann musste noch die lesende und schreibende Kommunikation mit dem Modem programmiert werden.

Es sollten zwei unabhängige Threads zum Einsatz kommen: Einer, der nur vom Modem liest und alles auf den Bildschirm ausgibt, sowie ein Zweiter, der von der Tastatur liest und an das Modem sendet. Voilà: zwei Tasks, die einfachste Form des Multitaskings. Die erste Version bestand aus zwei parallel arbeitenden Tasks: der eine gab nur A's auf dem Bildschirm aus, der andere nur B's. Linus' ganzer Stolz konnte aber keinen anderen wirklich begeistern. Aber wenn man diesen Hintergrund nicht kennt, ist das wohl klar.

Das erstellte Terminalprogramm funktionierte und wurde permanent verbessert. Mit der Modem-Kommunikation kam auch rasch der Wunsch auf, Dateien hoch- und herunterzuladen. Also wurden ein Festplattentreiber und ein Dateisystem entwickelt. Das Dateisystem war das von Minix, damit er mit seinem Programm und aus Minix darauf zugreifen konnte. So langsam reifte die Idee, dass daraus auch ein ganzes Betriebssystem entwickelt werden könnte. Leider konnte Linus nirgendwo den POSIX-Standard auftreiben. Daher nahm er die Handbücher von Sun Microsystems - es gab einen Sun-Server an der Universität. In diesen waren die wichtigsten Systemaufrufe dokumentiert.

Eines der ersten Anwendungsprogramme, die Linus portierte, war die Bash ( Bourne Again Shell[26] ), ein GNU-Variante der klassischen Bourne Shell. Anstelle eines Init-Prozesses startete der Kernel direkt die Bash. Als die Shell endlich lief, waren die restlichen Basiskommandos recht schnell implementiert. Das führte dann zu dem legendären Posting von Linus:


From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki

Hello everybody out there using minix - 
I'm doing a (free) operating system (just a hobby, won't be big and 
professional like gnu) for 386(486) AT clones. This has been brewing 
since april, and is starting to get ready. I'd like any feedback on 
things people like/dislike in minix, as my OS resembles it somewhat 
(same physical layout of the file-system (due to practical reasons) 
among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want. Any suggestions
are welcome, but I won't promise I'll implement them :-)

  Linus (torvalds@kruuna.helsinki.fi)

PS. Yes - it's free of any minix code, and it has a multi-threaded fs. 
It is NOT protable (uses 386 task switching etc), and it probably never 
will support anything other than AT-harddisks, as that's all I have :-(.

Kurze Zeit später, am 17. September 1991, wurde Linux-0.01 veröffentlicht - auf einem FTP-Server der Technischen Universität Helsinki mit Hilfe von Ari Lemke, der dort als Assistent arbeitete. Ari war es auch, der den Namen Linux vorschlug. Linus wollte das Betriebssystem eigentlich Freax nennen.

Der Rest lief dann, wie es eigentlich zu erwarten war: Es gab viele, unter anderem von Minix frustrierte Anwender, die gerne auf den Linux-Zug aufsprangen. Denn Linux hatte recht früh die Funktionen und Eigenschaften, die bei Minix fehlten.

Ein nettes Zitat über diese Zeit stammt von Linus' Schwester, Sara Torvalds:

Für mich bedeutete es hauptsächlich, dass das Telefon ständig belegt war und uns niemand anrufen konnte... Irgendwann begannen Postkarten aus allen möglichen Ecken der Welt bei uns einzutreffen. Damals muss mir klar geworden sein, dass es in der realen Welt Menschen gab, die das, was er da geschaffen hatte, tatsächlich benutzten.

Die weitere Geschichte steht im wesentlichen in jedem Buch über Linux und dürfte den meisten bekannt sein. Das Terminal-Emulationsprogramm war gewissermaßen die Space Travel-Version von Linus.

Zusammenfassung

Bei der Entstehung von Linux sind viele Dinge zusammengetroffen:

Das gleichzeitige Zusammentreffen dieser Ereignisse führte zu der Grundlage, auf der Linux entstehen konnte. Ein positiver Faktor, der hier noch fehlt: Die Winter in Finnland sind lang und dunkel. Man hat viel Zeit zum Programmieren, ohne großartig abgelenkt zu werden.

Zudem war es für viele interessant, an der Entwicklung eines Betriebssystems teilzunehmen. Hierbei lernt man mehr, als wenn man gleich ein fertiges komplexes System erhält. Es ist zudem möglich, an der Entwicklung direkt Teil zu haben. Zusammen mit einer großen Internetgemeinschaft Gleichgesinnter ist auch das ein Ansporn. Stellt Euch einmal vor, Ihr wolltet ein Betriebssystem in Erding entwickeln und es gäbe kein Internet. Da würde wohl auf kurz oder lang jedes noch so ehrgeizige Projekt einschlafen!

Dirk Geschke, dirk@lug-erding.de


[1] EDVAC: Electronic Discrete Variable Automatic Computer

[2] Mit dem Begriff Hacker ist ein von Computern begeisterter Anwender gemeint, siehe zum Beispiel die Definition in The New Hacker's Dictionary.

[3] Es gab auch andere Systeme, aber das ist hier in dieser Linie das wichtigste, war es doch der Vorgänger von Multics.

[4] Die Sourcen sind hier zu finden Multics Sourcen.

[5] Siehe zum Beispiel hier: Space Travel.

[6] Es war kennzeichnend für die damalige Zeit, dass Software nur speziell für einen Computertyp erstellt wurde, der Gedanke an Portierbarkeit existierte hier noch nicht.

[7] Der Editor war eine Erweiterung von ex mit dem der ganze Text bei der Bearbeitung gesehen wurde. Daher ergab sich der Name als die Kurzform von visual mode.

[8] Die Aussage ist nur teilweise korrekt, Xenix entstand aus einer früheren Unix-Version als die anderen Unix-Varianten. Mittlerweile hatten sich aber diverse Schnittstellen im Original-Unix geändert. Dadurch fiel Xenix dann im Vergleich zu den anderen Derivaten hinsichtlich Kompatibilität aus dem Rahmen.

[9]

Für Details wann diese Organisation ARPA und wann DARPA hieß siehe hier: ARPA-DARPA.

[10] Wer sich für die Details interessiert kann hier mehr zur Entstehung von OpenBSD erfahren: coremail. Theo de Raadt war Entwickler von NetBSD und wurde aus dem Core-Team ausgeschlossen. Die Gründe dürften in der als nicht immer einfachen Natur der Entwickler zu suchen sein.

[11] Wer sich nun wundert: 1991 entstand die erste Version von Linux, die Copyright-Klage war aber erst 1993. Warum Linus hier nicht bereits BSD für den PC verwendete hat eine einfache Erklärung: Linus wusste zu diesem Zeitpunkt noch nichts von einer BSD-Version für den 386er.

[12] Aufgrund einer internationalen Abmachung ging das International Geophysical Year vom 1. Juli 1957 bis zum 31. Dezember 1958.

[13] Das besondere war lediglich die Existenz von Sputnik 1 im Weltall, der Satellit selber hatte eigentlich keine nennenswerte Funktion außer dem Senden eines periodischen Signals.

[14] Es sollte aber darauf hingewiesen werden, dass die UDSSR eine klassische Interkontinentalrakete erweiterten während die USA eine neue Trägerrakete entwickelt hatten.

[15] Ideen für ARPA gab es schon viel früher wie es zum Beispiel in iX 1/2008 erläutert wird. Die Finanzierung für die Bildung dieser Organisation wurde aber erst mit dem Sputnik-Schock möglich. So gesehen war dieses Ereignis schon die Basis für die Entstehung des Internets,

[16] Diese Idee hatte zuerst Paul Baran bei RAND Corporation (Research and Development) und einige Jahre später unabhängig davon Donald Watts Davies. RAND war die Denkfabrik der US-Armee und die Arbeiten von Paul Baran dienten dazu ein Netzwerk zu entwickeln, dass auch einen Atomkrieg überstehen konnte. Daher wird oft die falsche Aussage verbreitet, dass das Internet entwickelt wurde um bei einem Krieg stabil zu funktionieren. Die Ideen von Paul Baran wurden aber zu seiner Zeit nicht umgesetzt, die Entwicklung von Leonard Kleinrock erfolgte ohne Kenntnis dieser Vorarbeiten. Nachdem bekannt wurde, dass Paul Baran auf diesem Gebiet schon geforscht hatte wurde er beratend bei der Entwicklung des Arpanets hinzugezogen.

[17] Insbesondere blieben die Administratoren Herr ihrer eigenen Systeme, ein Aspekt der nicht vernachlässigt werden sollte. Dies traf sowohl auf die Host-Systeme als auch die IMPs zu: Die jeweiligen Administratoren konnten nahezu unabhängig von einander agieren.

[18] Auch das stimmt nicht ganz, die Netzwerkunterstützung war sehr früh vorhanden. Aber sie war nicht in allen Bereichen stabil.

[19] Hier sind noch weitere Informationen zu finden: Das IBM 7094 Data Processing System.

[20] Siehe Artikel bei Wikipedia: Programmed Data Processor.

[21] Stallman hatte früh die Idee gehabt ein rekursives Akronym zu verwenden. Er dachte an etwas wie: something is not unix. Dann fing er an das something sukzessive durch die Buchstaben des Alphabets zu ersetzen. Er befand, dass G der erste klangvolle Buchstabe war. So ergab sich dann der Begriff GNU.

[22] Die von Stallman gegründete Free Software Foundation (FSF) sagt dazu: To understand the concept, you should think of free as in free speech, not as in free beer.

[23] Linux is obsolete: The Tanenbaum-Torvalds Debate.

[24] Es ist nicht ganz korrekt, es gibt mittlerweile einen auf einigen Systemen laufenden Kernel. Aber von stabil und ausgereift kann hier nicht gesprochen werden, da fehlt noch so einiges. Auch ist die Hardwareunterstützung recht bescheiden.

[25] Es gab natürlich auch DOS, aber das arbeitete bekanntlich lediglich mit 16 Bit und nutzte die meisten Möglichkeiten eines 386er nicht, insbesondere der Protected Mode mit den Task-Wechsel Möglichkeiten des Prozessors.

[26] Die Standard-Unix-Shell war von Stephen Bourne entwickelt worden. Der Name bash ist ein Wortspiel mit dem angedeutet werden soll, dass diese Shell sowohl zur Original-Shell kompatibel ist als auch dass sie deutliche Verbesserungen und neuere Funktionen enthält.