Computer-Geschichte: Die Anfänge von Linux und was davor war

25.03.23

Auf welchem Betriebssystem wurde eigentlich Linux entwickelt? Linux kann es ja nicht gewesen sein, denn das gab es ja noch nicht. Wie hatte sich eigentlich die Software  bei den Lochkarten angefangen stufenweise entwickelt? Dieser Frage bin ich nachgegangen und habe bei ChatGPT nachgefragt.

Frage an ChatGPT:
Wie viele Programmierstunden wurden für die erste lauffähige Linux-Version benötigt?

Die erste lauffähige Version von Linux wurde im Jahr 1991 von Linus Torvalds erstellt. Torvalds hat die ursprüngliche Version von Linux in seiner Freizeit entwickelt und hatte anfangs keine Unterstützung von einem Team oder einer Organisation.

Es ist schwierig, eine genaue Schätzung der Programmierstunden abzugeben, die für die Entwicklung der ersten lauffähigen Linux-Version benötigt wurden, da Torvalds die Entwicklung in seiner Freizeit durchgeführt hat und es keine genauen Aufzeichnungen darüber gibt, wie viele Stunden er dafür aufgewendet hat.

Allerdings hat Torvalds in Interviews angegeben, dass er in den ersten Monaten der Entwicklung täglich mehrere Stunden damit verbracht hat, Code für Linux zu schreiben und zu debuggen. Auch wenn es schwierig ist, eine genaue Zahl zu nennen, kann man sagen, dass die Entwicklung der ersten lauffähigen Linux-Version wahrscheinlich mehrere hundert Stunden an Programmierarbeit erfordert hat.

Es ist auch wichtig zu beachten, dass die Entwicklung von Linux in den folgenden Jahren von einer wachsenden Gemeinschaft von Entwicklern und Beiträgern unterstützt wurde, was zu einer kontinuierlichen Verbesserung und Erweiterung des Betriebssystems führte.

Verfolgt man den Weg der Software-Entwicklung von den Anfängen bis Linux, dann wurden einige Grundlagen von Linux mit Lochkarten verwirklicht.

Frage an ChatGPT:
Mit welchen Tools oder Programmiersprachen wurde das erste Linux geschrieben?

Das erste Linux wurde größtenteils in der Programmiersprache C geschrieben, wobei einige Teile in der Assemblersprache geschrieben wurden. Die Entwicklung wurde auf einem PC mit einem Intel 386-Prozessor durchgeführt.

Linus Torvalds schrieb den ursprünglichen Linux-Kernel in C und nutzte dabei auch einige Bibliotheken, die in C geschrieben wurden. Die Verwendung von C ermöglichte es Torvalds, den Kernel plattformunabhängig zu halten und auf verschiedenen Hardwarearchitekturen auszuführen.

Darüber hinaus nutzte Torvalds einige Tools, um die Entwicklung von Linux zu erleichtern, darunter das GNU Compiler Collection (GCC), das er nutzte, um den C-Code zu kompilieren. Er verwendete auch den GNU Debugger (GDB), um Bugs und Fehler in dem Kernel zu finden und zu beheben.

Insgesamt basierte die Entwicklung von Linux auf einer Kombination aus C-Code, Assembler-Code und verschiedenen Open-Source-Tools, die die Entwicklung erleichterten.


Die Geschichte von Linux in 8 Minuten erzählt.

Frage an ChatGPT:
Welches Betriebssystem kam zum Einsatz? Linux kann es noch nicht gewesen sein.

Richtig, Linux konnte bei der Entwicklung des ursprünglichen Linux-Kernels im Jahr 1991 noch nicht als Betriebssystem eingesetzt werden. Stattdessen wurde für die Entwicklung des Linux-Kernels ein Betriebssystem namens Minix verwendet.

Minix ist ein kleines Unix-ähnliches Betriebssystem, das vom niederländischen Informatiker Andrew S. Tanenbaum entwickelt wurde. Es wurde entwickelt, um als Lehrmittel für Betriebssysteme zu dienen, und war daher ideal für Torvalds, um Linux zu entwickeln und zu testen. Torvalds nutzte dabei einen PC mit einem Intel 386-Prozessor, auf dem Minix lief.

Torvalds begann damit, den Minix-Kernel zu studieren und zu ändern, um seine eigene Vision eines Betriebssystems zu schaffen. Schritt für Schritt entwickelte er die ersten Versionen des Linux-Kernels und integrierte dabei Code aus verschiedenen Quellen, darunter auch Code aus dem GNU-Projekt.

Nach und nach wurde der Linux-Kernel immer leistungsfähiger und konnte schließlich als eigenständiges Betriebssystem eingesetzt werden. Heute ist Linux eines der am weitesten verbreiteten Betriebssysteme und wird in vielen verschiedenen Bereichen eingesetzt, von Desktop-Systemen über Server bis hin zu Mobilgeräten und eingebetteten Systemen.

Frage an ChatGPT:
Mit welchem Betriebssystem wurde Minix entwickelt?

Das Betriebssystem MINIX wurde von Andrew S. Tanenbaum entwickelt und ursprünglich auf einem Intel 8088-Prozessor mit 512 KByte RAM und einer 1,44 MByte-Diskette unter Verwendung des Programmierwerkzeugs Pascal-S mit einem speziellen Cross-Compiler entwickelt. MINIX wurde in der Programmiersprache C geschrieben, die damals eine der bevorzugten Sprachen für die Systemprogrammierung war. MINIX wurde auch auf anderen Systemen wie dem Intel 80386, dem Motorola 68020 und dem Sun-3-Computer portiert. Heute wird MINIX weiterhin weiterentwickelt und läuft auf verschiedenen Plattformen, einschließlich Intel- und ARM-basierter Systeme.

Sun-3-Computer (Quelle: https://commons.wikimedia.org/wiki/File:Sun3_60_Disk_Tape.jpg )
Sun3-CPU-Board (Quelle: https://commons.wikimedia.org/wiki/File:Sun3_CPU.jpg )

Frage an ChatGPT:
Um Minix zu entwickeln war wiederum ein Betriebssystem notwendig. Welches war es?

Andrew S. Tanenbaum entwickelte MINIX auf einem Computer, der das Betriebssystem Unix als Grundlage hatte. Es handelte sich um eine sogenannte “Host-Maschine”, auf der das Entwicklungs-Toolset für MINIX ausgeführt wurde. Das Toolset umfasste unter anderem einen Pascal-Compiler, einen Assembler und einen Linker, die alle unter Unix liefen und für die Entwicklung von MINIX auf dem Zielprozessor (in diesem Fall dem Intel 8088) verwendet wurden. Daher kann man sagen, dass Unix das Betriebssystem war, das für die Entwicklung von MINIX auf der Host-Maschine verwendet wurde.

Frage an ChatGPT:
Wie wurde Unix entwickelt?

Unix wurde in den 1960er und 1970er Jahren von einem Team von Entwicklern unter der Leitung von Dennis Ritchie und Ken Thompson bei den Bell Laboratories von AT&T entwickelt. Ursprünglich wurde Unix als ein kleines Betriebssystem für einen DEC PDP-7-Computer geschrieben, aber es wurde schnell auf größere Computer portiert, einschließlich der PDP-11 und der VAX.

Unix wurde in der Programmiersprache C entwickelt, die von den gleichen Entwicklern bei Bell Labs erfunden wurde. C bot eine höhere Abstraktionsebene als Assembler, was die Entwicklung von Unix beschleunigte und die Portierbarkeit auf verschiedene Computerarchitekturen ermöglichte.

Die Entwicklung von Unix wurde von Anfang an von der Unix-Philosophie geprägt, die besagt, dass Software modular, einfach, komponierbar und skalierbar sein sollte. Diese Philosophie führte zu vielen der Merkmale von Unix, einschließlich der Verwendung von Textdateien als universelles Interchange-Format, der Verwendung von Pipes und Filters zur Kombination von Kommandozeilenprogrammen und der Verwendung von kleinen, einfachen Tools, die zusammenarbeiten, um komplexe Aufgaben auszuführen.

Unix wurde auch als Open-Source-Software freigegeben, was es anderen Entwicklern ermöglichte, den Quellcode zu studieren und zu verbessern. Dies führte zur Entstehung von vielen Unix-Derivaten, darunter BSD, SunOS, Linux und macOS.

Frage an ChatGPT:
Um Unix zu entwickeln war wiederum ein Betriebssystem notwendig. Wie hieß es. Irgendwo müssen ja die Anfänge von allem liegen?

Die Entwicklung von Unix begann tatsächlich auf einem Computer namens GE-635, der von General Electric hergestellt wurde und das Betriebssystem GECOS (General Electric Comprehensive Operating System) verwendete. Das Team von Entwicklern bei den Bell Labs erhielt jedoch später Zugang zu einem PDP-7-Minicomputer, auf dem sie mit der Entwicklung von Unix fortfahren konnten.

PDP-7 Minicomputer (Quelle: https://commons.wikimedia.org/wiki/File:Pdp-7-oslo-2004.jpeg )
PDP-7 (Quelle: https://commons.wikimedia.org/wiki/File:DEC_PDP-7.jpg)

Die PDP-7 lief ursprünglich unter einem Betriebssystem namens “OS/7” von Digital Equipment Corporation (DEC), aber es wurde schnell durch ein von den Bell Labs-Entwicklern modifiziertes Betriebssystem ersetzt, das speziell für die Entwicklung von Unix optimiert wurde. Das von den Bell Labs-Entwicklern modifizierte Betriebssystem hatte den Namen “BESYS” (Basic Executive System) und wurde später durch ein weiteres Betriebssystem namens “UNIX” ersetzt, das auf der BESYS-Grundlage aufgebaut war.

Frage an ChatGPT:
Ist bekannt wie GECOS entwickelt wurde?

Ja, GECOS wurde von General Electric (GE) in den 1960er Jahren entwickelt. Es handelte sich um ein umfangreiches Betriebssystem für Mainframe-Computer und wurde hauptsächlich für Geschäftsanwendungen eingesetzt. GE entwickelte GECOS, um das Betriebssystem Multics (Multiplexed Information and Computing Service) zu ersetzen, an dem GE zusammen mit Bell Labs und dem Massachusetts Institute of Technology (MIT) gearbeitet hatte.

GECOS war ein wichtiger Meilenstein in der Entwicklung von Betriebssystemen, da es viele fortschrittliche Funktionen wie Time-Sharing, virtuellen Speicher, Datenbank-Management und Netzwerkfähigkeit bot. Es war auch eines der ersten Betriebssysteme, das von mehreren Benutzern gleichzeitig genutzt werden konnte.

GECOS wurde in einer Assembly-Sprache namens GECOS Assembly Language entwickelt und wurde auf einer Vielzahl von Computern eingesetzt, darunter GE-600-Serien, Honeywell-6000-Serien und IBM System/360– und System/370-Computer. GECOS wurde schließlich von Honeywell übernommen und weiterentwickelt.

Ein System/360 zur Elektronischen Datenverarbeitung im VW-Werk Wolfsburg (1973) (Quelle: https://commons.wikimedia.org/wiki/File:Bundesarchiv_B_145_Bild-F038812-0014,_Wolfsburg,_VW_Autowerk.jpg)
Honeywell 66/60 (Quelle: https://commons.wikimedia.org/wiki/File:Honeywell_66_60.jpg )

Obwohl GECOS heute nicht mehr weit verbreitet ist, hat es dennoch einen wichtigen Beitrag zur Entwicklung von Betriebssystemen geleistet und viele wichtige Funktionen und Konzepte eingeführt, die in modernen Betriebssystemen wie Unix, Linux und Windows weiterhin genutzt werden.

Frage an ChatGPT:
Und wie wurde GECOS Assembly Language entwickelt? Mit Bleistift und Papier, da es offenbar an einem Betriebssystem fehlte?

GECOS Assembly Language wurde auf einer Reihe von Computern entwickelt, die von General Electric hergestellt wurden. Die Sprache wurde speziell für die Programmierung von Anwendungen und Systemsoftware auf diesen Computern entwickelt.

Die Entwicklung von Assembly-Sprachen erfolgt normalerweise durch das Schreiben von Code und die Erstellung von Assembler-Programmen, die den Maschinencode für die jeweilige CPU oder den Prozessor generieren. Es ist jedoch nicht ungewöhnlich, dass in der Entwicklung von Sprachen auch Bleistift und Papier verwendet werden, um Syntax und Struktur zu entwerfen oder den Code zu planen.

Obwohl es möglich ist, eine Assemblersprache auf einem Computer ohne Betriebssystem zu entwickeln, würde dies normalerweise durch die Verwendung eines einfachen Editors, wie z.B. eines Texteditors, geschehen. Die Entwicklung von Sprachen wie GECOS Assembly Language würde jedoch normalerweise auf Computern mit Betriebssystemen wie GECOS stattfinden, die die erforderlichen Tools und Ressourcen für die Softwareentwicklung bereitstellen.

Frage an ChatGPT:
Aber wie war es, als es GECOS noch nicht gab?

GECOS wurde in den späten 1960er Jahren entwickelt, als es bereits Betriebssysteme für Computer gab. Beispielsweise wurde das Betriebssystem IBM OS/360 für den IBM System/360-Mainframe-Computer 1964 veröffentlicht.

Vor der Entwicklung von Betriebssystemen wie OS/360 wurden Programme normalerweise auf einer Lochkartenmaschine geschrieben und dann als Stapel von Lochkarten an den Computer gesendet. Der Computer würde die Lochkarten in der Reihenfolge ausführen, in der sie empfangen wurden, und das Ergebnis an einen Drucker oder eine Lochkartenstanze senden.

Für die Entwicklung von Assembly-Sprachen in dieser Zeit wurden normalerweise Notizbücher und Bleistifte verwendet, um den Code zu planen und die Syntax zu definieren. Der Code wurde dann von Hand in Lochkarten oder Bänder eingegeben, bevor er auf dem Computer ausgeführt werden konnte.

Die Entwicklung von Betriebssystemen wie GECOS hat jedoch die Softwareentwicklung erheblich vereinfacht, indem sie eine Vielzahl von Tools und Ressourcen bereitstellt, die Entwickler nutzen können, um Anwendungen schneller und effizienter zu erstellen.

Frage an ChatGPT:
Auch wenn es weit hergeholt ist, steckt in einem Android Smartphone Programmierarbeit, die vor langer Zeit im Laufe eines evolutionären Prozesses mit Lochkarten bewerkstelligt wurden?

Es ist möglich, dass es in einem Android-Smartphone einige Programmierarbeit gibt, die auf einer früheren Technologie wie Lochkarten basiert, insbesondere wenn es um die Kompatibilität mit älteren Anwendungen geht.

Beispielsweise unterstützt Android einige ältere Programmiersprachen wie C und C++, die in den 1970er Jahren entwickelt wurden und auf Lochkarten- oder Band-basierten Systemen weit verbreitet waren. Diese Sprachen wurden später auf modernere Systeme portiert, aber einige der ursprünglichen Programmiermethoden, wie das Kompilieren von Code und das Erstellen von Binärdateien, die auf einer Maschine ausgeführt werden können, wurden beibehalten.

Darüber hinaus können einige der grundlegenden Prinzipien der Softwareentwicklung, die auf Lochkarten-basierten Systemen verwendet wurden, auch heute noch relevant sein. Zum Beispiel basiert das Konzept des Batch-Processing, bei dem eine Reihe von Jobs ohne Benutzereingriff ausgeführt werden, auf frühen Mainframe-Computern, die Lochkarten oder Bänder verwendeten.

Insgesamt haben sich jedoch die Werkzeuge und Methoden, die in der modernen Softwareentwicklung eingesetzt werden, erheblich weiterentwickelt und verbessert, so dass die Verwendung von Lochkarten-basierten Methoden heute sehr selten ist.

Frage an ChatGPT:
Mit welchen Werkzeugen, Betriebssystemen, Programmen und mit welcher Hardware hatte man C entwicklelt?

C wurde in den 1970er Jahren von Dennis Ritchie und Ken Thompson bei Bell Labs entwickelt. Sie verwendeten eine PDP-11-Minicomputer als Entwicklungsplattform, die von einem Betriebssystem namens UNIX ausgeführt wurde, das von Thompson zuvor entwickelt worden war.

PDP-11 (Quelle: https://commons.wikimedia.org/wiki/File:Pdp-11-40.jpg)

Die ursprüngliche Implementierung von C wurde in Assembler für die PDP-11 geschrieben. Sobald eine rudimentäre Version von C vorhanden war, wurde der Compiler selbst in C geschrieben. Dieses Verfahren wird als Bootstrapping bezeichnet und ist ein häufiges Verfahren in der Softwareentwicklung, bei dem ein kleiner Teil des Systems geschrieben wird, der dann verwendet wird, um das System weiter zu entwickeln.

Zu dieser Zeit standen nur begrenzte Werkzeuge für die Softwareentwicklung zur Verfügung. Das Team von Ritchie und Thompson verwendete grundlegende Texteditoren wie “ed” und “vi” sowie Compiler-Tools, um ihre Arbeit durchzuführen.

C wurde schließlich auf andere Systeme portiert, einschließlich der IBM-Systeme und später der PCs von Intel. Im Laufe der Zeit wurden weitere Tools und Entwicklungsumgebungen für C entwickelt, darunter leistungsfähige integrierte Entwicklungsumgebungen (IDEs) wie Eclipse und Visual Studio, die eine umfassende Unterstützung für C und andere Programmiersprachen bieten.

Frage an ChatGPT:
Sind Code-Schnipsel des ursprünglichen Linux immer noch in den aktuellen Linux-Versionen vorhanden?

Ja, es gibt immer noch Code-Schnipsel des ursprünglichen Linux-Kernels in den aktuellen Linux-Versionen. Während sich der Code im Laufe der Jahre stark weiterentwickelt und verändert hat, sind einige der ursprünglichen Codezeilen, die Linus Torvalds und andere Entwickler vor vielen Jahren geschrieben haben, noch immer vorhanden und in den heutigen Versionen von Linux zu finden.

Dies liegt daran, dass der Linux-Kernel eine sehr lange Entwicklungsgeschichte hat und in den letzten drei Jahrzehnten von vielen verschiedenen Entwicklern und Beiträgern ständig weiterentwickelt und erweitert wurde. Viele dieser Entwickler haben bestehenden Code verbessert, erweitert oder angepasst, anstatt ihn komplett neu zu schreiben.

Darüber hinaus wurde der Linux-Kernel im Laufe der Jahre so umfangreich, dass es oft schwierig ist, bestimmte Codezeilen oder Abschnitte zu identifizieren, die noch aus den Anfangstagen stammen. Viele der ursprünglichen Code-Schnipsel wurden im Laufe der Zeit durch neue Funktionen und Verbesserungen ersetzt oder verfeinert.

Insgesamt lässt sich sagen, dass obwohl es immer noch Code-Schnipsel des ursprünglichen Linux-Kernels gibt, der heutige Code in vielen Bereichen stark von den ursprünglichen Codezeilen abweicht und sich im Laufe der Jahre stark weiterentwickelt hat.

Jedes Android-Smartphone enthält noch Code-Schnipsel des ursprünglichen Linux

Frage an ChatGPT:
Gibt es in Android auch noch ursprüngliche Code-Schnipsel?

Ja, es gibt auch in Android noch ursprüngliche Code-Schnipsel, da Android auf dem Linux-Kernel basiert. Der Linux-Kernel ist ein wesentlicher Bestandteil von Android und bildet die Grundlage für viele der Kernfunktionen des Betriebssystems.

Als Open-Source-Betriebssystem basiert Android auf dem Linux-Kernel und verfügt über viele Funktionen, die direkt aus dem Linux-Kernel übernommen wurden. Android nutzt viele der gleichen Treiber und Kernel-Module wie Linux, einschließlich der Netzwerk-, Speicher- und Prozessmanagement-Subsysteme.

Darüber hinaus wurde Android im Laufe der Jahre von vielen verschiedenen Entwicklern und Beiträgern ständig weiterentwickelt und erweitert. Viele der ursprünglichen Codezeilen wurden im Laufe der Zeit durch neue Funktionen und Verbesserungen ersetzt oder verfeinert.

Es ist jedoch wichtig anzumerken, dass Android neben dem Linux-Kernel viele andere Komponenten enthält, die speziell für die Anforderungen von Mobilgeräten entwickelt wurden. Einige dieser Komponenten wurden von Google und anderen Entwicklern für Android speziell entwickelt und sind somit nicht Teil des ursprünglichen Linux-Kernels.