Zum Inhalt springen

Linux/Einführung

Aus Foxwiki

Linux/Einführung

Was ist UNIX? Entstehung von Unix Was ist Linux? Entstehung von Linux Linux-Einsatzbereiche Die Struktur von Linux Linux-Distributionen Freie Software und Lizenzierung Linux-Kernel
Unix GNU Parameter Beschreibung

Was ist UNIX?

Datei:Grafik23.png
  • UNIX ist ein Mehrbenutzerbetriebssystem
  • Die Entwicklung begann Anfang der 1970er Jahre
  • Bei Bell Laboratories
  • zur Unterstützung der Softwareentwicklung
  • Im allgemeinen Sprachgebrauch bezeichnet es
    • Datei:Grafik31.png
      Systeme, die ihren Ursprung im Unixsystem von AT&T haben
    • oder dessen Konzepte implementieren
  • UNIX ein eingetragenes Markenzeichen der Open Group
  • Nur durch die Open Group zertifizierte Systeme dürfen den Namen UNIX führen
  • Dennoch ordnet man Unix-artige Betriebssysteme wie Linux der Unix-Familie zu

Der Name Unix

Wortspiel Unics bzw. UNIX enthält ein zweifaches Wortspiel:

Zum einen die Vorsilbe Uni-als Gegenstück zu Multi-, zum anderen wird UNIX genauso gesprochen wie "Eunuchs" -typischer Programmiererhumor dieser Zeit. Kernighan nannte das System leicht spöttisch Unics, in Anspielung auf Multics, da es nur bis zu 2 Benutzer unterstützte: "Emasculated Multics is Unics." (Entmanntes Multics ist Unics).

Abkürzung Der Name sollte später zu Unix verkürzt werden.
Akronyme Der Name "Unics" wurde gerne auch als Uniplexed Information and Computing Service interpretiert, allerdings ist dies eine nachträgliche Interpretation – weder "Unics" noch "Unix" oder "UNIX" sind Akronyme.
Schreibweise UNIX entstand 1974 aus purer Begeisterung für Kapitälchen

"... we had a new typesetter and troff had just been invented and we were intoxicated by being able to produce small caps." (Dennis Ritchie)

Kommerzielle UNIX-Derivate

Datei:Grafik68.png

Es gibt/gab zahlreiche UNIX-Derivate (Dialekte), von verschiedenen Herstellern:

System Hersteller Ursprung
AIX IBM AT&T
DG-UX Data General
HP-UX Hewlett-Packard BSD
IRIX Silicon Graphics
Mac OS X Apple BSD
Solaris Sun BSD
Digital UNIX Digital BSD
SCO-UNIX SCO AT&T
Sinix Siemens AT&T

Da BSD und System V die Hauptentwicklungslinien aller UNIX-Systeme darstellen, enthalten alle UNIX-Dialekte viele Eigenschaften beider Systeme und lassen sich wie folgt einander zuordnen:


Datei:Grafik4.png

Unix-ähnliche Betriebssysteme

  • Unix-artiges oder unixoides Betriebssystem
  • Implementiert die Verhaltensweise von Unix
  • Die lange Geschichte von Unix hat ein komplexes System verschiedenartiger Betriebssysteme hervorgebracht, die in unterschiedlicher Weise mit dem Begriff „Unix“ assoziiert werden
  • Diesen Systemen gemeinsam ist der POSIX - Standard, der gewisse grundlegende Eigenschaften definiert.
    Ist das so wahr?

Kategorien

Datei:.png
Eric Steven Raymond

Es gibt grundsätzlich zwei verschiedene Kategorien Unix-artiger Betriebssysteme: * „Generische“ Unices, die vom Quellcode des ursprünglichen, von den Bell Laboratories entwickelten, Unix abstammen und

  • „funktionellen“ Unices, die unabhängig davon entwickelt wurden, aber dessen Funktionsweise nachahmen.

Der Hacker und Programmierer Eric Steven Raymond hat zusätzlich eine dritte Kategorie vorgeschlagen, sodass die Einteilung folgendermaßen aussieht:

Generisches Unix
  • auch als Unix-Derivate bezeichnet
  • historische Verbindung zur AT&T-Codebasis
  • In diese Kategorie fallen
    • die meisten proprietären Unix-Varianten (z.B. AIX, IRIX und HP-UX)
    • BSD-Systeme; enthalten heute keinen originalen Unix-Quellcode mehr (FreeBSD, NetBSD und OpenBSD)
Warenzeichen „UNIX“
  • von der Open Group zertifizierte Systeme
  • erfüllen die Single Unix Specification
  • dürfen das Warenzeichen UNIX® tragen
  • meist kommerzielle Systeme sind und originäre Unix-Derivate
  • manche (z.B. IBMs z/OS) haben das Warenzeichen durch eine POSIX-Kompatibilitätsschicht bekommen und sind ansonsten keine echten Unix-Systeme.
Funktionelles Unix
  • jedes Unix-ähnliche System
  • das sich in ähnlicher Weise wie Unix verhält
  • spezieller Linux und Minix
  • Die meisten freien UNIX-Implementierungen fallen in diese Kategorie, da eine Zertifizierung durch die Open Group sehr kostenintensiv ist.

Die Einordnung eines Systems vor allem in die erste und die letzte Kategorie ist nicht immer eindeutig möglich, da diese Systeme aufgrund ihrer freien Lizenzen und der bei Unix üblichen Trennung zwischen Kernel und Userland (s.u.) durchaus auch kombiniert werden können, wie etwa bei Gentoo/FreeBSD. Als Überbegriff wird auch Un*x gebraucht.

Merkmale von Unix-Systemen

Was ist nun das Besondere, das UNIX auszeichnet? UNIX hatte Eigenschaften, die heute zwar selbstverständlich geworden sind, aber damals neu waren.

Unix ist historisch eng mit der Programmiersprache C verknüpft – beide verhalfen sich gegenseitig zum Durchbruch, und so ist C auch heute noch die bevorzugte Sprache unter Unixsystemen.

Unix-Kernel

  • exklusiver Zugriff auf die Hardware (über enthaltene Gerätetreiber)
  • verwaltet Prozesse
  • Dateisysteme
  • Netzwerkprotokollstapel

Speicherschutz

  • Programmierfehler/Absturz eines einzelnen Programms beeinträchtigen nicht die Stabilität anderer Programme oder des Gesamtsystems

Virtueller Speicher

  • Der verfügbare Arbeitsspeicher ist unabhängig vom real vorhandenen
  • zuerst implementiert in der BSD-Linie

Multiuser

Datei:Grafik14.png

  • Mehrere Benutzer können parallel an einem System arbeiten
  • Anmeldung
    • lokal (oder seriell) über ein Terminal
    • grafisch über einen Login-Manager
    • via Netzwerkverbindung
  • Jeder Benutzer verfügt hierbei Heimatverzeichnis
    • für persönliche Daten und
    • Konfigurationsdateien
    • Benutzer können ihre Arbeitsumgebung weitgehend anpassen
  • Benutzer können sich Hardware, Daten und Programme teilen und den Zugriff schützen

Simple Prozesserstellung mit fork() und exec()

Datei:Grafik37.png
  • Die Erzeugung eines Prozesses ist unter Unix ein einfacher Vorgang
  • Hierzu werden die Systemaufrufe fork() und exec() benutzt
    • fork() erstellt eine Kopie des aktuellen Prozesses
    • exec() füllt diesen neuen Prozess mit neuem auszuführenden Inhalt
  • Mit dieser Technik ist es möglich, ohne Neustart einen neunen Kernel zu laden (kexec)

Elegante Programmierkonzepte
Was heißt das?

  • Die dem ästhetischen Empfinden vieler Programmierer entgegen kommen

Alles ist eine Datei

* UNIX-Grundprinzip
  • Datei als einheitliche Schnittstelle
    • Anwender
    • Programmierer
* Zugriff auf Systemressourcen
    • Daten
    • Verknüpfungen
    • Verzeichnisse (Dateien, die andere Dateien aufnehmen können)
    • Geräte
    • Sockets
    • Named Pipes
    • Prozesse (nicht bei allen UNIX-Systemen)

Datei:Grafik88.png
Hierarchisches Dateisystem

  • Das Dateisystem ist als einzelner hierarchischer Baum mit beliebigen Unterverzeichnissen organisiert
  • Das Wurzelverzeichnis (Rootverzeichnis) dieser Hierarchie ist das Verzeichnis „/“
  • Festplattenpartitionen, Wechseldatenträger und Netzwerklaufwerke werden in diesen Baum als Verzeichnisse ein gehangen

Die Shell

  • Kommandointerpreter
  • Prozess ohne Privilegien
  • Ein-/Ausgabeumleitung
  • Pipes zur Kommunikation zwischen Prozessen
    • Zahlreiche Standardkommandos ermöglichen eine unerreicht einfache Ein-/Ausgabeumleitung in diese Dateien, und über Pipes die Kommunikation zwischen Prozessen.

Unix-Werkzeugkasten

  • Datei:Grafik62.png
    Große Sammlung einfacher standardisierter Kommandos
  • Unix hat alles an Bord, was für die tägliche Arbeit benötigt wird
  • Diese können mit den Möglichkeiten der Shell geschickt kombiniert werden
  • So können auch komplexe Aufgaben mit Systemwerkzeugen erledigt werden.

Multitasking

  • Datei:Grafik40.png
    mehrere Programme können gleichzeitig laufen
  • auch Multithreading wird unterstützt

Hardwareunabhängigkeit

  • Die meisten Betriebssysteme sind auf einen bestimmten Prozessortyp zugeschnitten
    • Inklusive der Anwendungen
  • UNIX ist so aufgebaut, dass Anpassungen an Hardwareplattformen leicht zu realisieren sind
  • UNIX abstrahiert die Hardware soweit, dass es möglich ist, das System auf andere Plattformen zu portieren und dann UNIX-Programme dort zu starten

Entwicklungswerkzeuge und Bibliotheken

  • man muss nicht erst lange viel Software nachinstallieren, sondern findet das Wichtigste schon vor und kann davon ausgehen, dass auf jedem entsprechenden UNIX-System das gleiche vorhanden sein wird.
  • Ein legendäres Programm, das schnell zum Grundbestandteil eines UNIXes wurde, war z. B. die Shell sh, die Steve Bourne schrieb.
  • Der Linuxgemeinde ist sein Name in der allseits bekannten bash (Bourne Again Shell) überliefert.

Netzwerkfähigkeit

  • TCP/IP – Netzwerkunterstützung
  • schon sehr früh wurden die UNIX-Kernel mit einem TCP/IP-Stack ausgestattet und bildeten so sehr schnell das Rückgrat des damals noch jungen Internets.
  • zuerst in der BSD -Linie

Weitere Merkmale eines typischen Unix-Systems

Hohe Stabilität Am 30.10.2000 wurde die letzte Installation von Multics abgeschaltet
Hohe Skalierbarkeit Von der Armbanduhr bis zum Supercomputer
Hervorragende Scripting-Eigenschaften

Einfache Automatisierung

Durch die Programmiermöglichkeiten der Sehlls und Skript-Sprachen wie Perl und awk. Zahlreiche Aufgaben lassen sich unter UNIX sehr einfach automatisieren.
Daemonen Hintergrundprozesse
Diverse grafische Benutzeroberfläche basierend auf X11

Unix-Philosophie

Datei:.png
Douglas McIlroy
McIlroy: A Quarter Century of Unix

Die Unix-Philosophie ist eine Menge von Regeln und Herangehensweisen bei der Software-Entwicklung, die auf den Erfahrungen der führenden Unix-Programmierer basieren.

Douglas McIlroy (Unix-Pipes): * Schreibe Programme so, dass sie nur eine Aufgabe erledigen

  • Diese eine Aufgabe sollen sie gut machen
  • Schreibe Programme so, dass sie zusammenarbeiten
  • Schreibe Programme so, dass sie Textdateien verarbeiten
    • Textdateien sind eine universelle Schnittstelle

Kurz: Tue nur eine Sache, diese aber gut!

Von diesen drei Lehrsätzen sind vor allem die ersten beiden nicht auf Unix beschränkt, jedoch betonen Unix-Programmierer alle drei Lehrsätze stärker als andere Programmierer.

Wähle stets die einfachste mögliche Lösung (KISS)

  • KISS-Prinzip
    • wird häufiger im allgemeinen Zusammenhang mit komplexen Planungsaufgaben verwendet
    • auch im Bereich der Informatik verbreitet
  • Designprinzip zur optimale Lösung eines Problems
    • möglichst einfache
    • minimalistische
    • im Nachhinein leicht verständliche Lösung
  • Ein gutes Beispiel dafür in der Informatik ist das Internet, das auf der TCP/IP - Protokollfamilie basiert.
  • Der einfache Aufbau dieser Protokolle hat dafür gesorgt, dass dieses Netz das sehr schnelle Wachstum seit dem Aufkommen des World Wide Web ohne große Probleme überstanden hat, obwohl die TCP/IP-Protokolle ursprünglich für ein wesentlich kleineres Netzwerksystem (für die Forschungszentren der DARPA) entwickelt wurden.
KISS ein Akronym für
Keep it simple and stupid Halte es einfach und dumm
Keep it simple, stupid. Halte es einfach, Dummkopf
Keep it small and simple Gestalte es klein und einfach
Keep it sweet and simple Gestalte es gefällig und einfach
Keep it simple and straightforward Gestalte es einfach und überschaubar
Keep it simple and smart Mach es einfach und clever
Keep it strictly simple Mach es strikt einfach
Keep it silly and stupid Mach es dumm und dümmer

Pike: Notes on Programming in C

Rob Pike schlägt in dem Text Notes on Programming in C die folgenden Regeln als Grundsätze des Programmierens vor, jedoch kann man sie genauso als Kerngedanken der Unix-Philosophie sehen:

Regel 1 Man kann nicht sagen, welcher Programmteil den Hauptteil der Leistung fressen wird. Da Flaschenhälse oft an überraschenden Stellen auftauchen, soll man nichts zur Erhöhung der Geschwindigkeit einbauen, bevor man gezeigt hat, wo der Flaschenhals sitzt.
Regel 2 Miss die Programmlaufzeit. Feile erst an der Geschwindigkeit, wenn du sie gemessen hast, und selbst dann erst, wenn der betrachtete Teil einen dominierenden Anteil der Rechenzeit frisst.
Regel 3 Ausgefallene Algorithmen sind langsam, wenn die Eingabedatenmenge [siehe Komplexitätstheorie] klein ist, und das ist der Normalfall. Ausgefallene Algorithmen haben große Fixkosten. Solange man nicht weiß, dass häufig große Werte annehmen wird, soll man auf ausgefallene Algorithmen verzichten. (Und selbst wenn groß wird, gilt zuerst Regel 2.)
Regel 4 Ausgefallene Algorithmen sind fehlerhafter als einfache, und sie sind viel schwieriger zu implementieren. Benutze sowohl einfache Algorithmen als auch einfache Datenstrukturen.
Regel 5 Daten sind wichtiger. Wenn du die richtigen Datenstrukturen gewählt hast und alles gut gestaltet ist, werden sich die Algorithmen fast immer von alleine ergeben. Datenstrukturen sind das zentrale Thema des Programmierens, nicht Algorithmen.
Regel 6 Es gibt keine Regel 6.

Die Regeln 1 und 2 wiederholen den berühmten Grundsatz von Tony Hoare: „Zu frühe Optimierung ist die Wurzel allen Übels.“ Ken Thompson formulierte die Regeln 3 und 4 als „Verwende im Zweifelsfall rohe Gewalt“; diese Regeln sind Beispiele für das KISS-Prinzip.

Die Regel 5 stammt von Fred Brooks, der sie im Buch The Mythical Man-Month erwähnt hat, und wird oft formuliert als „schreibe dummen Code, der schlaue Daten verwendet“.

Die Regel 6 ist dem Bruces-Sketch aus Monty Python’s Flying Circus (Folge 22) entlehnt.

Mike Gancarz: The UNIX Philosophy

1994 veröffentlichte Mike Gancarz seine eigenen Erfahrungen mit Unix (er gehörte zu den Entwicklern des X Window System) zusammen mit Gedanken aus Diskussionen mit Kollegen sowie Leuten aus anderen Gebieten, welche ebenfalls auf Unix angewiesen waren, zusammengefasst als The Unix Philosophy.

Darin werden neun Hauptforderungen genannt:# Klein ist schön.

  1. Gestalte jedes Programm so, dass es eine Aufgabe gut erledigt.
  2. Erzeuge so bald wie möglich einen funktionierenden Prototyp.
  3. Bevorzuge Portierbarkeit vor Effizienz.
  4. Speichere Daten in einfachen Textdateien.
  5. Verwende die Hebelwirkung der Software zu deinem Vorteil.
  6. Verwende Shell-Skripte, um die Hebelwirkung und die Portierbarkeit zu verbessern.
  7. Vermeide Benutzeroberflächen, die den Benutzer fesseln.
  8. Mache jedes Programm zu einem Filter.

Die folgenden zehn weniger strengen Forderungen werden nicht allgemein als Teil der Unix-Philosophie akzeptiert und führen zum Teil auch zu heftigen Debatten (beispielsweise beim Thema monolithischer Kernel vs. Microkernel):# Lass den Benutzer die Umgebung nach seinen Bedürfnissen festlegen.

  1. Mache Betriebssystemkernel klein und leichtgewichtig.
  2. Benutze Kleinschreibung und halte Befehlsnamen kurz.
  3. Verschwende keine Bäume.
  4. Schweigen ist Gold.
  5. Denke parallel.
  6. Die Summe der Teile ist mehr als das Ganze.
  7. Suche die 90/10-Lösung.
  8. Schlechter ist besser.
  9. Denke hierarchisch.

Schlechter ist besser

Richard P. Gabriel behauptet, ein grundlegender Vorteil von Unix komme von einer Designphilosophie, die er als schlechter ist besser bezeichnet. Nach dieser Philosophie ist die Einfachheit sowohl der Benutzerschnittstelle als auch der Umsetzung im Programm viel wichtiger als jede andere Eigenschaft des Systems – inklusive Eigenschaften wie Fehlerfreiheit, Konsistenz und Vollständigkeit.

Gabriel argumentiert, dass diese Vorgehensweise grundlegende Vorteile bei der Weiterentwicklung der Software bietet, allerdings zweifelt er auch an der Qualität bei so mancher Umsetzung dieser Vorgehensweise. In solchen Fällen bevorzugten Ken Thompson und Dennis Ritchie Einfachheit vor Perfektion. Aus diesen Gründen war Unix in seiner Anfangszeit das Betriebssystem, das am häufigsten abstürzte (mehrmals pro Tag), allerdings auch den schnellsten Neustart hatte.

Wegen seiner Einfachheit wurde innerhalb von zehn Jahren aus Unix das stabilste System, das mit fehlerfreien Laufzeiten im Bereich von Monaten und Jahren statt Stunden aufwarten konnte.

Raymond: The Art of Unix Programming

Eric S. Raymond fasst in seinem Buch The Art of Unix Programming die Unix-Philosophie mit der allseits bekannten Ingenieursweisheit Keep it Simple, Stupid (KISS) zusammen.

Anschließend beschreibt er, wie diese Grundhaltung seiner Meinung nach in der Praxis der Unix-Kultur umgesetzt wird (wobei in der Praxis natürlich gelegentlich sehr deutlich gegen diese Regeln verstoßen wird):

Regel der Modularität Schreibe einfache Bestandteile, die durch saubere Schnittstellen verbunden werden.
Regel der Klarheit Klarheit ist besser als Gerissenheit.
Regel des Zusammenbaus Entwirf Programme so, dass sie mit anderen Programmen verknüpft werden können.
Regel der Trennung Trenne den Grundgedanken von der Umsetzung, trenne die Schnittstellen von der Verarbeitungslogik.
Regel der Einfachheit Entwirf mit dem Ziel der Einfachheit; füge Komplexität nur hinzu, wenn es unbedingt sein muss.
Regel der Sparsamkeit Schreibe nur dann ein großes Programm, wenn sich klar zeigen lässt, dass es anders nicht geht.
Regel der Transparenz Entwirf mit dem Ziel der Durchschaubarkeit, um die Fehlersuche zu vereinfachen.
Regel der Robustheit Robustheit ist das Kind von Transparenz und Einfachheit.
Regel der Darstellung Stecke das Wissen in die Datenstrukturen, so dass die Programmlogik dumm und robust sein kann.
Regel der geringsten Überraschung Mache beim Entwurf der Schnittstellen immer das Nächstliegende, welches für die wenigsten Überraschungen beim Benutzer sorgt.
Regel der Stille Wenn ein Programm nichts Überraschendes zu sagen hat, soll es schweigen.
Regel des Reparierens Wenn das Programm scheitert, soll es das lautstark und so früh wie möglich tun.
Regel der Wirtschaftlichkeit Die Arbeitszeit von Programmierern ist teuer; spare sie auf Kosten der Rechenzeit.
Regel der Code-Generierung Vermeide Handarbeit; schreibe Programme, die Programme schreiben, falls möglich.
Regel der Optimierung Erstelle Prototypen, bevor du dich an den Feinschliff machst. Mache es lauffähig, bevor du es optimierst.
Regel der Vielseitigkeit Misstraue allen Ansprüchen auf „den einzig wahren Weg“.
Regel der Erweiterbarkeit Entwirf für die Zukunft, denn sie wird schneller kommen als du denkst.

Viele dieser Normen werden auch außerhalb der Unix-Gemeinde anerkannt – wenn sie nicht zuerst bei Unix verwendet wurden, wurden sie bald übernommen.

Trotzdem betrachten Unix-Experten eine Kombination dieser Regeln als die Grundlage des Unix-Stils.

Rolle des Betriebssystems

Obige Aussagen beschreiben, welche Eigenschaften Programme haben, die Unix zu dem machen, was es ist.

Ein weiterer Aspekt der Unix-Philosophie betrifft jedoch auch das Betriebssystem selbst:

Damit Programme möglichst einfach, klar und modular gehalten werden können, damit sie gut zusammenarbeiten können und damit sie gut portierbar sein können, muss das Betriebssystem die entsprechenden Voraussetzungen in Form von klaren Schnittstellen und hoher Abstraktion schaffen. In der Praxis:* Alles ist eine Datei:

  • lokale Laufwerke
  • Netzlaufwerke
  • Virtuelle Laufwerke (Image-Dateien)
  • Kernel-Daten (/proc. )
  • Kommunikation erfolgt grundsätzlich über Netzwerk-Verbindungen.
    Auch die interne Kommunikation zwischen beispielsweise Client-Programmen und Daemons wird über Netzwerkschnittstellen geführt, so dass die Programmierung einheitlich ist und die Programme auch wahlweise über das Netzwerk verwendet werden können.

Aus diesem Grund gibt es bei Unix nicht für jedes Anwendungsgebiet eine spezialisierte Programmierschnittstelle, sondern auch vergleichsweise exotische Anwendungen werden auf Dateien oder Netzwerkverbindungen abgebildet.

Zitate

  • „Unix ist einfach. Es erfordert lediglich ein Genie, um seine Einfachheit zu verstehen.“ – Dennis Ritchie
  • „Unix wurde nicht entwickelt, um seine Benutzer daran zu hindern, dumme Dinge zu tun, denn das würde diese auch davon abhalten, schlaue Dinge zu tun.“ – Doug Gwyn
  • „Unix sagt niemals ›bitte‹.“ – Rob Pike

Quellen

=== Standards

+ Mehr Infos
+ fsh
+ Überschneidungen mit anderem Kapitel
+ Quellen und Links

===

Jeder Hersteller änderte und erweiterte das System in den 80er Jahren des 20. Jahrhunderts nach eigenen Vorstellungen.

Es entwickelten sich Versionen mit unterschiedlichen Fähigkeiten, Kommandos, Kommandooptionen und Programmbibliotheken.

POSIX

  • Um 1985 begann die IEEE zunächst, die Schnittstellen für Anwendungsprogramme zu standardisieren.
  • Daraus entwickelte sich der IEEE 1003 -Standard, der auf Anregung von Richard Stallman POSIX genannt wird.
  • Er besteht heute aus etwa 15 Dokumenten, die sich mit allen Aspekten von Unix-Systemen wie dem Kommandozeileninterpreter (POSIX schreibt zwingend die Korn Shell vor), den Unix-Kommandos und deren Optionen, der Ein-/Ausgabe und anderem befassen.

Portable Operating System Interface ISO/IEC/IEEE 9945

EntwicklerPortable Application Standards Committee

Aktuelle VersionIEEE Std 1003.1-2008

BetriebssystemBetriebssystem-unabhängig

KategorieProgrammierschnittstelle

Deutschsprachignein

www.pasc.org

Das Portable Operating System Interface (POSIX) ist ein gemeinsam von der IEEE und der Open Group für Unix entwickeltes standardisiertes Application Programming Interface, das die Schnittstelle zwischen Applikation und dem Betriebssystem darstellt. Die internationale Norm trägt die Bezeichnung ISO/IEC/IEEE 9945.

Entwicklung

  • Die heutigen Standards sind eine Weiterentwicklung aus einem Projekt im Jahr 1985.
  • Der Begriff POSIX wurde von Richard Stallman als Reaktion auf den IEEE-Aufruf nach einem einprägsamen Namen vorgeschlagen; zuvor trug der Standard die Bezeichnung IEEE-IX.
  • Die meisten Unix-Derivate halten sich mehr oder weniger an die in IEEE1003.1 (1990) und IEEE1003.2 (1992) festgelegten Standards.
  • Diese älteren Versionen wurden 2001 durch die überarbeitete Version IEEE Std 1003.1-2001 der IEEE und Open Group abgelöst.
  • 2004 wurde eine leicht korrigierte Version IEEE Std 1003.1, 2004 Edition veröffentlicht. Die gegenwärtig aktuelle Version ist die Überarbeitung von 2008.
  • Es besteht die Möglichkeit, ein Produkt zertifizieren zu lassen.
  • Einige Linux-Distributoren werben inzwischen damit, ein POSIX-konformes Betriebssystem zu vertreiben.

Spezifikation

  • Die Spezifikation der Benutzer- und Software-Schnittstelle des Betriebssystems ist in vier Teile unterteilt, die zusammen den Standard IEEE Std 1003.1-2008 bilden:
  • Basis-Definitionen
  • Eine Liste der im Standard benutzten Konventionen, Definitionen, und Konzepte.
  • System-Schnittstelle
  • Die C-Systemaufrufe und dazugehörige Header-Dateien.
  • Kommandozeileninterpreter und Hilfsprogramme
  • Eine Liste der Hilfsprogramme und der Kommandozeileninterpreter.
  • Erklärungen
  • Erläuterungen, warum der Standard so ist, wie er ist.
  • Die Standard-POSIX-Shell ist die Unix-Shell.
  • Weitere Hilfsprogramme wie awk, vi oder echo sind ebenfalls Teil des POSIX-Standards.
  • Die C-Funktionen stellen unter anderem Ein- bzw. Ausgabe (für Dateien, Terminals und Netzwerkdienste) zur Verfügung, daneben Erzeugung und Kontrolle von Prozessen sowie Benutzer- und Gruppenverwaltung.

Single Unix Specification

  • Die Preise der IEEE für die POSIX-Dokumentation sind sehr hoch, die Veröffentlichung ist durch Urheberrecht untersagt.
  • In neuerer Zeit ist deshalb eine Tendenz zum Single Unix Specification -Standard der Open Group zu verzeichnen.
  • Dieser Standard ist offen, im Internet frei verfügbar und akzeptiert Vorschläge von jedem.

Entstehung von Unix

Die Geschichte von UNIX liest sich stellenweise wie ein Heldenepos oder ein Kriminalroman, manchmal auch wie eine Groteske.

Schon die Geburt von UNIX vollzog sich unter eigenartigen Umständen, denn es entsprang einem gescheiterten Projekt.

Die Welt vor UNIX

Setzt man sich heute vor einen Rechner, startet ein Programm, wartet einige Sekunden, bis dieses endlich die erhofften Resultate präsentiert, dann blättert man alsbald durch Prospekte der Computer-Discounter und liebäugelt mit neuer, leistungsfähigerer Technik.

Datei:Grafik42.png

Mit keinem Gedanken erinnert man sich an die monströsen Ungetüme aus Röhren und Transistoren im Turnhallenformat, die noch in den 70er Jahren die Leistung kleiner Kraftwerke erforderten, um letztlich nur einen Bruchteil an heutiger Rechenleistung zu vollbringen.

Stapelverarbeitung mit Lochkarten

Datei:Grafik35.png

Zu jener Zeit wurden die "Rechengenies" noch per Hand mit Daten gefüttert, vom Administrator, der den Lochkartenstapel einlegte und nach Stunden oder gar erst Tagen die Resultate ebenfalls in Form von Lochkarten entnahm.

Ein Betriebssystem kannte und brauchte man damals noch nicht.

Als Ken Thompson 1969 bei Bell Laboratories (AT&T), die Entwicklung eines neuen Betriebssystems begann, waren die meisten der vorhandenen Systeme sog. Batch-Systeme:

Ein Programmierer gab seine Lochkarten oder Lochstreifen beim Operator ab, diese wurden in den Rechner eingelesen und ein Rechenauftrag nach dem anderen abgearbeitet.

Der Programmierer konnte dann nach einiger Zeit seine Ergebnisse abholen.

Alle diese Systeme wurden jeweils speziell für den Computer geschrieben, auf dem sie liefen.

Gemeinsam Programmieren

Datei:.png
Ken Thompson (links) und Dennis Ritchie (rechts)

UNIX ist entstanden, aus der Notwendigkeit zur Programmerstellung ein Betriebssystem, zu entwickeln, an dem mehrere Programmierer im Team und im Dialog mit dem Rechner arbeiten können.

Timesharing-Verarbeitung mit Magnetbändern

Die Rechner wurden kleiner, passten schon in einen einzigen Raum, ihre Verarbeitungsgeschwindigkeit stieg und übertraf bald die Fähigkeit des Administrators, die Magnetbänder rechtzeitig zu wechseln.

Es wurde Zeit, den Ballast der reinen Stapelverarbeitung (ein Job nach dem anderen) aufzugeben und zur Timesharing-Verarbeitung überzugehen.

Man erweiterte den damals sündhaft teuren Arbeitsspeicher, so dass mehrere Jobs gleichzeitig rechenbereit auf die CPU warten konnten und teilte jedem Job eine genau festgelegte Zeitscheibe an CPU-Zeit zu.

Von einer Interaktion mit dem Nutzer war man noch meilenweit entfernt.

MULTICS

Datei:Grafik54.png

Das erste Ergebnis dieser Entwicklung war MULTICS, das für den Mainframe-Rechner GE645 in Maschinensprache (Assembler) geschrieben wurde.

1965 wurden im Rahmen der Fall Joint Computer Conference einige Papiere über ein neu zu erstellendes Betriebssystem namens Multics veröffentlicht.

Hinter Multics stand ein Konsortium aus MIT * General Electric

  • Bell Labs
  • Honeywell.
  • Ebenfalls am Rande beteiligt war IBM, in deren Programmiersprache PL/I Multics entwickelt werden sollte.

MULTICS (Multiplexed Information and Computing System) mit der Vorstellung ins Leben gerufen, ein Betriebssystem für eine Maschine zu entwickeln, die über so viel Rechenkapazität verfügen sollte, um alle Einwohner von Boston bedienen zu können.

Das Scheitern von Multics

1969 zogen sich die Bell Labs aus dem Projekt zurück. Die Erwartungen an Multics waren überzogen, die Hardware dieser Zeit konnte kein System dieser Komplexität und Größe in angemessener Geschwindigkeit liefern.

Dennoch brachte das Projekt das spätere Verständnis des Aussehens von Betriebssystemen wertvolle Erkenntnisse.

Dennis Ritchie äußerte sich in einem 1979 veröffentlichtem Papier:

"... the problem was the increasing obviousness of the failure of Multics to deliver promptly any sort of usable system,..." (...das Problem war die zunehmende Gewissheit, dass Multics auf absehbare Zeit nicht brauchbar sein würde...)

Entwicklungsziele

Das Team um Ritchie, darunter Ken Thompson, Douglas McIlroy und Joseph Ossanna wollte aber nicht aufgeben. Es ging ihnen vor allem darum, * ein Mehrbenutzersystem zu haben,

  • das es ihnen erlaubte, nicht nur zusammen zu programmieren
  • sondern auf dessen Basis sich auch eine echte Gemeinschaft herausbilden konnte.

Zu diesem Zweck musste das System einige technische Spezialitäten unterstützen, die damals keineswegs selbstverständlich waren, so zum Beispiel, dass mehrere Benutzer gleichzeitig an Dateien arbeiten konnten, ohne sich gegenseitig in die Quere zu kommen.

Erste Vorarbeiten

Datei:.png
PDP-7

Während das Team vergeblich versuchte, die Bell Labs vom Kauf einer geeigneten Maschine zu überzeugen, begannen gleichzeitig die technischen Vorarbeiten.

Auf Notizzetteln und Tafeln wurden die Konzepte zu einem Dateisystem entwickelt, das später zu einem der Kernstücke von Unix werden sollte.

Thompson entwickelte auch einige Prototypen eines Dateisystems und eines primitiven Kernels, die auf einer GE-645 lauffähig waren, musste das Projekt aber einstellen, nachdem klar wurde, dass die GE-645 auf absehbare Zeit aus den Labors entfernt werden würde.

Space Travel die PDP-7

Er fand schließlich eine weitgehend unbenutzte PDP-7, auf die er ein zuvor für Multics und GECOS entwickeltes Spiel namens Space Travel portieren wollte.

Das Unternehmen erwies sich komplizierter als zunächst gedacht, da für die PDP-7 kein eigenes Entwicklungssystem vorlag, und so sämtliche Entwicklung unter GECOS stattfinden musste, welches dann den PDP-7 Code produzierte.

Erste Werkzeuge

Um diesen Missstand abzustellen, begann Thompson unter Mithilfe von Ritchie die Implementierung des zuvor konzipierten Dateisystems mitsamt einem primitiven Prozessmanagement, und anschließend einer Reihe kleinerer Programme, die das System benutzbar machen sollten:

Editor, kleinere Dateiverwaltungsprogramme, und ein einfacher Kommandozeileninterpreter (Shell), bis das System schließlich ausreichend ausgestattet war, um ohne den GECOS-Umweg direkt auf der PDP-7 zu entwickeln.

Fertigstellung und Verbreitung

Umstieg auf die PDP-11

Die PDP-7 war zu dieser Zeit bereits ein Auslaufmodell und gehörte dem Team noch nicht mal, aber schließlich erwiesen sich die Bemühungen, einen eigenen Computer für die Unix-entwicklung zu beschaffen, als erfolgreich, und eine PDP-11 wurde in Auftrag gegeben.

Unix war rasch portiert, und das System wurde ab 1971 erfolgreich im Patentbüro der Bell Labs als Textverarbeitungssystem eingesetzt.

Das System war, durch die Umstände bedingt, erstaunlich klein verglichen mit heutigen Betriebssystemen:

Es bestand aus 16 KiB Speicher für das System, 8 KiB für die Benutzerprogramme, einer 512-KiB- Festplatte und Dateien konnten maximal 64 KiB groß werden.

Datei:.png
1972: Ken Thompson (rechts) and Dennis Ritchie (links) vor einer PDP-11 mit Teletype 33 terminals
Bewährung im Patentbüro

Der Einsatz im Patentbüro gab der Gruppe genug Glaubwürdigkeit, damit Unix als Projekt für die Bell Labs interessant wurde und um die Anschaffung einer PDP 11/74 zu rechtfertigen, und die AT&T Unix Systems Group (später: Unix Systems Group) wurde als offizielles Projekt der Bell Labs gegründet.

Die Portierung auf C

Parallel begann eine Entwicklung, die ausschlaggebend für den späteren Erfolg von Unix war:

Die Entwicklung der Sprache C.

Thompson entwickelte 1971 eine interpretierte Programmiersprache für die PDP-7 namens B, welche auf BCPL basiert war.

Ritchie fügte der Sprache auf der PDP-11 Datentypen hinzu und nannte sie zunächst NB (für New B) und begann einen Compiler für die Sprache zu entwickeln.

1972 begann nun die Neuerstellung von Unix in dieser Sprache, die mittlerweile den Namen C erhielt, um zukünftig die Portierung von Unix auf neue Rechner zu erleichtern.

Die Portierung wurde 1973 abgeschlossen und erhielt den Namen Unix V4. Erst mit UNIX Release 7 (1979) wurde der Code wirklich portabel.

Pipes

Datei:.png
Douglas McIlroy

Gleichzeitig wurde Unix, auf Anregung von Doug McIlroy, um das Konzept der Pipes erweitert.

Pipes verbinden kleine Programme, und erlauben das Ergebnis eines Programmes im Rahmen einer einzigen Kommandozeilenanweisung in einem anderen Programm weiterzuverarbeiten

Sie stellten später eines der wichtigen Kernelemente von Unix dar, da erst sie das Konzept der kleinen spezialisierten Werkzeuge, die genau eine Aufgabe erledigen, ermöglichten.

Unix verlässt die Bell Labs

Unix lief mittlerweile innerhalb der Bell Labs auf mehr als 25 Rechnern, und durch einen Vortrag 1973 auf einem ACM Symposium wird es erstmals außerhalb der Bell Labs bekannt.

Der Vortrag erschien in überarbeiteter Fassung dann 1974 als The UNIX Time-Sharing System in CACM. Das Interesse an Unix stieg auch außerhalb der Bell Labs gewaltig an.

Unix zum Datenträgerpreis

Der 1956 abgeschlossene Consent Decree verbot AT&T, Muttergesellschaft der Bell Labs, das Betreten neuer Märkte wie des Computermarktes. Aus diesem Grund wurde Unix (in der 1975 aktuellen Version 6) für lediglich den Preis der Datenträger verschiedenen Universitäten zur Verfügung gestellt, mitsamt dem vollständigen Quellcode.

1976 schrieb der australische Professor John Lions ausführliche Kommentare zum Quellcode von Unix-V6, die als Lions Book berühmt wurden.

Die Kompaktheit und strukturelle Einfachheit des Systems ermunterte viele Benutzer zur eigenen Aktivität und Weiterentwicklung des Systems, so dass UNIX recht schnell einen relativ hohen Reifegrad erreichte.

Dies ist deshalb bemerkenswert, da kein Entwicklungsauftrag hinter diesem Projekt stand, und die starke Verbreitung von UNIX nicht auf den Vertrieb oder die Werbung eines Herstellers, sondern primär auf das Benutzerinteresse zurückzuführen ist.

BSD - Berkeley Software Distribution

Datei:Grafik571.png

Besonders beliebt war Unix an der Universität von Kalifornien in Berkeley (UCB), wo sofort eine Reihe von Verbesserungen an Unix entwickelt wurden.

Als Ken Thompson ab 1976 eine Gastprofessur in der neu gegründeten Informatikabteilung von Berkeley antrat, wurde die Universität endgültig zu einem der wichtigen Zentren der Unix-Entwicklung.

Die Universität steuerte später zu Unix wichtige Beiträge, wie die Unterstützung von TCP/IP, bei, die später auch in die offizielle Unixversion von AT&T übernommen wurden. Ab 1977 veröffentlicht die Universität unter Leitung von Bill Joy eine eigene Unixdistribution: BSD - Berkeley Software Distribution.

1978 über 600 Computer mit UNIX-Betriebssystemen

Die großen „Unix-Kriege“

Der Quellcode wird geschlossen

1979 wird schließlich durch AT&T die letzte UNIX-Version mit freiem Quellcode, nämlich UNIX V7, veröffentlicht. UNIX V7 stellt einen Wendepunkt in der Geschichte von UNIX dar, da sich AT&T erstmals in größerem Umfang an einer kommerziellen Vermarktung versuchte.

Xenix: Microsofts Ausflug

Datei:Grafik89.png

Microsoft erwirbt 1979 eine Unixlizenz und beginnt unter dem Namen Xenix die Arbeiten an Portierungen auf u. a. Intel 8086, Motorola 68000 und Zilog Z8000 -Prozessoren.

In den späten 1980er entwickelte Microsoft zusammen mit IBM OS/2 (später aufgespalten in IBM's OS/2 und Microsoft's Windows NT).

Da man mit OS/2 (bzw. Windows NT) und Xenix zwei Serverbetriebssysteme im Angebot gehabt hätte, die sich gegenseitig Konkurrenz gemacht hätten, entschied Microsoft 1987 die Rechte an Xenix an die Firma Santa Cruz Operations (SCO, heute Tarantella, Inc.) zu verkaufen, die schon seit 1983 Lizenznehmer von Xenix war.

Im Jahr 1980 erschien die erste Portierung von UNIX V7 auf eine 32-Bit-Maschine, die VAX, mit UNIX 32V und 3BSD.

Datei:Grafik90.png
Plan 9 – Unix in Perfektion

Im Laufe der 1980er wurden UNIX V8, V9 und V10 zwar noch entwickelt, aber nur an ein paar Universitäten vorgestellt, obwohl auch schriftliche Beschreibungen der Arbeit an diesen Versionen erstellt wurden.

Die Überlegungen bei dieser Arbeit führten aber letztendlich auch zur Entwicklung des Betriebssystems Plan 9.

Datei:.png
Plan 9 from Bell Labs on IBM's Blue Gene Supercomputers

Datei:Grafik43.png

Kommerzialisierung

Die 1980er Jahre sind gekennzeichnet durch den Beginn der großen "Unix-Kriege" und die Kommerzialisierung von Unix. AT&T betrat offiziell den Computermarkt und begann 1983 ein auf Unix V7 basierendes System, System V genannt, zu vermarkten.

Das Militär

Die Universität von Berkeley zeitgleich 4.2BSD veröffentlichte, das Neuerungen wie TCP/IP oder Signale mit sich brachte. Mittlerweile hat auch die DARPA Interesse an Unix entwickelt und unterstützt die Entwicklungen in Berkeley finanziell.

AT&T steigt wieder ein

Datei:Grafik86.png

1984 trennte sich AT&T von etlichen Tochterfirmen, womit ihr auch gestattet wurde, sich als gewöhnlicher Wettbewerber auf dem Computermarkt zu betätigen.

Damit wurden auch die Lizenzgebühren für UNIX drastisch angehoben und der Zugang zum Quellcode mehr und mehr eingeschränkt.

Die Folge war, dass die Kooperation zwischen den Firmen, die UNIX kommerziell vermarkteten, immer mehr zurückging und jeder in "seiner" UNIX-Version seine eigenen Erweiterungen und Verbesserungen einbaute, bis UNIX heillos in unterschiedliche Versionen aufgesplittet war:* SunOS von SUN,

  • HP-UX von Hewlett-Packard,
  • AIX von IBM,
  • Ultrix von Digital,
  • SINIX von Siemens,
  • Microsoft versuchte sich auf dem UNIX-Markt mit Xenix.

Ein großer Vorteil, die leichte Portierbarkeit der UNIX-Programme, drohte mit dieser Zersplitterung zu verschwinden und viele Stimmen prophezeiten auch ein mittelfristiges Ende von UNIX.

Als AT&T nach der Zerschlagung als Wettbewerber auftreten durfte, versuchte es auch, einen Standard zu schaffen: System V (wobei das V für die Zahl 5 steht und nicht für den Buchstaben, also "System Five" gesprochen).

AT&T versucht einen Standard zu setzen

1985 brachte AT&T das "System V Interface Definition" oder auch "lila Buch" heraus.

Dieses Dokument stellte ein Standard für die UNIX-Schnittstellen dar. Zusätzlich enthielt es auch eine Menge Werkzeuge, die ein System auf die Konformität mit dem Standard V überprüfte.

Diese von AT&T 1983 freigegebene Version "UNIX System V" war zu dieser Zeit die dominierende Version, dies stellte den Versuch dar, die Hersteller auf einen Standard zu einen.

Die Antwort: POSIX

Um sich nicht von einer einzigen Firma abhängig zu machen, entstanden im Laufe der Zeit andere Standards, wie z. B. POSIX(Portable Operating System based on UNIX).

Weil AT&T alle Rechte an dem Namen UNIX hatte, wurde vom IEEE (Institute of Electrical and Electronic Engineers) dieser Name für diesen Standard gewählt.

Ein anderes Beispiel hierfür ist X/Open: Das X/Open Konsortium ist ein Zusammenschluss verschiedener Computerhersteller, die einen De-Facto-Standard schaffen wollten. 1988 wurde der X/Open Portability Guide veröffentlicht.

Um eine weitere Aufspaltung zu verhindern, wurde das POSIX Standardisierungsprojekt ins Leben gerufen, das eine einheitliche Schnittstelle für Unix definieren sollte. 1988 wurde schließlich POSIX.1 veröffentlicht (heute auch ein IEEE -Standard unter der Nummer 1003.1).

Es bildeten sich daraufhin eine Reihe von (teils wechselnden) Allianzen, die verschiedene Unix-Versionen favorisierten:

Open Software Foundation

Die OSF wurde 1985 gegründet, teilweise aufgrund der Meinung der Beteiligten, dass der POSIX-Standard AT&T zu stark bevorzugen würde, teilweise auch aufgrund von Befürchtungen, dass AT&T und Sun Microsystems, die ab 1987 kooperieren, den Markt unter sich aufteilen könnten.

Gründungsmitglieder der OSF waren u. a. DEC, Siemens, HP und IBM.

Das Konsortium hatte sich zum Ziel gesetzt, ein gemeinsames Unix unter dem Namen OSF/1 zu veröffentlichen.

Unix International

UI wurde als unmittelbare Reaktion auf die OSF gegründet durch Anhänger des AT&T Unixs wie z. B. Olivetti, Unisys und eben AT&T und Sun.

X/Open

Ursprünglich 1983 unter dem Namen Bison von einer Reihe europäischer Unternehmen wie Bull, Siemens, Olivetti gegründet, um gemeinsame europäische Interessen besser gegen die US-Firmen vertreten zu können, wurde das Konsortium später mit der Aufnahme von US-Firmen umbenannt.

Während OSF/1 bis in die 1990er Jahre nicht fertiggestellt wurde, veröffentlichten AT&T und UI weitere Verbesserungen an Unix System V.

Freie Software

1983 begann Richard Stallman, verärgert über die Proprietarisierung von Unix, mit der Arbeit an einem eigenen, Unix-ähnlichen Betriebssystem namens GNU und rief mit der Veröffentlichung des GNU Manifests 1985 eine immer stärker werdende Bewegung für freie Software ins Leben.

löschen?
in Text integrieren?

==== Rechteverteilung

Noch aktuell?
====
Datei:Grafik52.png
Die Rechte am Quellcode von Unix liegen laut eines Gerichtsbeschlusses bei Novell
Datei:Grafik53.png
Die Rechte am Warenzeichen liegen dagegen bei der Open Group

Unix-ähnliche Betriebssysteme

Vorgeschichte
redundant?

Bis Unix V7 1979 erschien, wurde der Quellcode von Unix gegen Erstattung der Kopier- und Datenträgerkosten an Universitäten verteilt. Unix hatte damit den Charakter eines freien, portablen Betriebssystems.

Der Code wurde in Vorlesungen und Veröffentlichungen verwendet und konnte nach eigenen Vorstellungen geändert und ergänzt werden.

Die Universität Berkeley entwickelte eine eigene Distribution mit wesentlichen Erweiterungen, die Berkeley Software Distribution (BSD).

In den frühen 80er Jahren beschloss AT&T, Unix zu vermarkten; der AT&T-Quellcode durfte ab diesem Zeitpunkt nicht mehr öffentlich zugänglich gemacht werden.

Auch die Verwendung in Vorlesungen etc. war ausgeschlossen. Auch für auf BSD basierende Systeme wurden – da ein Teil des Codes von AT&T stammte – hohe Lizenzgebühren erhoben.

Viele Firmen lizenzierten den UNIX-Quellcode und brachten ihre eigenen Varianten auf den Markt, selbst Microsoft hatte mit Xenix einige Zeit ein Unix im Angebot.

GNU

Die Nichtverfügbarkeit des Quellcodes veranlasste Richard Stallman, 1983 das GNU-Projekt („GNU's Not Unix“) ins Leben zu rufen.

Ziel des Projekts war die Schaffung eines freien Unix-kompatiblen Betriebssystems. Bis 1990 hatte das Projekt alle wesentlichen Teile – inklusive des GNU-C-Compilers – entwickelt, jedoch mit Ausnahme des Kernels.

Minix

1987 erschien das Lehrsystem Minix, entwickelt von Andrew S. Tanenbaum an der Freien Universität Amsterdam.

Minix war ein Unix-Klon mit Mikrokernel, C- Compiler, Texteditor und vielen Kommandos, das auf anspruchsloser PC -Hardware lief.

Der Quellcode war Teil des Lieferumfangs. Es war zwar kommerziell und proprietär, hatte aber einen sehr niedrigen Preis. Wie vormals Unix diente dieses System vielen als Ausgangspunkt für eigene Experimente.

Linux

1991 arbeitete der Student Linus Torvalds an einem Terminal-Emulator, mit dem er auf einen Uni-Computer zugreifen wollte.

Mit der Zeit baute er Dateisystem-Zugriff und viele andere nützliche Features ein. Bald bemerkte er, dass er mehr als einen Terminal-Emulator programmierte.

Den Sourcecode veröffentlichte er in der Newsgroup comp.os.minix als Betriebssystemkern, das auf einem Intel - 386er -PC lauffähig sein sollte.

Freie BSD-Derivate

Datei:Grafik41.png

Ein anderes Projekt rund um ein Betriebssystem aus freier Software war in den 1980er Jahren auch die Berkeley Software Distribution, kurz BSD.

Diese hatte sich aus Eigenentwicklungen der Universität Berkeley aus den Unix-Versionen der 4er Edition und folgender von AT&T entwickelt.

Da aber in den BSD-Versionen noch immer Code von AT&Ts Unix enthalten war, kam es Anfang der 1990er Jahre zu einem Rechtsstreit zwischen AT&T und der Universität Berkeley, der die Entwicklung von BSD stark einschränkte und einige Jahre stark verlangsamte.

1992 erschien mit 386BSD von Bill Jolitz ein weiteres freies System für 80386-Prozessoren. * Es bestand aus einem Patch für die nicht von AT&T stammenden freien Teile der BSD-Distribution und bildete ein weiteres freies, sehr fortgeschrittenes Betriebssystem für Intel-Prozessoren.

1994 veröffentlichte Berkeley mit 4.4BSDLite die letzte Version ihrer Distribution, die von AT&T-Quellcode befreit war. * Dieses bildete zusammen mit 386BSD die Grundlage für NetBSD, FreeBSD und kurz darauf OpenBSD.

2000 gab Apple den Quelltext des Betriebssystems Darwin, Bestandteil von Mac OS X, frei. * Es basiert auf 4.4BSD und dem Mach -Mikrokernel

  • Der Darwin-Kernel von Mac OS X ist ein Hybridkernel
    • der versucht die Vorteile eines monolithischen mit denen eines Mikrokernels zu verbinden
Datei:Grafik50.png
Datei:Grafik48.png
Datei:Grafik49.png
Datei:Grafik46.png
Datei:Grafik47.png
FreeBSD NetBSD OpenBSD DragonFlyBSD Darwin

OpenSolaris
Aktueller Stand?

Datei:Grafik5.png

Seit 2005 ist auch Solaris (Version 10) in der jeweils aktuellen Fassung für die gebührenfreie Benutzung erhältlich.

Solaris läuft auf 32-Bit-Prozessoren (x86) von AMD und Intel sowie auf 64-Bit-Systemen mit Suns UltraSPARC und sogenannten x64-Systemen wie zum Beispiel AMDs Opteron.

Für Zugriff auf Quellen und Mitarbeit inklusive Erweiterung ist es in der Fassung OpenSolaris erhältlich, die sich funktionell nicht von der Binärversion unterscheidet.

Sun Microsystems verlangt allerdings eine Registrierung und hat eigene Lizenzbestimmungen, die von der GNU GPL abweichen.

Was ist Linux?

"Tux"

Als Linux werden * freie

Im engeren Sinne mein der Begriff nur den Kern des Betriebssystems. Im Alltag wird mit „Linux“ oft das Gesamtsystem aus Kernel, Betriebssystemumgebung und Anwendungen gemeint.

Modular Aufbau

Ein wichtiger Aspekt ist der modulare Aufbau des Systems und der Tatsache, dass diese Module in vielen verschiedenen Projekten von Softwareentwicklern auf der ganzen Welt entwickelt werden.

Die folgende Darstellung gibt einen interessanten Überblick über die möglichen Teile eines Linux-Systems:

Quelle: ftp://ftp.oreilly.com/pub/poster/oreilly_linux_poster.pdf

Wer entwickelt Linux?

An der Entwicklung sind beteiligt* Unternehmen

Mittlerweile verdienen eine Reihe von Firmen mit Linux Geld. Diese Firmen, von denen die meisten auch Mitglieder der Open Source Development Labs sind, investieren teilweise erhebliche Ressourcen in die Weiterentwicklung und den Ausbau von Linux, um es für verschiedene Einsatzbereiche tauglich zu machen.

Dies reicht von Hardwarespenden an Entwickler über Treiber und Geldspenden für Stiftungen, die sich mit Linux-Software beschäftigen, bis hin zur Anstellung von Programmierern bei der Firma selbst.

Bekannte Beispiele dafür sind IBM und HP, die Linux vor allen Dingen auf den eigenen Servern einsetzen, als auch Red Hat, das eine eigene Distribution unterhält.

Ebenso unterstützt Trolltech Linux durch die Entwicklung und der GPL-Lizenzierung von Qt, was die Entwicklung von KDE erst möglich macht, und durch die Förderung einiger X- und KDE-Entwickler.

Wie entsteht ein OSS-Projekt?

Datei:Bild6.png

Support für Linux

Datei:.png
Tux bei der Brutpflege

Sie erhalten Support von zahlreichen Internet Quellen

Community-Support* Foren

  • Newsgroups
  • Mailinglisten und
  • Ungezählten WWW-Seiten.
  • Dem Programmierer einer Software direkt eine Mail schreiben.
  • Lokale Linux oder Unix User Group Kontakt aufnehmen.

Kommerzielle Support * Distributoren

  • Einige Entwickler bieten auch kommerziellen Support an
  • IT-Dienstleister, die Linux einsetzt

Eine Liste solcher Firmen erscheint z.B. im Linux-Magazin (www.linux-magazin.de).

Entstehung von Linux

Als Linux Anfang der 1990er Jahre das Licht der Welt erblickte, war das nur möglich, weil viele Menschen zuvor die Grundlagen dafür die Grundlagen gelegt haben.

Seit seiner ersten Veröffentlichung hat sich Linux, ein auf GNU basierendes Betriebssystem, stark weiterentwickelt. Es gab Streit um den Namen und neue Unterstützer sind ebenso hinzugekommen, wie auch Gegner.

Entwicklungen im Vorfeld

Datei:Grafik6.png
Das GNU-Projekt

1983 gründete Richard Stallman das GNU-Projekt mit dem Ziel, ein UNIX -ähnliches, POSIX -kompatibles Betriebssystem zu schaffen.

Zwei Jahre später gründete er die Free Software Foundation (FSF) und schrieb die GNU General Public License (GPL), um freie Software im Copyright -System zu ermöglichen.

Auf diesem Wege verbreitete sich die GNU-Software sehr schnell und wurde von vielen Menschen weiterentwickelt.

Es entstand in kurzer Zeit eine Vielzahl von Programmen, so dass bereits Anfang 1990 genug GNU-Software bereitstand, um ein eigenes Betriebssystem daraus zu erstellen.

Allerdings fehlte noch immer ein Kernel. Dieser sollte eigentlich im Projekt GNU Hurd entwickelt werden.

"Richard Stallman"

Doch der als Mikrokernel ausgelegte Kern entwickelte sich nur sehr schleppend, weil das Finden und Beheben von Fehlern (Debuggen) aufgrund technischer Besonderheiten sehr schwierig und aufwändig war. Anfang der 1990er gab es also kein vollständiges, freies System.

Die Zukunft von BSD war wegen des Rechtsstreits ungewiss, die Weiterentwicklung gelähmt.

das GNU-Projekt wurde zwar konstant weiterentwickelt und ausgebaut, verfügte aber über keinen UNIX-artigen Kernel,

vielmehr war es eine Anzahl freier Softwareprojekte, die auf den verschiedensten (proprietären) UNIX-Varianten mittels des GNU-Compilers übersetzt werden konnten und lauffähig waren.

Minix

Datei:.png
Andrew S. Tanenbaum

1987 entwickelte der in Amsterdam lehrende amerikanische Informatiker Professor Andrew S. Tanenbaum ein Unix-ähnliches Betriebssystem namens Minix.

Minix sollte der Lehre dienen, um seinen Studenten die Grundlagen eines Betriebssystems zu veranschaulichen, da die zunehmend restriktiveren AT&T-Lizenzen für Unix ihn bei der Arbeit behinderten. Minix selbst gewann nie groß an Bedeutung.

Größtes Manko von Minix waren die durch den Autor beschränkten Erweiterungsmöglichkei­ten im Kernel, so dass z.B. das X-System niemals unter Minix laufen kann.

Es inspirierte jedoch Linus Torvalds zur Arbeit am Linux-Kernel.

Um seinen 386er genauer zu inspizieren, schrieb ein finnischer Student namens Linus Torvalds im Jahr 1991 einige Assemblerroutinen, die schließlich ein minimales Betriebssystem formten.

Linux erblickte das Licht der Welt, und da Torvalds den Sourcecode an interessierte Minixer verschickte, fanden sich bald weltweit Interessenten zusammen, die fortan über das Internet kommunizierten und ihre neuesten Erweiterungen zu Linux verbreiteten.

Datei:Grafik561.png

Von Anfang an stellte Torvalds seine Sources unter die Verantwortung der GPL, so dass diese frei kopiert werden konnten und jedem Interessenten zur Verfügung standen.

Gleichzeitig war man bei der Entwicklung auf Konformität zum POSIX-Standard bedacht, wodurch Linux ohne großen Aufwand auf andere Hardware-Plattformen portierbar wurde.

Entstehung des Linux-Kernels

Datei:.png
Abbildung 1: Linus Torvalds 1991

1991 begann Linus Torvalds in Helsinki mit der Entwicklung des Kernels, der später Linux genannt wurde. Anfänglich war es eine Terminalemulation, die Torvalds zum Zugriff auf die großen UNIX - Server der Universität benutzte.

Er schrieb das Programm hardwarenah und unabhängig von einem Betriebssystem, weil er die Funktionen seines neuen PCs mit einem Prozessor des Typs 80386, dessen Nachfolgerserie x86 auch heute noch zum Standard zählt, optimal nutzen wollte. Als Grundlage dienten dabei das Minix-System und der GNU-C-Compiler.

Irgendwann, so Torvalds in seinem Buch Just for Fun merkte er, dass er eigentlich ein Betriebssystem geschrieben hatte.

Am 25. August 1991 kündigte er in einem Usenet -Posting an die Gruppe comp.os.minix dieses System an. Dieses Usenet-Posting wird an vielen Stellen immer wieder zitiert und dürfte zu den bekanntesten Postings im Usenet zählen.

Am 17. September 1991 wurde Linux in der Version 0.01 das erste Mal öffentlich auf einem FTP-Server zur Verfügung gestellt.

Der Name Linux

Datei:Bild1.png

Eigentlich sollte Linux nach dem Willen von Linus Torvalds Freax heißen, eine Wortschöpfung aus Freak (Verrückter, aber auch jemand, der sich für etwas begeistert), Free für Freie Software und dem oftmals üblichen x in Anspielung auf die Ähnlichkeit zu Unix.

Aus diesem Grund hatte Torvalds zu Beginn seiner Arbeit an dem System etwa ein halbes Jahr lang die Dateien unter Freax abgelegt.

Auch den Namen Linux hatte sich Torvalds bereits überlegt, er erschien ihm aber zu egozentrisch.

Um anderen Leuten die Möglichkeit zu geben, am System mitzuarbeiten oder Verbesserungsvorschläge zu machen, sollten die Dateien im September 1991 auf dem FTP-Server (ftp.funet.fi) der Helsinki University of Technology (HUT) abgelegt werden.

Der damalige Verantwortliche für den Server, Ari Lemmke (Mitarbeiter am HUT), war mit dem Namen Freax nicht einverstanden, er bevorzugte den Arbeitsnamen Linux.

Ohne mit Torvalds darüber zu diskutieren, nannte er den Bereich am Server einfach Linux, was Torvalds schließlich akzeptierte, um große Diskussionen zu vermeiden und auch, wie Torvalds zugibt, weil Linux einfach der bessere Name war.

Im Sourcecode der Version 0.01 von Linux kam noch der Name Freax vor („Makefile for the FREAX-kernel“), später wurde nur noch der Name Linux verwendet. So setzte sich der eigentlich gar nicht geplante Name Linux weltweit durch.

Linux unter der GNU GPL

Torvalds gab Linux zuerst unter einer eigenen, proprietären Lizenz heraus, entschied sich aber später dafür, die GNU GPL den übrigen Urhebern vorzuschlagen.

Im Changelog zur Version 0.12 im Januar 1992 kündigt er die Lizenzänderung an. Die Mitte Dezember 1992 veröffentlichte Version 0.99 ist die erste Version unter der GNU GPL.

Dieser Schritt machte es erst möglich, Linux als freies Betriebssystem zu vertreiben.

Dieses Ereignis zog weltweit viele Programmierer an, die sich an der Entwicklung von Linux und GNU beteiligten.

Später sagte Linus Torvalds in einem Interview, dass die Entscheidung, Linux unter die GNU GPL zu stellen, die beste gewesen sei, die er je getroffen habe: „Making Linux GPL'd was definitely the best thing I ever did.“

GNU/Linux
kürzen

Datei:Bild2.png

Die Bezeichnung Linux wurde von Torvalds anfänglich nur für den von ihm initiierten Kernel genutzt.

Der Kernel wurde aber häufig zusammen mit anderer Software, vor allen der des GNU-Projekts ausgeliefert.

Diese GNU-Variante wurde schnell zur meist genutzten Variante von GNU, da es zu dieser Zeit keinen anderen funktionierenden freien Kernel gab.

Als im Laufe der Zeit der Name Linux auch häufig für diese Softwaresammlungen genutzt wurde, versuchte der Gründer des GNU-Projekts, Richard Stallman, bald, den Namen GNU/Linux durchzusetzen, um der Rolle von GNU eine in seinen Augen angemessene Geltung zu verschaffen.

Im Juni 1994 wurde im GNU’s Bulletin mit „freier UNIX-Klon“ auf Linux verwiesen und im selben Jahr gab das Debian -Projekt seiner GNU/Linux-Distribution den Namen GNU/Linux.

In der Januarausgabe 1995 des GNU’s Bulletin änderten sich die Verweise auf Linux zu GNU/Linux. Im Mai 1996 gab Richard Stallman den Editor Emacs 19.31 heraus, in dem der Systemtyp von Linux nach Lignux umbenannt wurde.

Er meinte, es wäre angemessen, die Begriffe Linux-based GNU system, GNU/Linux system oder Lignux zu benutzen, um auf die Kombination von Linux-Kernel und GNU-Software hinzuweisen.

Er gab jedoch bald den Ausdruck Lignux auf und benutzte nur noch GNU/Linux.

Insgesamt stieß die Forderung auf unterschiedliche Reaktionen. Während das GNU-Projekt und das Debian -Projekt den Namen annahmen, lehnten die meisten Entwickler und anderen Linux-Distributoren dies ab oder widersetzten sich deutlich.

Begründet wurde dies einerseits mit Bequemlichkeit, weil der Name Linux als einfacher angesehen wurde, und andererseits mit dem Hinweis, dass mittlerweile eine beachtliche Menge der mit Linux ausgelieferten Software nicht aus dem GNU-Projekt stamme.

Ein Grund für das Ausbleiben des Begriffs»GNU/Linux«ist sicherlich, dass»Linux«einfach ein deutlich einfacherer, griffigerer Begriff ist. Das System einfach»GNU«zu nennen und den Kernel dabei unter den Tisch fallen zu lassen, traut sich niemand.

Ein weiterer Grund für die weit verbreitete Nutzung des Begriffs»Linux«für das System ist wohl, dass Linus Torvalds es seit der Veröffentlichung 1992 schon immer Linux genannt hatte.

Stallman hingegen meldete seine Forderung nach Namensänderung erst an, nachdem das System bereits populär geworden war.

Das Maskottchen

Datei:Bild3.png

1996 kündigte Torvalds ein Maskottchen für Linux an, es sollte ein Pinguin werden.

Die Bedingungen, die an das Maskottchen gestellt wurden, finden sich unter anderem in Torvalds Biografie Just For Fun:

„Aber Linus wollte keinen x-beliebigen Pinguin. Sein Pinguin sollte glücklich aussehen, so als hätte er grade eine Maß Bier genossen und den besten Sex seines Lebens gehabt.“

Larry Ewing erstellte daraufhin den ursprünglichen Entwurf des heute bekannten Maskottchens.

Den Namen Tux schlug James Hughes als Ableitung von Torvalds Uni X vor.

Ein weiterer Grund für diese Konstruktion ist vermutlich auch, dass die Farben der Pinguine den Eindruck vermitteln, als würden sie einen Smoking tragen, der im Englischen tuxedo heißt.

Community

Datei:Grafik13.png

Der größte Teil der Arbeit an und um Linux wird durch die Community, also durch freiwillige Mitarbeiter auf der ganzen Welt, erledigt.

Diese teilweise auch von Firmen unterstützten oder direkt angestellten Programmierer und Entwickler helfen nicht nur direkt bei der Entwicklung des Kernels, sondern auch beim Schreiben der gesamten Zusatzsoftware, die für und rund um Linux zur Verfügung steht.

Dabei gibt es sowohl die vollständig frei und selbstorganisierten Projekte wie Debian, aber auch die mit Firmen direkt verbundenen Projekte wie Fedora Core und openSUSE.

Die Mitglieder der jeweiligen Projekte treffen bei verschiedenen Konferenzen und Messen zusammen, um sich auszutauschen.

Eine der größten Messen ist dabei der LinuxTag, bei dem jährlich etwa 10.000 Menschen zusammen kommen, um sich über Linux und die darum angesiedelten Projekte zu informieren und auszutauschen.

Open Source Development Labs

Die Open Source Development Labs (OSDL) wurden im Jahr 2000 gegründet und sind eine unabhängige und gemeinnützige Organisation, die das Ziel verfolgt, Linux für den Einsatz in Daten-Centern und im Carrier-Bereich zu optimieren.

Es dient als gesponserte Arbeitsstelle für Linus Torvalds und lange Zeit auch für Andrew Morton, der aber Mitte 2006 zu Google wechselte, in dessen Auftrag er seit dem am Linux-Kernel arbeitet.

Torvalds kümmert sich im Auftrag des OSDL in Vollzeit um die Entwicklung des Linux-Kernels.

Finanziert wird die nichtkommerzielle Einrichtung von namhaften Firmen wie Red Hat, Novell, Mitsubishi, Intel, IBM, Dell und HP.

Streit um Linux

Im Laufe der Jahre musste sich Linux gegen Angriffe von verschiedenen Seiten und auf verschiedenen Ebenen verteidigen. Immer wieder gab es Streit um das System.

Andrew Tanenbaum: „Linux is obsolete“

Datei:.png
Abbildung 2: Andrew S. Tanenbaum

1992 kam es durch einen Usenet-Artikel Andrew S. Tanenbaums in der Newsgroup comp.os.minix mit dem Titel „Linux is obsolete“ zu einer berühmt gewordenen Debatte um die Struktur des Linux-Kernels, in dem der anerkannte Informatiker und Autor des Mikrokernel -Systems Minix Tanenbaum eine ganze Reihe von Kritikpunkten an dem damals noch recht jungen Linux-Projekt anbrachte.

Vor allem kritisierte er * das Design des Kernels als monolithisch und damit als unzeitgemäß

  • die in seinen Augen schlechte Portierbarkeit durch Ausnutzung sämtlicher Funktionen der Intel-386-Prozessoren
  • das liberale Verteilungs- und Entwicklungsmodell der Software, ohne strenge Kontrolle des Quellcodes durch eine einzelne Person
  • den Einbau einer Reihe von Funktionen, die aus Tanenbaums Sicht unnütz waren (so erachtete er ein Dateisystem, das den parallelen Zugriff mehrerer Programme gestattet, als überflüssigen performance hack)


Datei:Grafik151.png

Rückblickend kann man heute sagen, dass Tanenbaum mit seiner Prognose, Linux sei innerhalb weniger Jahre veraltet und durch ein (aus seiner Sicht) modernes GNU Hurd ersetzt, falsch lag.

Linux ist auch auf alle wichtigen Plattformen portiert worden. Das liberale Entwicklungsmodell hat zu einer beispiellosen Geschwindigkeit bei der Weiterentwicklung geführt, GNU Hurd ist immer noch nicht so weit, dass man es auf einem Server einsetzen könnte.

==== Das Buch Samizdat

neuer text aus wiki-artikel
Linux – ein Plagiat?

====

Jahre später wurde Andrew Tanenbaum erneut mit Linux in Verbindung gebracht.

Als Ken Brown sein bis heute nicht erschienenes Buch Samizdat schrieb und deshalb mit Tanenbaum sprach, erklärte dieser, Torvalds habe nicht von ihm abgeschrieben.

In seiner Stellungnahme zu Brown schrieb er einen Abschnitt, der sein Verhältnis zu Linux gut dokumentiert: Natürlich habe Torvalds sein Buch und Minix gekannt.

Microsoft
kürzen

Datei:Grafik17.png

Obwohl es Torvalds nach eigener Aussage nicht interessierte, ob Microsoft (Hersteller u.a. des Betriebssystems Windows) durch Linux in der Vergangenheit in Bedrängnis geriet (1997–2001), wurde von beiden Seiten ein harter Konkurrenzkampf ausgetragen.

Das erste Mal äußerte sich dies deutlich, als Ende Oktober 1998 das erste Halloween-Dokument von Eric S. Raymond an die Öffentlichkeit gebracht wurde.

Dieses von einem Microsoft-Entwickler verfasste Dokument beschäftigt sich ausführlich mit den Gefahren freier Software für Microsoft und zeigt Strategien auf, diesen zu begegnen.

Die Free Software Foundation distanzierte sich von der dadurch ausgelösten Verachtung, die sich speziell auf Microsoft bezog, und erinnerte die Community daran, dass jeder Produzent proprietärer Software den Software-Anwendern schade.

Datei:Grafik61.png

Anfang 2004 erreichte der Konkurrenzkampf eine neue Phase, als Microsoft eine Reihe von in Auftrag gegebenen Studien zum Thema „Windows vs. Linux“ unter dem Namen „Get the Facts“ auf einer eigenen Webseite veröffentlichte.

Die Studien sollten anhand von Umfragen, Erhebungen und Untersuchungen nachweisen, dass sich der Betrieb von Linux auf Servern verglichen mit Windows nachteilig auswirkt.

Die kommerziellen Anbieter von Linux-Software bemühten sich daraufhin, ebenfalls durch Studien, Umfragen und Erfahrungsberichten, Microsofts Kampagne etwas entgegenzustellen.

So hat Novell Ende 2004 eine eigene Webseite unter dem Titel „Die reine Wahrheit“ geschaltet, auf der die Vorteile als auch die rechtliche Sicherheit von Linux hervorgehoben werden.

Im Herbst 2006 kündigten Novell und Microsoft aber an, künftig bei den Themen Interoperabilität und Patentschutz zusammenarbeiten zu wollen.

Im Rahmen der Virtualisierung wurde vereinbart, den Austausch von Office-Dokumenten zu verbessern, die Virtualisierung der Enterprise-Lösungen jeweils unter dem Konkurrenz-Produkt zu vereinfachen, sowie die Eingliederung von Linux- und Windows-Maschinen in eine gemeinsame Directory-Struktur zu vereinfachen.

Der Patentschutz sah gleichzeitig vor, dass Kunden eines Anbieters für die Nutzung dessen Software vom jeweils anderen Anbieter nicht wegen Patentverletzung verklagt werden dürfen.

Dieser Patentschutz wurde auch auf nicht-kommerzielle Freie-Software-Entwickler ausgedehnt. Gerade der letzte Schritt erntete auch Kritik, da er nur nicht-kommerzielle Entwickler mit einschloss.

SCO
aktueller Status?

Datei:.png
Abbildung 3: Logo SCO-UNIX

2003 erhob die Firma SCO schwere Vorwürfe gegen den Weltkonzern IBM: Laut der Darstellung von SCO haben IBMs Linux-Entwickler Code unverändert aus UNIX übernommen und in Linux eingepflegt.

Da SCO für sich die Urheberrechte an UNIX beansprucht und in dem Verhalten von IBM eine Verletzung der eigenen Rechte sieht, wurde eine Klage gegen IBM angestrengt.

Gleichzeitig verkauft SCO seit dem Beginn des Verfahrens Linux-Lizenzen an Nutzer, die keine mögliche Klage von Seiten SCOs riskieren wollen.

Aber auch das Urheberrecht rund um UNIX ist nicht geklärt: Da Novell dieses ebenfalls für sich beansprucht, eröffnete es ein Verfahren gegen SCO.

Markenrecht am Namen
kürzen

1994 und 1995 hatten mehrere Personen in verschiedenen Ländern versucht, den Namen Linux als Markennamen eintragen zu lassen. Daraufhin ergingen an mehrere Linux-Firmen Aufforderungen zu Lizenzzahlungen, womit viele Entwickler und Anhänger des Linux-Systems nicht einverstanden waren.

Linus Torvalds ging mit Hilfe von Linux International gegen diese Eintragungen vor und bekam die Markenrechte der Marke Linux zugeteilt. Diese übergab Torvalds an Linux International, später übernahm diese Arbeit die dafür gegründete, nicht gewinnorientierte Organisation Linux Mark Institute. 2000 legte Linus Torvalds die Grundregeln für die Vergabe der Lizenzen fest.

Diese besagen, dass jeder, der ein Produkt oder eine Dienstleistung mit dem Namen Linux anbietet, eine Lizenz dafür besitzen muss, welche durch einen einmaligen Kauf erlangt werden kann.

Ausnahmen bilden dabei nicht-kommerzielle Verwendungen, die eine kostenlose Lizenz erhalten können oder keine benötigen. Im Juni 2005 kam ein neuer Streit um die Lizenzgebühren für die Benutzung des geschützten Markennamens Linux auf, weil das Linux Mark Institute, welches Linus Torvalds Rechte vertritt, Preise von 5.000 Dollar statt bislang 500 Dollar für die Verwendung des Namens angekündigt hatte.

Begründet wurde der Schritt mit den gestiegenen Kosten für die Durchsetzung der Rechte am Markennamen. In der Community sorgte diese Erhöhung für Unmut und Missverständnisse, weshalb sich Linus Torvalds am 21. August 2005 selbst zu der Thematik zu Wort meldete, um die Wogen zu glätten und die Missverständnisse aufzulösen.

In einer E-Mail erläuterte er ausführlich die aktuelle Situation sowie die Hintergründe und ging auch auf die Frage ein, wer Lizenzkosten zahlen müsse.

Linux-Einsatzbereiche

Linux wurde ursprünglich als Terminal-Emulator für Computer mit einem x86-Prozessor geschrieben. Mit dem wachsenden Erfolg des Programms wurden die Einsatzmöglichkeiten erweitert.

Dieser Artikel gibt einen Überblick über die technischen Einsatzmöglichkeiten von Linux; diese können von Privatpersonen, Unternehmen und auch öffentlichen Einrichtungen genutzt werden.

Linux als Server
Bild

Aufgrund der Verwandtschaft von Linux mit UNIX hat sich Linux auf dem Servermarkt besonders schnell etabliert.

Da für Linux schon früh viel häufig verwendete und benötigte Serversoftware wie Webserver, Datenbankserver und Groupware kostenlos und weitgehend uneingeschränkt zur Verfügung stand, wuchs dort der Marktanteil stetig.

Da Linux als stabil, sicher und einfach zu warten gilt, erfüllt es auch die besonderen Bedingungen, die an ein Server-Betriebssystem gestellt werden.

Der modulare Aufbau des Linux-Systems ermöglicht zusätzlich das Betreiben kompakter, dedizierter Server. Außerdem hat die Portierung von Linux auf verschiedenste Hardware-Komponenten dazu geführt, dass Linux alle bekannten Serverarchitekturen unterstützt.

Marktanteile
aktualisieren

Gemessen am Umsatz wurde der Marktanteil von Linux 2005 bei mit Betriebssystem verkauften Servern je nach Studie und Zählweise auf etwa 12% geschätzt.

Das jährliche Wachstum betrug dabei etwa 35%. Nach Stückzahlen gemessen lag das Wachstum bei 20,5%.

Dieses Wachstum geht teilweise auch auf Kosten traditioneller UNIX-Systeme, die durch Linux abgelöst werden.

Die Firmen, die früher ein eigenes UNIX entwickelt und verkauft haben, verkaufen zunehmend Rechner mit Linux und beteiligen sich immer stärker an der Entwicklung von Linux.

Der größte Konkurrent für Linux auf dem Servermarkt ist Microsoft Windows, das Studien zu Folge 2005 einen Anteil von etwa einem Drittel am Gesamtmarkt hatte.

Die Zählungen der Studien sind aber nur bedingt repräsentativ, da Linux auf beliebigen Geräten installiert werden kann, ohne dass dafür eine Lizenz entrichtet werden muss.

So entsteht eine unbekannte Dunkelziffer an Linux-Servern, die von den Studien nicht erfasst werden.

Einsatzbeispiele

Webserver - LAMP-Systeme

Eines der wohl bekanntesten Beispiele für eine Linux-Server-Konfiguration ist LAMP.

LAMP steht dabei als Abkürzung für den kombinierten Einsatz der Softwareprodukte Linux, Apache, MySQL und PHP (manchmal auch Perl oder Python).

Diese Kombination ermöglicht es, auf einem Computer einen Webserver zu betreiben, der beim Aufruf der Seiten mit dem Webbrowser dynamische Inhalte aus Datenbanken zu generieren, und auch Inhalte wieder in diese Datenbank zu schreiben.

Ein bekanntes Beispiel für einen solchen Einsatz ist die Software MediaWiki, die auf einem LAMP-System läuft.

LDAP

Ein anderer häufiger Einsatzbereich von Linux ist die Nutzung von Samba, oft auch in Verbindung mit einem LDAP-Verzeichnisdienst.

Während der Verzeichnisdienst eine zentrale Anmeldung von Windows- und Linux-Clients ermöglicht, ermöglichen die Fähigkeiten von Samba den Dateiaustausch zwischen Computern mit Linux-Betriebssystemen und Computern mit Windows-Betriebssystemen.

SAMBA

So ermöglicht Samba, in gemischten Netzwerken einen Linux-Rechner als zentralen Datei- und Drucker-Server einzusetzen.

Dabei werden alle wichtigen Dateien an einem zentralen Punkt gespeichert, und so mehreren Nutzern gleichzeitig zur Verfügung gestellt.

Da Samba ebenso wie Linux von seinen Nutzern für seine Stabilität, Performance und Skalierbarkeit gelobt wird, eignet sich die Kombination sehr gut für zentrale und wichtige Knotenpunkte von großen Netzwerken, bei denen eine heterogene Umgebung vorliegt.

Als Beispiel kann das Projekt MigOS des Deutschen Bundestags gelten. Hierbei wurden insgesamt über 100 Server von Windows NT auf Linux umgestellt.

Die etwa 5000 Arbeitsplatzrechner (mit Windows) der Abgeordneten und Verwaltungsangestellten wurden über Samba und OpenLDAP eingebunden.

VOIP

Neben diesen weit verbreiteten Einsatzbereichen gibt es noch eine Reihe weiterer Server-Software, die unter Linux betrieben wird. So wird die Software-Telefonanlage Asterisk häufig als zentrale Schnittstelle in Firmennetzen genutzt.

DNS- und Mailserver

Ebenso werden viele für Netzwerke elementare Dienste auf Linux-Rechnern betrieben. Dazu gehören sowohl DNS-Server als auch Mailserver und Datenbankserver.

Gameing-Server

Interessanterweise werden auch viele Server von Online-Spielen, so genannte Spieleserver unter Linux betrieben, selbst dann, wenn das eigentliche Spiel nicht unter Linux zur Verfügung steht.

Linux am Desktop

Datei:.png
Grafische Benutzeroberfläche KDE

Mit den grafischen Benutzeroberflächen wie KDE oder GNOME bietet Linux im Bereich der Desktops mittlerweile einen vergleichbaren Komfort zu Microsoft Windows oder Mac OS. Umfangreiche Tests der Umgebungen auf Benutzerfreundlichkeit und Effizienz ermöglichen ein Nutzen des Computers ohne besondere Kenntnisse.

Techniken wie Xgl oder AIGLX ermöglichen darüber hinaus hardware-beschleunigte, grafische Effekte auf dem Desktop.

Neben dem wachsenden Angebot proprietärer Software für Linux hat vor allen Dingen die Community das Softwareangebot für Linux stetig vergrößert und in unterschiedlichste Bereiche ausgedehnt:

Mit der Zeit sind immer mehr freie Softwareprojekte entstanden, die von Entwicklungsumgebungen über Businessanwendungen bis hin zu komplexen Multimediaanwendungen reichen.

Die Windows-API-Nachbildung Wine erlaubt es außerdem, mit einer stetig steigenden Anzahl von für Windows geschriebenen Programmen auch unter Linux zu arbeiten.

Die auf den Desktop ausgelegten Distributionen lassen sich einfach installieren, es werden aber auch zunehmend Komplettrechner mit vorinstalliertem Linux ausgeliefert, was der Verbreitung als Einzelplatzsystem Vorschub leistet.

Im Bereich mit Masseninstallationen wie in Firmen oder Behörden hat Linux durch groß angelegte Migrationen z.B. in München oder Wien von sich Reden gemacht.

Der Erfolg eines Desktopsystems wird aber auch durch die Verbreitung von Spielen entschieden.

Einige neue Spiele der großen Spielehersteller kommen auch in Linuxversionen heraus, so stehen z.B. auch id Softwares grafiklastige Spiele Doom 3, Quake 4 sowie die Teile 1 bis 3 der Quake-Reihe für Linux zur Verfügung.

Eine anspruchsvolle Computerinstallation ist der PC als Schreibtischgerät.

Der Benutzer soll mit ihm arbeiten können, ohne sich des technischen Hintergrunds des Systems bewusst sein zu müssen.

Eine typische Installation einer Linux-Distribution enthält einen X11 -Grafikserver sowie eine Desktopumgebung und wichtige Anwenderprogramme.

Dazu gehören sowohl Office-Programme wie OpenOffice.org, als auch Programme zur Bildbearbeitung (häufig Gimp), Browser und E-Mail-Programme.

Bei Installationen für Firmen und Büros kommen noch andere Programme wie zum Beispiel zur Unternehmensplanung hinzu. Für Entwickler gibt es Entwicklerwerkzeuge wie Eclipse oder KDevelop.

Marktanteile
aktualisieren

In der Praxis wird Linux eher zögerlich im Desktop-Bereich eingesetzt.

Die Verbreitung kann wegen der kostenlosen und dezentralen Verfügbarkeit nur schwer abgeschätzt werden.

Zahlen liegen dementsprechend kaum vor, einer Erhebung zufolge lief Linux aber auf 2,8% aller 2002 verkauften Rechner.

Die Gründe für die geringe Verbreitung werden kontrovers diskutiert.

So wird häufig das faktische Monopol des Betriebssystems Windows und die daher notwendige Umgewöhnung der Benutzer auf ein neues System genannt.

Als Grund wird häufig genannt, dass das Installieren von Software aus Dritt-Quellen oft schwerer zu handhaben sei als beispielsweise unter Windows.

Datei:.png
GNOME-Desktop mit Epiphany, Nautilus und „Datei öffnen“-Dialog
Grafische Oberflächen

KDE K Desktop Environment
GNOME GNU Network Object Model Environment
TWM Tab Window Manager
VTWM Virtual Tab Window Manager
CDE Common Desktop Environment

Heutzutage sind viele übliche Funktionen des Systems über intuitive Benutzeroberflächen administrierbar, einige Funktionen zur Feinabstimmung sind vergleichsweise umständlich zu handhaben.

Aus diesem Grund wird bei der Weiterentwicklung der direkten Schnittstelle mit dem Nutzer, der Desktopumgebung, immer mehr Wert auf eine benutzer- und einsteigerfreundliche Gestaltung gelegt.

Datei:Grafik8111.png

Die beiden größten Desktopumgebungen für Linux, GNOME und KDE, haben dafür Richtlinien erstellt, die von jedem Programm und jeder Funktion eingehalten werden sollten, um dem Benutzer ein einheitliches Erscheinungsbild und Bedienkonzept (Look & Feel) zu bieten.

Da die Richtlinien beider Desktops voneinander abweichen, erscheinen Programme der einen Umgebung in der anderen Umgebung fremdartig.

Diesem Problem soll durch Standardisierung und Zusammenarbeit der Projekte begegnet werden. Am bekanntesten ist hier die Initiative freedesktop.org. Auch die Linux Standard Base hat eine eigene Projektgruppe, die LSB Workgroup, ins Leben gerufen.

Hier liegt der Schwerpunkt in der Schaffung verlässlicher Standards für Entwickler grafischer Programme für Linux-Desktops. Andere Projekte kümmern sich auch um Einzelbereiche, dazu gehört z.B. das Tango!-Projekt, welches ein einheitliches

Datei:Grafik8211.png

Aussehen durch Gestaltungsrichtlinien und die Verwendung einheitlicher Icons (Schaltflächen) zu erreichen versucht.

Projekte wie Xgl oder AIGLX bemühen sich außerdem darum, mit Hilfe von Composition Managern hardwarebeschleunigte 3D-Effekte auf den Desktop zu bringen, und diesen so noch ansprechender zu gestalten.

Um die Entwicklung und auch die Verbreitung von Linux auf dem Desktop voran zu bringen, hat sich in der Linux Foundation die The Desktop Linux Working Group gebildet, die alle Kräfte bündeln und koordinieren soll, die sich mit der Thematik beschäftigen.

Multimedia

Datei:.png
Ein Programm zum Abspielen von Audiodateien: amaroK

Die Multimediaunterstützung wird je nach Nutzerbedarf- und verhalten unterschiedlich bewertet. Der Umgang mit gängigen Musik-Formaten ist kein Problem.

Es existiert eine Reihe von weit entwickelten Musik-Abspielprogrammen unter Linux, die neben der Unterstützung verschiedener Musik-Formate noch mit einer ganzen Reihe komfortabler Extras aufwarten können.

Ein bekanntes Beispiel für ein auf KDE-Bibliotheken basierendes Multimedia-Programm ist dabei Amarok.

Die Unterstützung von aktuellen, auf Desktop-Computern verbreiteten Video-Techniken ist jedoch noch lückenhaft, da LinDVD, die einzige uneingeschränkt legale Unterstützung von verschlüsselten DVDs, kostenpflichtig, closed source und nur als OEM-Produkt (zusammen mit Hardware) erhältlich ist.

So können Probleme mit verschlüsselten DVDs durch Einsatz von DeCSS leicht umgangen werden, dies ist aber in einigen Staaten, so auch in Deutschland, verboten, oder die rechtliche Lage ist unklar. Ebenso gibt es auch keine Linux-Version der beiden weit verbreiteten Multimediaprogramme QuickTime Player und Microsoft Windows Media Player.

Auf der anderen Seite gibt es von ebenfalls weit verbreiteten Programmen wie dem RealPlayer und dem VideoLAN -Player Linux-Versionen. Hinzu kommen einige in erster Linie für Linux programmierte Softwareprojekte, die die vorhandenen Lücken schließen.

Zu nennen sind hier vor allem die Programme MPlayer und Xine, die es auch ermöglichen, Videos in Formaten wie WMV, ASF und ähnlichen abzuspielen, wofür teilweise Windows- Programmbibliotheken eingesetzt werden.

Das Abspielen von DRM-geschützten Audio- und Videodateien ist unter Linux bei den meisten Formaten oft nur in Ausnahmefällen möglich.

Eine deutlich andere Situation zeigt sich im Bereich professioneller Multimedia-Bearbeitung. Mit dem JACK Audio Connection Kit steht unter Linux eine spezielle Sound-Architektur zur Verfügung, die besonders niedrige Latenzzeiten bietet.

Sie wird von Programmen wie Ardour genutzt. In der Filmbranche erfreut sich Linux besonderer Beliebtheit: die Spezialeffekte vieler Filme wurden mit Hilfe von Linux-Rechnerverbünden gerendert. So hat beispielsweise das häufig unter Linux eingesetzte Programm CinePaint bei der Erstellung von Filmen wie den Harry Potter -Verfilmungen geholfen.

Zwischen diesen verschiedenen Situationen ist der Übergang aber fließend. Mit der zunehmenden Entwicklung proprietärer Lösungen auch für Linux ist aber davon auszugehen, dass die vorhandenen Lücken in naher Zukunft geschlossen werden.

Ein Beispiel ist der Bereich des Videoschnitts, bei dem es sowohl proprietäre Lösungen wie das Programm MainActor der Firma MainConcept gibt, als auch Lösungen der Freie Software -Bewegung wie z.B. die Software Kino oder Cinelerra, das für professionelle Hardware ausgelegt ist.

Desktop-Migration

Einige Verwaltungen und Unternehmen erwägen eine Umstellung ihrer Arbeitsplatzrechner von verschiedenen Plattformen zu Linux-Desktops.

Ein bekanntes Beispiel dafür sind die Stadtverwaltungen von Wien und München, die viele ihrer Computer auf die dafür angepassten Distributionen Wienux und Limux umgestellt haben, und der Auto-Hersteller Citroën, der 20.000 Desktops auf Linux umgestellt hat.

Schwierigkeiten entstehen meist dadurch, dass im Unix -Bereich ein völlig anderer Softwaremarkt herrscht.

Bekannte Programme gibt es für diese Plattform oft nicht bzw. werden von anderen, bislang unbekannten Herstellern unter unbekannten Namen herausgegeben und sind oftmals nicht komplett mit der bestehenden Lösung kompatibel.

So kann die technische Umstellung der Zusatzsoftware teuer werden, andererseits müssen sich viele Benutzer auch erst an die neue Desktopumgebung gewöhnen, was eventuell zeit- und kostenintensiv werden könnte.

Ein lohnender Zeitpunkt für eine Umstellung der Firmendesktops ist daher, wenn ohnehin auf ein neues Betriebssystem mit all seinen Neuerungen in der Ablauflogik umgestellt werden muss, da der Hersteller seine alte Version oder den Support dafür aufgekündigt hat.

Die Umgewöhnung eines Sachbearbeiters von Windows NT 4.0 auf Windows XP ist etwa vergleichbar mit der Umgewöhnung von Windows NT 4.0 auf den KDE-Desktop unter Linux.

Da eine Umrüstung auf eine aktuelle Windows-Version sehr oft auch den Kauf neuer Hardware erfordert, setzen viele Institutionen verstärkt auf eine Thin Client -Lösung mit Linux, bei der die rechenintensiven Aufgaben nicht mehr von den Arbeitsplätzen, sondern von zentralen Servern erledigt werden.

Auf diese Weise erspart man sich große Teile eines sonst fälligen Hardware-Updates.

Unterstützung von Windows-Anwendungen

Da sich Linux in der Betriebssystemarchitektur stark von unterscheidet, ist es nicht direkt möglich, Windows-Programme unter Linux zu betreiben. In diesen Fällen bieten sich verschiedene Alternativen an:

Plattformübergreifende Programmierung

Viele Programme aus der Freie-Software-Szene sind für mehr als nur eine Plattform verfügbar.

So gibt es z.B. von den populären Programmen OpenOffice.org, Mozilla Firefox oder auch Gimp Versionen sowohl für Linux als auch für Windows.

Windowsprogramme für Linux

Eine Reihe proprietärer Programme stehen unter Linux zur Verfügung. Gerade im Bereich der wissenschaftlichen Software gibt es viele Programme für beide Plattformen.

Beispiele dafür sind Programme wie MATLAB, Mathematica oder Maple.

Portierung

Bestehende Windows-Programme können auf die Linux-Plattform portiert werden. Dies ist üblicherweise nur ein geringer Programmieraufwand, da lediglich Eigenheiten des Betriebssystems angepasst werden müssen.

Trotzdem ist diese Lösung oft sehr teuer und die Möglichkeit einer Portierung hängt auch von der Firmenpolitik des jeweiligen Softwareherstellers ab.

Eine Portierung ergibt insbesondere dann Sinn, wenn es sich um speziell für den Unternehmens- oder Verwaltungszweck entwickelte Software handelt, oder wenn es auch andere Firmen gibt, die an einer Portierung interessiert sind.

Mittlerweile gibt es auch schon Werkzeuge des WINE -Projekts, die eine automatisierte Softwareportierung ohne großen Programmieraufwand ermöglicht, wodurch man auch in den Genuss einer nativen Lösung für Linux kommt.

Emulation

WINE stellt eine auf Linux übersetzte Variante der Windows-API zur Verfügung.

Damit können einige Programme direkt unter Linux laufen.

Obwohl diese Varianten kein gesamtes Windows-System emulieren, ist diese Lösung manchmal langsamer (manchmal aber auch schneller) und weniger Erfolg versprechend als eine Portierung.

Mit kommerziellen Softwarepaketen, die auf Wine aufbauen, lassen sich aus der Windows-Welt bekannte Programme fast problemlos nutzen.

Dabei bietet CrossOver Unterstützung für zahlreiche Bürosoftware wie Microsoft Office und Adobe Photoshop an, während sich Cedega auf Windows-Spiele spezialisiert hat.

Virtualisierung

Eine weitere Möglichkeit ist der Einsatz einer virtuellen Maschine wie VMware, Bochs oder QEMU, die einen gesamten PC emuliert und es möglich macht, Microsoft Windows darin komplett zu installieren.

Dabei leidet allerdings die Geschwindigkeit deutlich. Auch wird einer der entscheidenden Vorteile einer Migration, die Herstellerunabhängigkeit, so wieder ausgehebelt.

Dualboot

Linux und Windows können parallel auf einem Rechner installiert werden.

Über einen Bootmanager wie zum Beispiel Grub oder Lilo kann ein Nutzer beim Systemstart entscheiden, welches System er starten will.

Damit kann man bei einem Neustart einfach ein anderes Betriebssystem wählen.

Remote-Desktop

Weiterhin besteht die Möglichkeit, Windows-Programme auf einem Windows-Server zu starten und deren grafische Ausgabe mit Hilfe von Remote-Desktop -Software wie z.B. NX oder rdesktop (für RDP) auf Linux Clients ausgeben zu lassen.

Dieses Verfahren erfordert eine ständig bestehende Netzwerkverbindung zwischen beiden Rechnern, ermöglicht aber auch die Weiternutzung betagter Hardware als Thin Clients.

.NET mit Mono

Mit Hilfe der .NET -Implementierung Mono ist es möglich, Programme, die mit Microsofts neuester Programmplattform.NET entwickelt wurden, ohne Portierarbeit direkt unter Linux zu starten.

DOS-Emulation
Datei:.png
Die DOSBox

Bauen die Programme noch auf der DOS -Ebene auf, so lassen sich viele mit dem Programm Dosemu betreiben.

Für DOS-Spiele bietet sich dabei auch DOSBox an. Auch für andere Spielkonsolen und Betriebssysteme gibt es unter Linux Emulatoren.

Umstieg auf Linux-Programme

Für viele Funktionen gibt es unter Linux eigene Programme.

Wenn also ein Programm nicht unter Linux verfügbar ist, so ist meist aber die Funktion in einem anderen Programm verfügbar.

Beispiele dafür sind Programme wie Kontact, Novell Evolution und Konqueror.

Eigene Programme schreiben

Zumindest theoretisch besteht die Möglichkeit, selbst als Programmierer ein Programm zu schreiben, das die benötigten Funktionen enthält.

Da viele freie Oberflächenbibliotheken zur Verfügung stehen, die ohne Lizenzgebühren genutzt werden können, und in den meisten Linux-Distributionen viele Softwareentwicklungswerkzeuge beigefügt sind, bietet sich einem Programmierer eine sehr programmierfreundliche Umgebung.

Der meisten der hier aufgeführten Lösungen sind auf diesem Weg entstanden oder angestoßen worden.

Unterstützung von Menschen mit Behinderungen

Um unter Linux Barrierefreiheit zu gewährleisten, arbeiten mehrere Projekte an der Thematik.

Während die beiden großen Desktops, Gnome und KDE, jeweils eigene Projektgruppen haben, die sich mit der Thematik beschäftigen, gibt es auch Arbeitsgruppen innerhalb der Distributoren oder Gruppen, die Projekt- und Firmenübergreifend arbeiten. Am bekanntesten ist hierbei die FSG Accessibility Workgroup.

Die Arbeit dieser Projekte ermöglicht es unter anderem, unter Linux Braillezeilen zu nutzen, sich aus vielen Programmen

Dokumente und Geschriebenes vorlesen zu lassen oder auf dem Bildschirm nur mit Maus oder nur mit speziellen Tasten zu navigieren.

Hardware

Die Hardware, auf der Linux als Server betrieben werden kann, ist vielfältig.

Da Linux auf eine Vielzahl von Plattformen portiert wurde, kann ein Linux Server ebenso auf handelsüblichen PCs wie auch auf klassischen Serverarchitekturen, wie Alpha oder SPARC betrieben werden.

Ein Beispiel für die Linux-Unterstützung auch modernster Server-Hardware ist der IBM eServer p5. Diese Familie von 64-Bit Servern basiert auf IBM POWER -CPUs, und gehört zu den Schwergewichten der verfügbaren Server-Hardware.

Auf dieser Hardware können mehrere Linux-Installationen parallel gestartet und betrieben werden, um so bis zu 256 gestartete Linux-Systeme parallel betreiben zu können.

IT-Sicherheit

Die Gründe für die Bewertung von Linux als sicheres System sind verschieden und hängen von dessen Aufgaben ab.

So verfügt Linux als Desktop-System über eine strenge Unterteilung der Zugriffsrechte, die bei anderen verbreiteten Desktop-Systemen im Normalfall nicht eingehalten wird.

Dies führt unter anderem dazu, dass viele Funktionsprinzipien verbreiteter Würmer und Viren bei Linux nicht greifen können, beziehungsweise nur den ausführenden Benutzer, jedoch nicht das ganze System kompromittieren können.

Bisher traten nur zwei Viren unter Linux auf, Staog und Bliss.

Im Vergleich zu anderen Desktop-Systemen hat Linux die erste größere Verbreitung bei Nutzern mit einem sehr technischen und sicherheitsbewussten Umfeld erfahren.

Die Entwicklung geschah somit, verglichen mit anderen verbreiteten Desktop-Systemen, unter den Augen eines sehr sicherheitskritischen Publikums.

Im Gegensatz zu Desktop-Systemen hängt die Sicherheit bei Serversystemen primär vom Grad der Erfahrung der Administratoren mit dem System selbst ab.

Linux punktet dabei durch die freie Verfügbarkeit, die es Administratoren ermöglicht, das System ohne Mehrkosten in verschiedensten Testszenarien zu installieren und dort ausgiebig zu untersuchen.

Zudem gibt es eine Reihe von speziell gehärteten Linux-Distributionen, welche besonderen Wert auf Sicherhheitsapsekte legen.

Initiativen wie SELinux bemühen sich dort um das Erfüllen hoher Sicherheitsstandards.

Vorteilhaft ist, dass Linux nicht auf eine Hardware-Architektur festgelegt ist.

Würmer und Viren können sich immer nur auf dem Teil der Linux-Systeme verbreiten, auf deren Hardware sie zugeschnitten sind. Hinzu kommt, dass Linux quelloffene Software ist.

Jeder kann also den Quellcode studieren, untersuchen und anpassen.

Dies führt unter anderem auch dazu, dass der Quelltext (sei es zum Zwecke der Anpassung, zum Zwecke der Schulung, aus dem Sicherheitsinteresse einer Institution oder eines Unternehmens heraus oder aus privatem Interesse) von mehr Menschen studiert wird, als dies bei proprietären Programmen der Fall sein kann.

Technische Fähigkeiten

Vom technischen Gesichtspunkt her verfügt Linux über viele Fähigkeiten, die eine sicherheitstechnisch anspruchsvolle Umgebung erfordert.

Dazu gehört sowohl eine einfache Nutzer- und Gruppenrechteverwaltung mittels Role Based Access Control, wie auch eine komplexere Rechteverwaltung mit Hilfe von Access Control Lists.

Zusätzlich implementieren viele aktuelle Distributionen auch Mandatory-Access-Control-Konzepte mit Hilfe der SELinux/AppArmor-Technik.

Ebenso bietet fast jede Linux-Distribution auch eine Secure-Shell-Implementierung, mit der verschlüsselte und deswegen sichere Verbindungen zwischen Computern gewährleistet werden können.

Andere Verschlüsselungstechnologien wie Transport Layer Security werden ebenfalls voll unterstützt.

Im Rahmen der Verschlüsselung für auf Medien gespeicherte Daten steht das Kryptographie-Werkzeug dm-crypt zur Verfügung, das eine Festplattenverschlüsselung ermöglicht.

Es bietet dabei die Möglichkeit der Verschlüsselung nach aktuellen Standards wie dem Advanced Encryption Standard. Transparente Verschlüsselung, bei der nur einzelne Dateien statt ganzer Festplatten verschlüsselt werden, stellen die Verschlüsselungserweiterung EncFS oder das Dateisystem ReiserFS zur Verfügung.

Zu den Sicherheitszertifikaten, die im Zusammenhang mit Linux erworben wurden.

Großrechnern

Mit der freien Verfügbarkeit des Quellcodes und der daraus resultierenden Möglichkeit, das System bestimmten Zwecken anzupassen, hat sich Linux auch in den Anwendungsbereichen von Rechenzentren ausgebreitet.

So macht Linux auf Großrechnern, die auf Zuverlässigkeit und hohen Datendurchsatz optimiert sind und häufig in Banken, Versicherungen und großen Unternehmen gefunden werden können, dem dort früher häufig installierten speziellen UNIX-Versionen zunehmend Konkurrenz.

Computercluster

Eine weitere Anwendung ist im Bereich der Computercluster zu finden, bei dem Linux, häufig im Zusammenhang mit Grid-Computing, auf den einzelnen Computern arbeitet, die dann zu großen Netzwerken zusammengeschlossen werden.

Dafür stehen neben speziell angepassten Linux-Distributionen auch besondere Dateisysteme wie z.B. das Global File System zur Verfügung.

Häufig wird auch ein Linux-Cluster genutzt, um damit die Hochverfügbarkeit unternehmenskritischer Netzwerk-Infrastrukturen sicherzustellen.

Supercomputer

Der wohl prestigeträchtigste Einsatz von Linux ist der in Supercomputern. Diese Computer stellen die Spitze aktueller Hochleistungsrechner dar, und ernten aus diesem Grund meist besondere Aufmerksamkeit der Presse.

Eine im Juni 2006 veröffentlichte Studie der 500 schnellsten Supercomputer zeigte, dass über 70% mit Linux betrieben wurden.

Als ein Beispiel sei hier der MareNostrum -Supercomputer genannt, der in Spanien unter anderem in der Klima- und Genforschung eingesetzt wird und unter Linux läuft.

Embedded Linux

Datei:.png
Sharp Zaurus SL-5500 mit dem Linux-basierten OpenZaurus und der Oberfläche OPIE

Der Begriff Embedded Linux bezieht sich auf den Einsatz von Linux in kleineren Endgeräten für den Massenmarkt wie in Mobiltelefonen oder PDAs.

Vorteil ist dabei, dass jeder Hersteller Linux auf der einen Seite nach eigenen Bedürfnissen verändern kann, auf der anderen Seite aber auch eine sehr aktive Entwicklergemeinschaft vorherrscht, auf deren Ressourcen (z.B. umfangreiche Entwickler-Programmen, bereits bestehender Code wie die Benutzeroberflächen OPIE oder GPE Palmtop Environment, Erfahrung, etc.) die Hersteller dabei zurückgreifen können.

Unterstützung finden viele Hersteller dabei bei eigens zu diesem Zweck gegründeten Foren, die Anleitungen, Programme und beispielhaften Programmcode zur Verfügung stellen, und sich um eine Standardisierung der Schnittstellen bemühen.

So hat das OSDL am 17. Oktober 2005 die Gründung der Mobile Linux Initiative bekannt gegeben, welche die Verbreitung von Linux im Markt für mobile Geräte beschleunigen soll.

Auch das gemeinnützige Consumer Electronics Linux Forum bemüht sich, Linux als Plattform für mobile Endgeräte zu verbreiten und die Zusammenarbeit zwischen den Firmen, die Mitglied im Forum sind, zu forcieren.

Technisch gesehen werden diese Geräte meist mit spezialisierten stromsparenden Prozessoren und einem Flash-Speicher ausgestattet.

Dort wird dann ein angepasstes und kompaktes Linux betrieben. Beispiele für Hardware, auf der heutzutage Linux eingesetzt wird, sind die Motorola Mobiltelefone A728, A760, A768, A780, A910, E680, E895, das Nokia 770 Internet Tablet und der Sharp Zaurus PDA, im Bereich SOHO einige Router von Linksys und WLAN -Geräte wie das 4G Access Cube.

Auch in vielen Festplattenrekordern, Satellitenreceivern und DVD-Abspiel- und Aufnahmegeräten findet sich häufig eine angepasste Linux-Variante.

PDA - Distributionen

* Familiar Linux
  • GPE Palmtop Environment
  • Maemo
* Mobilinux
  • OpenZaurus
  • OPIE
* Poky Linux
  • Qtopia

Elektronik

Neben der Nutzung von Linux in verbreiteten Kommunikationsgeräten wird es auch in elektronischen Steuerungen und Geräten der Mess - und Regelungstechnik und im Bereich der µC (Microcontroller) eingesetzt.

Im Unterschied zum Embedded Linux wird das System in diesem Fall für technische Spezialanwendungen eingesetzt.

Damit entfällt auf der einen Seite der Massenmarkt, auf der anderen Seite besteht zum Beispiel aber auch weniger Bedarf an einer benutzerfreundlichen und einfach gehaltenen Oberfläche.

Die Struktur von Linux

Datei:Grafik24.png
Schichten und Schalen
neues Bild

Zur Verdeutlichung der Zusammenarbeit verschiedener Komponenten in einem Rechnersystem wird oft ein Schalenmodell verwandt.

Dabei werden die einzelnen Komponenten in Form von Schalen oder Schichten dargestellt. Die Grenze zwischen den einzelnen Schalen werden dabei als Schnittstellen bezeichnet.

Shells

Die Dialogsschnittstelle zur Kommunikation mit dem Benutzer (zeichenorientiert) wird dabei als Shell bezeichnen. Shell unter UNIX haben dabei zwei Funktionen, sie werden als# Kommandointerpreter und

  1. Skriptsprache

verwendet. Die zweite Funktion ist unter UNIX bedeutend, da die Verwaltung des Betriebssystems mit Shell-Skripten erfolgt.

Angelehnt an verschiedene Programmiersprachen sind unterschiedliche Shells entwickelt worden.

sh Bourne Shell an die Programmiersprache ALGOL 68 angelehnt
csh C-Shell an die Programmiersprache C angelehnt
ksh Korn-Shell vereinigt Bourne- und C-Shell
bash Bourne-Again-Shell (Erweiterung der Bourne Shell) Standart unter Linux

Eine Shell ist dabei nichts anderes als jedes andere UNIX-Programm, nur das dieses Programm direkt nach der Anmeldung gestartet wird. Diese Shell nennt man daher auch „Login-Shell“.

Mit den oben genannten Kommandos ist es möglich aus der Login-Shell heraus eine weitere beliebige Shell aufzurufen und mit exit wieder zu verlassen.

Neben der Shell gibt es eine große Zahl von UNIX-Kommandos und Tools. Diese unterscheiden sich von Anwendungsprogrammen nur dadurch, dass sie im Lieferumfang des UNIX-Systems enthalten sind. Das eigentlich Betriebssystem jedoch ist der Kernel.

Systemkomponenten im Überblick

Grafische Benutzeroberflächen

Basierend auf X11

Datei:Grafik771.pngDatei:Grafik74.png

Datei:Grafik84.png

Datei:Grafik44.png


Datei:Grafik80.png
Datei:Grafik73.png

Xming

Xming ist eine Implementierung eines X-Servers für Windows. Der Xming-Server basiert auf dem X.Org-Server und wird mit MinGW sowie Posix-Threads kompiliert. (Xming basiert nicht auf der Cygwin-Emulation, ist also nicht mit Cygwin/X zu verwechseln.)

Xming kann mit SSH-Implementierungen wie PuTTY genutzt werden, so dass X11-Sitzungen verschlüsselt von entfernten Unix-Maschinen laufen können. Das Xming-Paket umfasst keine eigenen X-Clients.

Datei:Grafik79.png

www.straightrunning.com/XmingNotes

Systemeigenschaften von Linux

32- oder 64-bit Abhängig von der Computer-Architektur
Multi-User Viele Benutzer können gleichzeitig auf derselben Maschine arbeiten
Multi-Plattform Linux läuft auf vielen verschiedenen Prozessoren
Multi-Processing SMP (Symmetric Multi-Processing) für bis zu 256 Prozessoren
Cluster Cluster von beliebiger Grösse
Geschützter Speicher Prozesse können nicht das ganze System zum Absturz bringen
Nachladbare Programmteile Programme, die bestimmte Teile nur nachladen, wenn sie wirklich gebraucht werden
Virtueller Speicher Mit Paging (Teile von Prozessen können auf die Festplatte ausgelagert werden)
Freier Speicher wird in einem Pool verwaltet der sowohl Programme als auch Disk-Cache bedient: der gesamte freie Speicher kann zum Cachen verwendet werden
dynamisch gelinkten Bibliotheken Statische Bibliotheken können selbstverständlich auch verwendet werden
kompatibel mit Unix (POSIX, System V und BSD) Der Unix98-Standard wird ebenfalls angestrebt
POSIX-kompatible Job-Kontrolle Realtime Scheduling ist ebenfalls möglich
nicht fragmentierende Dateisysteme (Extended 2) mit langen Dateinamen (255 Zeichen) und Partitionen von bis zu 4 Terabyte. Es unterstützt Hard- und Softlinks
Dateisysteme mit Journaling Stehen zur Auswahl. unter anderem Ext3, ReiserFS, JFS und XFS
Unterstützt zahlreiche Dateisysteme Unter anderem VFAT / FAT32, Windows NT / NTFS, MacOS / HFS, QNX, BSD 4.3 ufs, Coda und Amiga / AFFS
virtuelle Konsolen
Quellcode Eingeschlossen der ganze Kernel und (fast) alle Treiber
Schnell Sogar richtig schnell! Wahrscheinlich der schnellste TCP/IP-Stack der Welt
Gute Hardware-Unterstützung Dazu gehören auch Sound-, Ethernet-, ATM-, Appletalk-, TV-, ISDN- und Multiport-Karten, Joysticks etc
Viele Netzwerk-Protokolle wie TCP/IP Versionen 4 und 6, IPX/SPX, Token-Ring, Ethertalk, Appletalk etc
Netzwerk-Funktionen wie Masquerading (NAT), Tunneling, Forwarding, Routing, Firewalling etc

Linux-Distributionen

Datei:Grafik83.png

Vor der ersten Installation steht der Linux-Neuling vor der Wahl einer so genannten Distribution.

Prinzipiell ist das Aufsetzen eines Linuxsystems auch aus den Quellen möglich (Linux from the scratch). Neben Zeit und Erfahrung erfordert das Vorgehen allerdings auch eine gewisse Experimentierfreude und ist für den Neu- oder Umsteiger keinesfalls zu empfehlen.

Eine Linux - Distribution ist eine Zusammenstellung von hauptsächlich freier Software zum Zwecke der Weitergabe oder des kommerziellen Vertriebs. Die Distributionen enthalten neben dem eigentlichen Linux-Kernel noch weitere Software, um so den jeweiligen Ansprüchen an das Gesamtsystem besser gerecht zu werden.

Im praktischen Einsatz werden meist sogenannte Linux-Distributionen genutzt, in denen verschiedene Software zu einem fertigen Paket zusammengestellt ist. * Jede Distribution enthält somit Linux beziehungsweise den Linux-Kernel.

  • Allerdings passen viele Distributoren und versierte Benutzer den Betriebssystemkern mehr oder weniger für ihre Zwecke an.
  • Linux wird vielfältig und umfassend eingesetzt, beispielsweise auf Desktop-Rechnern, Servern, Mobiltelefonen, Routern, Netbooks, Multimedia-Endgeräten und Supercomputern.
  • Dabei wird Linux unterschiedlich häufig genutzt:
  • So ist Linux im Server-Markt wie auch im mobilen Bereich eine feste Größe, während es auf dem Desktop bisher nur eine geringe Rolle spielt.
  • Ebenfalls spielt die wirtschaftliche und geographische Lage einer Region eine wichtige Rolle. So planen vorrangig südamerikanische Schwellenländer den verstärkten Einsatz von Linux.[1][2]
  • Im praktischen Einsatz werden meist sogenannte Linux-Distributionen genutzt, in denen verschiedene Software zu einem fertigen Paket zusammengestellt ist.
  • Jede Distribution enthält somit Linux bzw. den Linux-Kernel.
  • Es gibt eine Vielzahl von Linux-Distributionen, aber für die aktuellen Kernel 2.2.x, 2.4.x und 2.6.x jeweils nur eine stabile, eine aktiv gepflegte und eine weiter entwickelte Version – nebenbei wird der (stabile) 2.6.16er-Zweig noch gepflegt und es werden Patches für vorhergehende Versionen bereitgestellt.
  • Allerdings passen viele Distributoren und versierte Benutzer den Kernel mehr oder weniger für ihre Zwecke an. Letztere nennen diese Prozedur umgangssprachlich „einen Kernel backen“.
  • Die Einsatzbereiche von Linux sind vielfältig und umfassen unter anderem die Nutzung auf Desktop-Rechnern, Servern, Mobiltelefonen, Routern, Multimedia-Endgeräten und Supercomputern. Dabei variiert die Verbreitung von Linux in den einzelnen Bereichen drastisch.
    So ist Linux im Server-Markt eine feste Größe, während es auf dem Desktop bisher nur eine geringe Rolle spielt. Ebenfalls spielt die wirtschaftliche und geographische Lage einer Region eine wichtige Rolle. So planen vorrangig südamerikanische Schwellenländer den verstärkten Einsatz von Linux.

Entstehung einer Distributionen

Datei:Grafik55.png

Geschichte

Datei:Grafik69.png

Nach der Veröffentlichung des Linux-Quelltextes durch Linus Torvalds wurden verschiedene Programme für Linux angepasst, um das System zu erweitern.

Da Linux von Anfang an nur als Kern eines Systems geplant war und bis heute als solcher weiterentwickelt wird, bestand von Beginn an der Bedarf an zusätzlichen Programmen für Linux, um z. B. eine grafische Oberfläche zu erhalten oder auch nur um das System einfacher zu konfigurieren und zu steuern.

Aus diesem Grund kamen die ersten Linux-Distributionen schon kurz nach der Veröffentlichung von Linux auf, als Anwender, die nicht zum direkten Entwicklerkreis gehörten, Linux zu nutzen begannen.

Die ersten Distributionen hatten dabei das Ziel, das System z. B. mit der Software des GNU-Projekts zu einem arbeitsfähigen Betriebssystem zu entwickeln.

Zu ihnen gehörten MCC Interim Linux, welches auf den FTP-Servern der University of Manchester im Februar 1992 veröffentlicht wurde, TAMU, das von einigen Programmierern der Texas A&M University etwa zum gleichen Zeitpunkt erstellt wurde und Softlanding Linux System (SLS).

Da keine dieser Distributionen richtig gepflegt wurde, veröffentlichte Patrick Volkerding am 16. Juli 1993 die Distribution Slackware .

Sie ist die älteste heute noch aktive Linux-Distribution.

Durch die Linux-Distributionen erweiterten sich die Einsatzmöglichkeiten von Linux drastisch.

Es entwickelte sich zunehmend zu einer interessanten Alternative von proprietären Systemen wie UNIX, Microsoft Windows und Mac OS .

Die ersten Nutzer kannten UNIX von der Arbeit oder aus der Schule und hatten dementsprechende Vorkenntnisse.

Sie schätzten Linux wegen der Stabilität und der Tatsache, dass sie kein Geld bezahlen mussten, wegen des Umfangs der beiliegenden Software und wegen der Möglichkeit, das System wegen der offenen Quellen eigenen Bedürfnissen anzupassen.

Waren die ersten Distributionen nur der Bequemlichkeit halber geschaffen worden, sind sie doch heute die übliche Art für Nutzer wie auch Entwickler, ein Linux-System zu installieren.

Dabei werden die Linux-Distributionen heutzutage sowohl von Entwickler-Gruppen, als auch von Firmen oder gemeinnützigen Projekten entwickelt und betrieben.

Bestandteile

Datei:Grafik711.png

Die Zusammensetzung einer üblichen Linux-Distribution für den Desktop-PC umfasst zum Beispiel: * Linux-Kerneldie Basis grundlegende Systemfunktionen

  • GNU -Softwaregrundlegendes BasissystemKommando-zeilenwerkzeugen
  • KommandozeileninterpreterShell
  • X-Window-SystemBasis für grafische Benutzeroberflächen
  • Desktop oder Windowmanagerals grafische Benutzeroberflächeerlaubt eine komfortable Bedienung in X-Window-System
  • Anwendungsprogramme Office-Pakete, Editoren, E-Mailprogramme, Browser, Server -Software, Bildbetrachter /-bearbeiter und viele mehr
  • Konfigurationsprogrammeum das System eigenen Bedürfnissen anzupassen, Software zu installieren und Hardware einzurichten
  • Entwickler-Werkzeuge Compiler oder Interpreter für Programmiersprachen
  • Softwareprogrammen und -bibliothekenDienste und Funktionalitäten, die von anderen Programmen genutzt werden
  • Boot-Managerzum Starten des installierten Systems und eventueller anderer installierter Systeme

Dabei werden die meisten Distributionen in Form fertiger CD-Images im Internet bereit gestellt. Einige Distributoren verpacken ihr Angebot aber auch mit gedruckten Handbüchern oder Supportverträgen, und bieten diese kombinierten Angebote zum Verkauf an.

Aktuelle Distributionen

Viele, vor allen Dingen kleine Distributionen, werden von kleinen Projekten oder auch Einzelpersonen gewartet und entwickelt, die sich meist über das Internet koordinieren und austauschen.

Größere Distributionen haben in den meisten Fällen eine Stiftung gegründet, um die Arbeit besser und gezielter verwalten und geschlossener auftreten zu können.

Diese Stiftungen werden teilweise von Firmen unterstützt oder sind direkt von ihnen gegründet worden, um die Gemeinschaft der Entwickler besser an der Entwicklung der firmeneigenen Distribution zu beteiligen.

Der Einsatzbereich der Distribution kann dabei sehr unterschiedlich sein, und reicht vom Desktop-PC über Server-Installationen und Distributionen mit speziellen Netzwerkfähigkeiten bis hin zu Live-CDs oder Distributionen für Mobiltelefone, die jeweils einen ganz unterschiedlichen Funktionsumfang haben können.

Live-Systeme

Datei:Grafik70.png

Eine Besonderheit bilden dabei die Live-Systeme, die von CD, DVD und anderen Medien gebootet werden.

Diese werden von extra darauf ausgerichteten Distributionen oder von bestehenden Distributionen als Zusatz zu den Installationsdatenträgern erstellt.

Live-Systeme können als vollständiges Linux gestartet werden, ohne auf die Festplatte zu schreiben und ohne die bestehende Konfiguration eines Rechners zu verändern.

So kann die entsprechende Linux-Distribution gefahrlos auf einem Computer getestet werden.

Livesysteme eignen sich auch hervorragend zur Datenrettung und Systemanalyse, da sie von der Konfiguration des bereits bestehenden Systems unabhängig sind, und so auch von möglichen Infektionen durch Würmer und Viren nicht betroffen werden können.


Datei:Grafik67.png

Datei:Grafik85.png

Auswahl einer Distribution

Mögliche Auswahlkriterien

Installationsverhalten Tools zur Installation, z.B. Partitionierungstools
Enthaltene Software Welche Software -Pakete werden beigelegt und verwendet (z.B. welche grafische Benutzeroberflächen werden beigelegt und wie gut werden sie von der Distribution vorkonfiguriert)?
Verwaltungswerkzeuge Welche Werkzeuge werden eingesetzt, um das System leichter verwaltbar zu machen?
Handbücher Wie sieht es mit vorhandener Literatur (z.B. in Form von Handbüchern) aus?
Support Gibt es offiziellen Support seitens des Distributors, in welchem Umfang und zu welchen Konditionen (Preisen)?
Distributionspolitik Wie sieht die Distributionspolitik aus, zu der auch gehört, ob kommerzielle Software beigelegt/verwendet wird?
Community oder Kommerziell Wird die Distribution in einem Projekt von Freiwilligen, von einer Firma oder gar von beiden gemeinsam entwickelt?
Zertifizierte Software Wird die Distribution offiziell von kommerziellen Software-Anbietern unterstützt? Gibt es z.B. die bevorzugte Firmensoftware für diese Distribution?
Community Auch kann die Größe, Hilfsbereitschaft und Kenntnisse der Nutzergemeinschaft von Distribution zu Distribution erheblich variieren.
Weitere Software Angebot der bereits von Drittanbietern an die Distribution angepassten und für diese fertig verpackten Software

Kompatibilität zwischen den Distributionen

Schon kurz nach dem Aufkommen der ersten Distributionen kamen verschiedene Ideen auf, wie die Installation von weiterer Software vereinfacht werden könnte.

Dabei war das Ziel meist, die wichtigste Software bereits in Form fertiger, kompilierter Pakete bereit zu stellen und zusätzlich einen Mechanismus zur Verfügung zu stellen, der Abhängigkeiten weiterer für die Funktion des zu installierenden Pakets unabdingbare Pakete auflösen kann.

Aus diesem Bedarf heraus sind verschiedene Paketmanagement -Systeme entstanden, die mit jeweils eigenen Paketformaten wie zum Beispiel RPM oder deb arbeiten.

Dadurch hat nahezu jede Linux-Distribution eine eigene Softwareverwaltung mit eigenen Binärpaketen, die zu den Binärpaketen der anderen Distributionen teilweise inkompatibel sind.

Da aber nicht jedes Software-Projekt und nicht jeder Software-Entwickler die Kenntnisse und die Ressourcen hat, seine Software für jede Linux-Distribution einzeln bereitzustellen, wird diese meist nur im Quelltext veröffentlicht.

Dieser ist aber nicht so einfach zu installieren, so dass normale Computer-Nutzer selten Software neben der von der Distribution mitgelieferten installieren.

Dies ist zugleich auch einer der größten Kritikpunkte vieler Nutzer an Linux, bzw. an den Linux-Distributionen.

Außerdem können so viele kommerzielle Softwareanbieter ihre Software nur unter bestimmten Distributionen anbieten, was dazu führt, dass nur bestimmte Distributionen im Firmenumfeld eine Chance haben.

Um zu verhindern, dass sich die einzelnen Distributionen mit fortschreitender Entwicklung noch weiter von einander entfernen, wurde die Free Standards Group ins Leben gerufen, die das Ziel hat, die binäre Interoperabilität zwischen den verschiedenen Distributionen zu ermöglichen.

Unter ihren verabschiedeten Standards gibt es die Linux Standard Base, welche übereinstimmende Binärschnittstellen („ ABI “ genannt, für Application Binary Interface ), einige Details zum inneren Aufbau und ein Paketsystem (hier RPM ), das für die Installation von Drittanbieter-Software unterstützt werden muss definiert.

Des Weiteren gibt es mit dem Filesystem Hierarchy Standard auch einen Dateisystem-Standard, der eine gemeinsame Benennung einiger Datei- und Verzeichnisnamen und eine übereinstimmende Struktur der Basisverzeichnisse ermöglicht und auch von der Linux Standard Base vorausgesetzt wird.

Zur Zeit werden diese Standards von den meisten Distributoren aber nur halbherzig umgesetzt, selbst wenn die Distributoren Mitglied bei der Stiftung sind.

Die Situation verbessert sich langsam, da sich die kommerziellen Distributionen mehr an die LSB Standards annähern. Des Weiteren gibt es zwar auch andere Lösungsansätze wie Autopackage oder Klik, diese haben aber derzeit faktisch keine Relevanz.

Linux und Windows

Die meisten Linux-Distributionen können neben bestehenden Installationen anderer Betriebssysteme installiert werden. Beim Start gibt dann der Boot-Manager eine Auswahl, aus der der Nutzer das zu startende Betriebssystem wählt.

Es gibt aber auch Linux-Distributionen, die innerhalb einer Windows -Sitzung oder innerhalb einer Windows- Partition verwendet werden können.

Dabei werden sie unter Windows wie gewöhnliche Software installiert und entweder über einen Boot-Loader in Windows gebootet oder wie ein herkömmliches Windows-Programm gestartet.

Solche Distributionen sind in der Regel für Probe- und Testzwecke gedacht oder werden als technische Machbarkeitsstudie entwickelt.

Da bei diesen Distributionen Windows und Linux gleichzeitig laufen, sind diese Distributionen vergleichsweise langsam. Ein weiterer Nachteil ist die meist recht geringe Paket- bzw. Programmauswahl.

Verschiedene Distributionen

Grundlegende generelle Informationen über die Distributionen (Hersteller/Firma, Lizenz/Preis, etc.):

Hersteller Erste Version Vorgänger Preis bevorzugte Lizenz Zielgruppe
Ark Linux Ark Linux Projekt Januar 2003 Debian kostenlos GPL Desktop, Workstation, Server, Windows users
Debian Debian Projekt August 1993 Keiner kostenlos jede DFSG -freie v. A. stabilitätsbetonte Server
Fedora Core Fedora Projekt November 2003 Red Hat Linux kostenlos GPL Server, Home Desktop, Enthusiasten
Gentoo Linux Gentoo Foundation, Inc. März 2002 Enoch kostenlos GPL Desktop, Server, Enthusiasten
Mandriva Mandriva Juli 1998 Red Hat Linux kostenlos (Download Edition) GPL Home-Desktop, Server, Unternehmens-Desktop, Linux-Neulinge
Slackware Linux Patrick Volkerding Juli 1993 SLS kostenlos GPL Server, Home-Desktop, Enthusiasten
SUSE Linux Novell März 1994 Slackware kostenlos (Download Edition) GPL Linux-Neulinge, Home-Desktop, Server
Ubuntu Canonical Ltd Oktober 2004 Debian kostenlos jede DFSG -freie Home-Desktop, Linux-Neulinge, Server ab 6.06 auch Unternehmen
Knoppix Klaus Knopper März 2002 Debian kostenlos jede DFSG -freie Home-Desktop, Linux-Neulinge

Technik

Informationen zu technischen Aspekten der Distributionen:

Standard Dateisystem andere Architekturen Aktualisierung Paketmanagement
Ark Linux ext3 ext2, ext3, JFS, XFS, FAT, NTFS, ISO 9660, UDF, NFS, ReiserFS x86 APT dpkg und APT
Debian ext3 ext2, ext3, JFS, XFS, FAT, NTFS, ISO 9660, UDF, NFS, ReiserFS x86, IA64, PPC, SPARC, Alpha, MIPS, ARM, PA-RISC, 68k, S/390 APT dpkg und APT
Fedora Core ext3 ext2, ReiserFS, JFS, XFS, FAT, ISO 9660, UDF, NFS x86, x86-64, PowerPC yum RPM, yum
Gentoo Linux Benutzer- definiert Benutzerdefiniert (alle optional) x86, x86-64, IA64, PPC, PPC64, HPPA, SPARC64, Alpha emerge Portage
Mandriva ext3 ext2, ext3, JFS, XFS, FAT, NTFS, ISO 9660, UDF, NFS, ReiserFS x86 (ab i586), x86-64, PPC rpmdrake  /  urpmi rpmdrake  /  urpmi
Slackware ext3, ext2, ReiserFS ext2, ext3, JFS, XFS, FAT, NTFS, ISO 9660, UDF, NFS, ReiserFS x86, IA64, S/390 SlackPkg installpkg und upgradepkg
SUSE Linux ReiserFS ext2, ext3, JFS, XFS, FAT, NTFS, ISO 9660, UDF, NFS x86, IA64, x86-64, PPC, S/390 YaST2 RPM, YaST2
Ubuntu ext3 ext2, ext3, JFS, XFS, FAT, NTFS, ISO 9660, UDF, NFS, ReiserFS x86, x86-64, PPC Synaptic dpkg und APT
Kubuntu ext3 ext2, ext3, JFS, XFS, FAT, NTFS, ISO 9660, UDF, NFS, ReiserFS x86, x86-64, PPC Adept Adept

Eingesetzte Software

Die meisten Distributionen installieren standardmäßig nur bestimmte Software.

Die hier in den Tabellen angegebene Software bezieht sich also auf den Standard der jeweiligen Distribution - andere Software gleicher Funktion kann meist problemlos nachinstalliert werden.

Dateimanager Desktopumgebung Fenstermanager GUI Styling
Ark Linux Konqueror KDE KWin Plastik Theme
Debian kein Standard (alle optional) kein Standard (alle optional) kein Standard (alle optional) kein Standard (alle optional)
Fedora Core Nautilus GNOME Metacity Clearlooks Theme
Gentoo Linux kein Standard (alle optional) kein Standard (alle optional) kein Standard (alle optional) kein Standard (alle optional)
Mandriva Konqueror KDE KWin Mandrakegalaxy Theme
Slackware Konqueror KDE KWin Plastik Theme
SUSE Linux Nautilus oder Konqueror GNOME oder KDE Metacity oder KWin Plastik Theme
Ubuntu Nautilus GNOME Metacity Human Theme
Kubuntu Konqueror KDE KWin Plastik Theme
X-Server (falls eingesetzt) Office Suite Personal Information Management Instant Messenger Browser
Ark Linux X.Org-Server OpenOffice.org Kontact Kopete Konqueror
Debian XFree86 kein Standard (alle optional) kein Standard (alle optional) kein Standard (alle optional) kein Standard (alle optional)
Fedora Core X.Org-Server OpenOffice.org Evolution Gaim Mozilla Firefox
Gentoo Linux X.Org-Server kein Standard (alle optional) kein Standard (alle optional) kein Standard (alle optional) kein Standard (alle optional)
Mandriva X.Org-Server OpenOffice.org Kontact Kopete Konqueror
Slackware X.Org-Server kein Standard (alle optional) kein Standard (alle optional) Gaim Mozilla Firefox
SUSE Linux X.Org-Server OpenOffice.org Evolution oder Kontact Gaim oder Kopete Mozilla Firefox
Ubuntu X.Org-Server OpenOffice.org Evolution Gaim Mozilla Firefox

Quellen

  • "The Top Ten Distributions" distrowatch.com
  • Auswahlhilfe für eine passende Linux-Distribution (englisch) Linux Distribution Chooser www.zegeniestudios.net/ldc/

Freie Software und Lizenzierung

Seit den 50er Jahren dominierte IBM mit seinen Mainframes (Großrechnern) den Hardwaremarkt.

Man kann Parallelen zu heutigen Ereignissen sehen... zumindest missbrauchte auch damals IBM seine Vormachtstellung und diktierte das Geschehen rund um Hard- und Software.

Die Konsequenz war, dass nahezu jede Hardware und nahezu jedes Stück Programm aus der firmeneigenen Schmiede stammte und andere Anbieter keinen Fuß in diesem Marktsegment fassen konnten.

Auch damals schob erst das Gesetz einen Riegel vor die Machenschaften von IBM. Im so genannten Antitrust-Gesetz wurde IBM 1972 in eine Hardware- und eine Softwarefirma aufgeteilt.

Die Phase gilt als der eigentliche Beginn der Ära der Softwareindustrie.

Was ist „Freie Software?

Freie Software ist Software, die für jeden Zweck ausgeführt, untersucht, modifiziert und in ursprünglicher oder modifizierter Form weiterverbreitet werden darf.

Das schließt auch die kommerzielle Nutzung ein. Freie-Software-Lizenzen können eine Copyleft-Klausel enthalten, die besagt, dass bearbeitete und wiederveröffentlichte Versionen der Software ebenfalls frei sein müssen.

Aber auch die BSD-artigen Lizenzen, die kein Copyleft erfordern, sind Freie-Software-Lizenzen.

Freier Software steht die unfreie und/oder proprietäre Software gegenüber, die diese Freiheiten nicht oder nicht in vollem Umfang bietet. Diese Unterscheidung wurde von der Free Software Foundation (FSF) geprägt.

Die Free Software Foundation definiert Software als Freie Software, wenn ihre Lizenz folgende Freiheiten einräumt:

Freiheit 0:
Das Programm zu jedem Zweck auszuführen.
Freiheit 1:
Das Programm zu untersuchen und zu verändern.
Freiheit 2:
Das Programm zu verbreiten.
Freiheit 3:
Das Programm zu verbessern und diese Verbesserungen zu verbreiten, um damit einen Nutzen für die Gemeinschaft zu erzeugen.

Für die Freiheiten (1) und (3) ist der Zugang zum Quelltext Voraussetzung, da sonst das Verändern eines Programms schwierig bis unmöglich ist. Sind eine oder mehrere dieser Bedingungen nicht erfüllt, wird die Software als proprietär oder „unfrei“ bezeichnet.

Freeware

In der englischen Sprache bedeutet free nicht nur „frei“, sondern auch „kostenlos“ oder „kostenfrei“.

Englischsprachige Entwickler und Aktivisten machen die Unterscheidung mit Free as in Freedom („Frei wie in Freiheit“) und free as in free beer („frei wie Freibier“) deutlich.

Bei Freie Software (engl. Originalausdruck: free software) bezieht sich „frei“ auf die erste Definition, auf die Freiheiten für den Nutzer der Software.

Zu den garantierten Freiheiten gehört auch, freie Software zu einem beliebigen Preis verkaufen zu dürfen. Freie-Software-Lizenzen beinhalten eine Copyleft-Regelung (auch: share alike), das heißt, die Freiheiten dürfen bei der Verbreitung der Software nicht eingeschränkt werden.

Freeware hingegen bezieht sich auf die zweite Bedeutung, „kostenlos“.

Diese Software räumt dem Benutzer nicht die von der Free Software Foundation aufgelisteten Freiheiten ein, sondern die der individuellen Lizenzvereinbarung mit dem Urheber. Daher gilt sie als „unfreie“ Software.

Open Source

Der Begriff Open Source (zu deutsch „quelloffen“) wurde von Eric S. Raymond, Bruce Perens und Tim O’Reilly, Gründer der Open Source Initiative (OSI), eingeführt.

Sie glaubten, dass das unangenehme Thema Freiheit potentielle Geldgeber für entsprechende Projekte abschrecken könnte.

In der Darstellung der Open-Source-Bewegung wird die Freiheit, die freie Software den Benutzern gibt, daher nicht erwähnt. Sie betont, dass Open Source zu besserer und preisgünstigerer Software führt als geschlossene, proprietäre Konstruktionen. Die Free Software Foundation hingegen meint, dass proprietäre Software allein schon aus moralischen Gründen abzulehnen sei, selbst wenn sie besser als quelloffene wäre.

Software soll transparent und überprüfbar sein. Richard Stallman von der FSF lehnt die Bezeichnung Open Source und den dahinterstehenden Standpunkt grundsätzlich ab. Dennoch arbeiten Anhänger beider Lager bei Projekten zusammen.

Auch ist die GNU GPL die beliebteste Lizenz selbst bei Projekten, die von Open-Source-Anhängern dominiert werden. Alternative Kompromissbezeichnungen wie „Free/Libre Open Source Software“, die von Anhängern beider Positionen (einschließlich Richard Stallman) akzeptiert werden, sollen diese Gemeinsamkeiten betonen.

Der Begriff „Open-Source-Software“ scheint mit der Betonung der Überlegenheit des Entwicklungsprozesses eher aus Sichtweise der Entwickler wiederzugeben, während der Begriff „Freie Software“ auch die Sicht der Anwender einbezieht.

In ihren konkreten Forderungen an Softwarelizenzen unterscheiden sich die beiden Bewegungen ebenfalls kaum: „Open Source“ bezieht sich darauf, dass der Quellcode eines Programmes offenliegt.

Nicht nur das Programm wird verbreitet, sondern auch der Quellcode, auf Grundlage dessen das Programm erstellt wurde.

Wer den Quellcode kennt, kann ihn, wie bei Freie Software, untersuchen („studieren“), ändern und neue Programme daraus generieren. Das Bekanntsein des Quellcodes ist wichtig dafür, dass Software frei verbreitet werden kann.

Bisweilen wird zwar auch Software, deren Quellcode nur eingesehen, aber nicht verändert oder weitergegeben werden darf, als „Open Source“ vermarktet. Dies entspricht jedoch nicht der Open Source Definition der OSI.

Halbfreie Software

Aus Angst vor kommerzieller Ausnutzung oder amoralischem Gebrauch der eigenen Software gab und gibt es Bestrebungen, nicht alle Freiheiten aus der Definition freier Software in seiner Lizenz zu gewähren.

Die Programmierer des Amiga-Emulators WinUae z. B. ärgerten sich darüber, dass das Unternehmen Cloanto den Emulator in einer Kollektion mit diversen Spielen und Hilfsprogrammen als Amiga Forever Pack für ungefähr 60 Dollar verkaufte.

Die eMule-Entwickler sahen sich mit Unternehmen wie 3PO Web-Invest konfrontiert, die eine neue proprietäre Version (eMcrypt-Emule) erstellten und kommerziell vertrieben, die sich vom Original nur durch hinzugefügte Spyware unterschied.

Solche Vorfälle führen zu Erwägungen eines Modells, das die Freiheiten der freien Software um die kommerzielle Weiterverbreitung vermindert (aber die sonstigen unverändert beibehält).

Von der FSF wird so etwas als halbfreie Software (semi-free software) abgelehnt.

Lizenzmodelle

Der simple Vergleich versucht die gängigsten Lizenzmodelle unter Aspekt ihrer Nutzungsbedingungen gegenüber zu stellen.

»Nichts kosten« besagt allerdings nur, dass die Software kostenlos erhältlich ist, es sagt nichts über die Folgekosten während der Nutzung aus

Kostetnichts Unbeschränkte Nutzungsdauer Quellenverfügbar Ableitungen stets frei Ableitung fällt unter dieselbe Lizenz
Kommerziell
Shareware teils
Freeware x x
BSD-Lizenz x x x
Künstlerische Lizenz x x x
Gnu LGPL x x x x
Gnu GPL x x x x x

GPL und LGPL

Die Gnu General Public License und Gnu Library General Public License unterscheiden sich nur in Details. So soll nur auf erstere genauer eingegangen und die Änderungen bez. der Software-Bibliotheken im Anschluss kurz genannt werden.

Das Wesen beider, von der Free Software Foundation in Leben berufener Lizenzformen offenbart sich schon in den einleitenden Worten: Lizenzen der meisten Softwareprodukte zielen darauf ab, dem Nutzer die Freiheit der Verbreitung und Änderung der Software zu nehmen.

Im Unterschied hierzu ist die GNU-General Public License eine Garantie der Freiheit, freie Software auszutauschen und zu teilen - um zu sichern, dass diese Software für alle Nutzer frei ist.

Kernaussagen der GPL

Geltungsbereich Ihr Geltungsbereich erstreckt sich auf alle Programme, deren Entwickler den Copyright-Hinweis ausdrücklich zu diesem hinzugefügt haben, sowie auf alle Programme, die Teile eines GPL-Programms enthalten.
Kopierbarkeit Programme sind frei kopierbar, jeder Kopie ist der Text der GPL beizulegen. Die Kosten für den Kopiervorgang dürfen erhoben werden.

Der Quelltext des Programms muss mit der Kopie nicht vertrieben werden, jedoch ist jedem Interessenten Zugang zu diesem zu gewähren (für eine Zeitdauer von mindestens 3 Jahren ab Vertrieb).

Modifzierbarkeit Die Modifzierbarkeit ist gewährleistet, wobei jede Änderung im Quelltext zu kennzeichnen ist (Datum und Grund der Änderung, Name des Programmierers).

Ein Programm, das Teile aus GPL-Software enthält, unterliegt damit automatisch der GPL. Dies gilt nicht für klar abtrennbare Programmteile, die vollständig ohne GPL-Code implementiert sind.

Diese können anderen Lizenzbedingungen unterstehen.

Haftungsausschluss Der Urheber des Programms trägt keine Verantwortung für die Korrektheit der Software und muss für eventuelle Schäden durch den Betrieb dieser nicht aufkommen.

Nach den obigen Bestimmungen wäre es unmöglich, basierend auf einer GPL-Softwareumgebung kommerzielle Software zu entwickeln, da z.B. unter Linux bereits die Compiler und Bibliotheken reine GPL-Software sind.

Die LGPL definiert folgende Erweiterungen

Geltungsbereich Die entstehende Software muss selbst eine Bibliothek sein.

Wird innerhalb einer Bibliotheksfunktion aus Teile eines Nicht-GPL-Anwendungsprogrammes zurückgegriffen, so muss sicher gestellt sein, dass die Bibliothek auch ohne dieses Programms korrekt arbeitet.

Ein Programm, das mit Teilen einer LGPL-Bibliothek gebunden wurde, unterliegt der LGPL.

Lizenz- Hinweise Um die LPGL anstelle der GPL zu benutzen, müssen entsprechende Hinweise in die Software aufgenommen werden
Definition Ein Werk, das die Bibliothek benutzt ist ein Programm, das weder abgeleitete noch andere Teile einer Bibliothek besitzt, aber so hergestellt wurde, dass es durch Compilieren und Binden mit der Bibliothek mit dieser zusammen arbeitet.

Ein solches "Werk" fällt nicht unter die Lizenz.

In gewissem Umfang dürfen in Software Teile aus GPL-Programmen verwendet werden, ohne dass das entstehende Werk der Lizenzbedingung unterliegt

Ableitungen Enthält eine Bibliothek sowohl Funktionen, die auf GPL-Software basieren, als auch eigene Funktionen, so muss der Quelltext der unter die GPL-Lizenz fallenden Funktionen für jedermann zugänglich sein.

BSD Lizenz

Die BSD-Lizenz beinhaltet keinerlei Einschränkungen für den Gebrauch und die Weiterverbreitung von Quellcode und Programmen. Einzig einen Copyright-Hinweis, die BSD-Lizenzbedingungen selbst und ein Garantieausschluss sind dem Werk beizulegen.

Außerdem darf in einem abgeleiteten Werk nicht mit dem Namen des ursprünglichen Entwicklers geworben werden, es sei denn, dieser erklärt sich ausdrücklich damit einverstanden.

Linux-Kernel

Datei:Grafik20.png

Ein Betriebssystemkern oder Systemkern (engl. kernel [ ˈkɝːnəl ]) ist der zentrale Bestandteil eines Betriebssystems.

In ihm ist die Prozess- und Datenorganisation festgelegt, auf der alle weiteren Softwarebestandteile des Betriebssystems aufbauen.

Die Konstruktion eines stabilen Betriebssystemkerns ist eine Aufgabe aus den Bereichen der Informatik und des Softwareengineerings.

Gängige Anforderungen an einen Systemkern sind Parallelverarbeitung verschiedener Aufgaben (Multitasking), Einhaltung zeitkritischer Grenzen, Offenheit für unterschiedlichste Anwendungen und Erweiterungen.

Ein bekanntes Beispiel für einen Kernel ist der Linux-Kernel, von Linus Torvalds 1991 erstellt und seitdem als Open-Source -Projekt weltweit weiterentwickelt.

Nicht zum Systemkern gehörende Teile werden als Userland bezeichnet.

Grundlegende Technologie

Die Bezeichnung Linux wurde von Linus Torvalds anfänglich nur für den Kernel genutzt, der Software eine Schnittstelle zur Verfügung stellt, mit der sie auf die Hardware zugreifen kann, ohne sie genauer zu kennen.

Der Linux-Kernel ist ein in der Programmiersprache C geschriebener monolithischer Betriebssystemkern, wichtige Teilroutinen, sowie zeitkritische Module sind jedoch in Assembler programmiert.

Der Kernel ermöglicht es, nur die für die jeweilige Hardware nötigen Treiber zu laden, weiterhin übernimmt er auch die Zuweisung von Prozessorzeit und Ressourcen zu den einzelnen Programmen, die auf ihm gestartet werden.

Bei den einzelnen technischen Vorgängen orientiert sich das Design von Linux stark an seinem Vorbild Unix.

Der Linux-Kernel wurde zwischenzeitlich auf eine sehr große Anzahl von Hardware-Architekturen portiert.

Das Repertoire reicht von eher exotischen Betriebsumgebungen wie dem iPAQ-Handheld-Computer oder gar Digitalkameras bis hin zu Großrechnern wie IBMs System z und neuerdings auch Mobiltelefonen wie dem Motorola A780.

Trotz Modulkonzept blieb die monolithische Grundarchitektur erhalten.

Die Orientierung der Urversion auf die verbreiteten x86-PCs führte früh dazu, verschiedenste Hardware effizient zu unterstützen und die Bereitstellung von Treibern auch unerfahrenen Programmierern zu ermöglichen.

Die hervorgebrachten Grundstrukturen beflügelten die Verbreitung.

Aufgaben eines Kernels

Ein Kernel hat die folgenden Aufgaben:

Schnittstelle zu Anwenderprogrammen (Starten, Beenden, Ein-/Ausgabe, Speicherzugriff)
Kontrolle des Zugriffs auf Prozessor, Geräte, Speicher (Scheduler, Gerätetreiber, Speicherschutz). Möglichst alleiniger Zugriff des Kernels auf diese Ressourcen.
Verteilung der Ressourcen etwa der Prozessorzeit(en) (bzw. der Prozessoren) auf die Anwenderprogramme
Strukturierung der Ressourcen, etwa Abbildung von Dateisystemen auf blockorientierte Geräte wie Festplatten, Netzwerkprotokollstapel auf Netzwerkkarten.
Auflösung von Zugriffskonflikten etwa Verriegelung bei Mehrprozessorsystemen, Warteschlangen bei knappen Ressourcen
Virtualisierung der Ressourcen Prozessor: Prozesse, Festplatte: Dateien, Netzwerkkarte: z.B. Sockets, Speicher: virtueller Speicher, Geräte: Spezialdateien
Überwachung von Zugriffsrechten auf Dateien und Geräte bei Mehrbenutzersystemen

Bestandteile des Kernels

Datei:.png
Bestandteile des Kernels

Ein Systemkern ist in Schichten (oder Layer s. Schichtenmodell) aufgebaut, wobei die unteren (maschinennäheren) Schichten die Basis für die oberen (maschinenferneren) Schichten bilden.

Die oberen Schichten können die Funktionen der unteren Schichten aufrufen, aber nicht umgekehrt.

Folgende Schichten sind vorhanden (von unten nach oben): * Schnittstelle zur Hardware (Geräte, Speicher, Prozessoren)

  • Speicherverwaltung (evtl. einschließlich virtuellem Hauptspeicher)
  • Prozessverwaltung (auch Scheduler genannt)
  • Geräteverwaltung (auch Device Management genannt)
  • Dateisysteme

Wenn alle diese Funktionen im Systemkern selbst vorhanden sind, spricht man von einem monolithischen Kernel. Bei einem Mikrokernel finden wesentliche Teile in getrennten Prozessen statt. Daneben, bzw. zwischen den beiden liegend, gibt es noch den so genannten Makrokernel.

Auf jeden Fall außerhalb des Kernels laufen die Anwenderprozesse, die sich der vom Kernel angebotenen Funktionen bedienen, um mit der Maschine zu kommunizieren.

Datei:Grafik58.png

Prozesse

Zur Realisierung eines Betriebssystems wird oft das Konzept eines Prozesses (oder auch einer Task) verwendet. Ein Prozess enthält (mindestens) einen Registersatz des Prozessors und kann über den Scheduler angehalten und wieder gestartet werden.

Jeder Prozess hat daneben kontrollierten Zugriff auf einen Teil des Speichers sowie Ein- und Ausgabekanäle, die auf Dateien oder Geräte zugreifen. Mit dem Kernel kommuniziert er über Systemaufrufe.

Ein Anwenderprogramm läuft normalerweise in genau einem, in Ausnahmefällen auch in mehreren Prozessen. Auch manche Systemdienste laufen innerhalb von Prozessen.

Initialisierung

Beim Starten eines Computers wird nach einem eventuellen Hardwarecheck und einer teilweisen Geräteinitialisierung der Kernel in den Speicher geladen und gestartet. Er initialisiert die Geräte vollständig und startet den ersten Prozess.

Bei einfachen Systemen wie MS-DOS ist dies ein Kommandozeileninterpreter, bei Mehrprozesssystemen ein bestimmter Prozess (bei Linux/Unix init), der die Systemdienste (als Prozesse) lädt und wieder, evtl. nach Eingabe von Namen und Passwort, einen oder mehrere Kommandointerpreter oder eine graphische Benutzeroberfläche als Prozesse startet.

Danach übernimmt er mit Hilfe der Systemaufrufe das Starten/Stoppen von weiteren Prozessen (Anwenderprogrammen) sowie die Zuteilung von Speicher und Ein-/Ausgabekanälen auf die einzelnen Prozesse.

Kernel-Arten

Können auf einem Kernel mehrere Prozesse gleichzeitig laufen, spricht man von Multitasking-Kerneln. In Wirklichkeit wird jedoch immer nur ein Prozess von der CPU behandelt (außer bei Mehrkernsystemen).

Diesen Wechsel regelt in den meisten Fällen der Scheduler. Wird ein Multitasking-Kernel durch eine Zugriffsverwaltung auf Prozesse und Geräte ergänzt, erhält man ein Multiuser-(oder Mehrbenutzer-)System. Hierauf können mehrere Benutzer gleichzeitig arbeiten.

Jeder Benutzer muss sich einloggen (Authentifizierung).

Der Kernel teilt jedem Prozess einen Benutzer zu, jeder Benutzer kann jedoch mehrere Prozesse besitzen. Abhängig vom Benutzer werden Prozessrechte eingeschränkt.

Der Kernel ist für die Separation der Prozesse und damit der Benutzer zuständig.

Obwohl heutige Desktopsysteme in der Regel nur von einem Benutzer gleichzeitig verwendet werden, sind sie als Mehrbenutzersystem ausgelegt.

Dies nicht nur deswegen, weil dann mehrere Nutzer mit jeweils eigenen Präferenzen das System verwenden können. Zusätzlich werden die Systemdienste unter anonymen Benutzern gestartet.

Jedem Systemdienst und jedem Benutzer können dadurch eigene, eingeschränkte Zugriffsrechte eingeräumt werden, die für die Arbeit nötig sind. Die Systemsicherheit wird dadurch drastisch erhöht.

Programmiersprache

Linux ist fast komplett in der Programmiersprache C geschrieben, wobei einige GNU -C-Erweiterungen benutzt werden.

Eine Ausnahme bilden die architekturabhängigen Teile des Codes (im Verzeichnis arch innerhalb der Linux- Sourcen), wie z.B. der Beginn des Bootvorganges, die in Assemblersprache geschrieben sind.

Funktionsweise

Bei einem strikt monolithischen Kernel wird der gesamte Quellcode inklusive aller Treiber in das Kernel-Image (den ausführbaren Kernel) kompiliert.

Im Gegensatz dazu kann Linux Module benutzen, die während des Betriebs geladen und wieder entfernt werden können.

Damit wird die Flexibilität erreicht, um unterschiedlichste Hardware ansprechen zu können, ohne sämtliche (auch nicht benötigte) Treiber und andere Systemteile im Speicher halten zu müssen.

Sind Teile der Hardwarespezifikationen nicht genügend offen gelegt, so stützt sich Linux notfalls über spezielle VM86-Modi auch auf das BIOS des Systems, u.a. auf die Erweiterungen gemäß den Standards APM, ACPI und VESA.

Um unter diesen Voraussetzungen x86 -kompatible Hardware z.B. auf der DEC - Alpha -Plattform zu betreiben, werden teilweise sogar Emulatoren zur Ausführung entsprechenden ROM - Codes verwendet.

Linux selbst übernimmt das System beim Bootprozess typischerweise in dem Moment, wo der BIOS - Bootloader erfolgreich war und alle Systeminitialisierungen des BIOS abgeschlossen sind.

Der Kernel ist ein Betriebssystemkern und darf nicht als das eigentliche Betriebssystem verstanden werden.

Dieses setzt sich aus dem Kern und weiteren grundlegenden Programmen (die den Computer erst bedienbar machen) zusammen.

Architektur

Datei:.png
CPU-Ausführungsringe

Linux ist ein monolithischer Kernel. Die Treiber im Kernel und die Kernel- Module laufen im privilegierten Modus (x86: Ring0), haben also unbeschränkten Zugriff auf die Hardware.

Einige wenige Module des Kernels laufen im eingeschränkten Benutzermodus (x86: Ring3). Die Level 1 und 2 der x86 -Architektur werden von Linux nicht genutzt.

Nahezu jeder Treiber kann auch als Modul zur Verfügung stehen und vom System dann dynamisch nachgeladen werden.

Ausgenommen davon sind Treiber, die für das Starten des Systems verantwortlich sind, bevor auf das Dateisystem zugegriffen werden kann.

Man kann allerdings den Kernel so konfigurieren, dass ein Cramfs - oder Initramfs - Dateisystem vor dem tatsächlichen Root-Dateisystem geladen wird, welches die weiteren für den Startprozess notwendigen Module enthält.

Dadurch kann die Kernelgröße verringert und die Flexibilität drastisch erhöht werden.

Im System laufende Programme bekommen wiederum vom Kernel Prozessorzeit zugewiesen.

Jeder dieser Prozesse erhält einen eigenen, geschützten Speicherbereich und kann nur über Systemaufrufe auf die Gerätetreiber und das Betriebssystem zugreifen.

"Abstraktionsschichten unter Linux"

Die Prozesse laufen dabei im Benutzermodus (user mode), während der Kernel im Kernel-Modus (kernel mode) arbeitet. Die Privilegien im Benutzermodus sind sehr eingeschränkt.

Abstraktion und Speicherschutz sind nahezu vollkommen, ein direkter Zugriff wird nur sehr selten und unter genau kontrollierten Bedingungen gestattet.

Dies hat den Vorteil, dass kein Programm z.B. durch einen Fehler so das System zum Absturz bringen kann.

Linux stellt wie sein Vorbild Unix eine vollständige Abstraktion und Virtualisierung für nahezu alle Betriebsmittel bereit (z.B. virtueller Speicher, Illusion eines eigenen Prozessors etc.).

Die Tatsache, dass Linux nicht auf einem Mikrokernel basiert, war Thema eines berühmten Flame Wars zwischen Linus Torvalds und Andrew S. Tanenbaum. Anfang der 1990er Jahre, als Linux entwickelt wurde, galten monolithische Kernels als obsolet (Linux war zu diesem Zeitpunkt noch rein monolithisch).

Die Diskussion und Zusammenfassungen sind im Artikel Geschichte von Linux näher beschrieben.

Durch Erweiterungen wie FUSE und durch die zunehmende Verwendung von Kernel-Prozessen fließen mittlerweile auch Mikrokernel -Konzepte ein.

Portierbarkeit

Obwohl Linus Torvalds eigentlich nicht beabsichtigt hatte, einen portierbaren Kernel zu schreiben, hat sich Linux dank des GNU Compilers GCC doch in diese Richtung entwickelt.

Es ist inzwischen mit eines der am häufigsten portierten Systeme (nur noch NetBSD läuft auf etwa gleich vielen Architekturen).

Das Repertoire reicht dabei von eher selten anzutreffenden Betriebsumgebungen wie dem iPAQ -Handheld-Computer oder gar Digitalkameras bis hin zu Großrechnern wie IBMs zSeries.

Obwohl die Portierung auf die S/390 ursprünglich ein vom IBM-Management nicht genehmigtes Unterfangen war, hat IBM wohl inzwischen Gefallen am Linux-System gefunden, und so soll auch die nächste IBM-Supercomputergeneration Blue Gene mit einem eigenen Linux-Port ausgestattet werden, sobald sie fertig ist.

Ursprünglich hatte Torvalds eine ganz andere Art von Portierbarkeit für sein System angestrebt, nämlich die Möglichkeit, freie GPL- und andere quelloffene Software leicht unter Linux kompilieren zu können.

Dieses Ziel wurde bereits sehr früh erreicht und macht sicherlich einen guten Teil des Erfolges von Linux aus, da es jedem eine einfache Möglichkeit bietet, auf einem freien System freie Software laufen zu lassen.

Unterstützten Architekturen

  • Acorn Archimedes, A5000 und RiscPC -Serie (ARM, StrongARM, Intel XScale etc.)
  • AMD64 (auch bekannt als x86–64): AMDs 64-bit Prozessoren Athlon 64, Opteron und Turion, sowie Intel-Prozessoren mit EM64T-Erweiterung (Xeon 4E)
  • Axis Communications ' CRIS
  • Compaq Alpha-Prozessor
  • Hitachi H8/300
  • Hewlett Packard PA-RISC
  • IA-64 : PCs mit 64bit Intel Itanium -Prozessor
  • IBM S/390 und zSeries
  • Intel 80386 und neuer: IBM-PCs und kompatible mit den CPUs 80386, 80486, und Pentium -Serie; AMD Athlon, Duron, Thunderbird ; Cyrix -Prozessoren. Unterstützung für Intel 8086, 8088, 80186, 80188 und 80286 CPUs wird derzeit entwickelt (siehe auch das ELKS -Projekt)
  • MIPS : Maschinen von Silicon Graphics …
  • Motorola 68020 und neuer: neuere Amigas, einige Atari und Apple Computer (siehe Linux68k)
  • NEC v850e
  • PowerPC : die meisten neueren Apple Computer (alle PCI-basierten Power Macintosh, der Gamecube, begrenzte Unterstützung für NuBus Power Macs), Clones der Power Macs von Power Computing, UMAX und Motorola, mit einer „Power-UP“-Karte verbesserte Amigas (z.B. Blizzard oder CyberStorm), sowohl POWER als auch PowerPC-basierte IBM RS/6000 -Systeme, verschiedenen eingebetteten PowerPC-Plattformen
  • Sun SPARC und UltraSparc : Sun -Workstations
  • Hitachi SuperH : Sega Dreamcast

User Mode Linux

Ein besonderer Port ist das User Mode Linux (UML). Prinzipiell handelt es sich dabei um einen Port von Linux auf sein eigenes Systemcall-Interface.

Dies ermöglicht es, einen Linux-Kernel als normalen Prozess auf einem laufenden Linux-System zu starten.

Der User-Mode-Kernel greift dann nicht selbst auf die Hardware zu, sondern reicht entsprechende Anforderungen an den echten Kernel durch.

Durch diese Konstellation werden „ Sandkästen “ ähnlich den Virtual Machines von Java oder den Jails von FreeBSD möglich, in denen ein normaler Benutzer Root-Rechte haben kann, ohne dem tatsächlichen System schaden zu können.

Kernel-Versionen

Datei:Grafik60.png

Auf der Website kernel.org werden alle alten und neuen Kernel-Versionen archiviert.

Die dort befindlichen Referenzkernel werden auch als Vanilla-Kernel bezeichnet (von umgangssprachlich engl. vanilla für Standard bzw. ohne Extras im Vergleich zu Distributionskernels).

Auf diesem bauen die sogenannten Distributionskernel auf, die von den einzelnen Linux-Distributionen um weitere Funktionen ergänzt werden.

Versionsnummern-Schema

Die Versionen von Linux folgen dabei einem bestimmten Schema:

Die erste Ziffer wird nur bei grundlegenden Änderungen in der Systemarchitektur angehoben.

Während der Entwicklung des 2.5er Kernels kam wegen der relativ grundlegenden Änderungen, verglichen mit dem 2.4er Kernel, die Diskussion unter den Kernel-Programmierern auf, den nächsten Produktionskernel als 3.0 zu deklarieren.

Torvalds war aber aus verschiedenen Gründen dagegen, sodass der resultierende Kernel als 2.6 bezeichnet wurde.

Die zweite Ziffer gibt das jeweilige „Majorrelease“ an. Bisher wurden stabile Versionen (sogenannte Produktionskernel) von den Entwicklern stets durch gerade Ziffern wie 2.2, 2.4 und 2.6 gekennzeichnet, während die Testversionen (sogenannte Entwicklerkernel) immer ungerade Ziffern trugen, wie z.B. 2.3 und 2.5; diese Trennung ist aber seit Juli 2004 ausgesetzt, es gibt zur Zeit (2006) keinen Entwicklerkernel mit der Nummer 2.7, stattdessen werden die Änderungen laufend in die 2.6er-Serie eingearbeitet.

Zusätzlich bezeichnet eine dritte Zahl das „Minorrelease“, das die eigentliche Version kennzeichnet. Werden neue Funktionen hinzugefügt, steigt die dritte Zahl an.

Der Kernel wird damit zum Beispiel mit einer Versionsnummer wie 2.6.7 bestimmt.

Um die Korrektur eines schwerwiegenden NFS -Fehlers schneller verbreiten zu können, wurde mit der Version 2.6.8.1 erstmals eine vierte Ziffer eingeführt.

Seit März 2005 (Kernel 2.6.11) wird diese Nummerierung offiziell verwendet. So ist es möglich, die Stabilität des Kernels trotz teilweise sehr schneller Veröffentlichungszyklen zu gewährleisten und Korrekturen von kritischen Fehlern innerhalb weniger Stunden in den offiziellen Kernel zu übernehmen – wobei sich die vierte Ziffer erhöht (z.B. von 2.6.11. 1 auf 2.6.11. 2).

Die Minorreleasenummer, also die dritte Ziffer, wird hingegen nur bei Einführung neuer Funktionen hochgezählt.

Datei:.png
Andrew Morton
Entwicklerversion

Neue Funktionen finden sich im sogenannten -mm Kernel des Kernelentwicklers Andrew Morton und werden anschließend in den Hauptzweig von Torvalds übernommen.

Somit werden große Unterschiede zwischen Entwicklungs- und Produktionskernel und damit verbundene Portierungsprobleme zwischen den beiden Serien vermieden.

Durch dieses Verfahren gibt es auch weniger Differenzen zwischen dem offiziellen Kernel und den Distributionskernel (früher wurden Features des Entwicklungszweiges von den Distributoren häufig in ihre eigenen Kernels rückintegriert).

Allerdings litt 2004/2005 die Stabilität des 2.6er Kernels unter den häufig zu schnell übernommenen Änderungen.

Ende Juli 2005 wurde deshalb ein neues Entwicklungsmodell beschlossen, das nach dem Erscheinen der Version 2.6.13 erstmals zur Anwendung kommt:

Neuerungen werden nur noch in den ersten zwei Wochen der Kernelentwicklung angenommen, wobei anschließend eine Qualitätssicherung bis zum endgültigen Erscheinen der neuen Version erfolgt.

Pflege der Kernel-Versionen

Datei:.png
Alan Cox

Während Torvalds die neuesten Entwicklungsversionen veröffentlicht, wurde die Pflege der älteren „stabilen“ Versionen an andere Programmierer abgegeben.

Gegenwärtig ist David Weinehall für die 2.0er Serie verantwortlich, Marc-Christian Petersen (zuvor Alan Cox) für den Kernel 2.2, Willy Tarreau (zuvor Marcelo Tosatti) für den Kernel 2.4, Greg Kroah-Hartmann und Chris Wright für die aktuellen stabilen Kernel 2.6.x.y(-stable), Linus Torvalds für die aktuellen „normalen“ Kernel 2.6.x, und Andrew Morton für seinen experimentellen -mm-Zweig, basierend auf dem neuesten 2.6.x. Zusätzlich zu diesen offiziellen und über Kernel.org oder einen seiner Mirrors zu beziehenden Kernel-Quellcodes kann man auch alternative „Kernel-Trees“ aus anderen Quellen benutzen.

Distributoren von Linux-basierten Betriebssystemen pflegen meistens ihre eigenen Versionen des Kernels und beschäftigen zu diesem Zwecke fest angestellte Kernel-Hacker, die ihre Änderungen meist auch in die offiziellen Kernels einfließen lassen.

Distributions-Kernel sind häufig intensiv gepatcht, um auch Treiber zu enthalten, die noch nicht im offiziellen Kernel enthalten sind, von denen der Distributor aber glaubt, dass seine Kundschaft sie benötigen könnte und die notwendige Stabilität respektive Fehlerfreiheit dennoch gewährleistet ist.

Datei:.png
Marcelo Tosatti

Als Linux-Kernel -Betreuer sind neben Torvalds auch Alan Cox und Marcelo Tosatti sehr bekannt. Cox betreute bis Ende 2003 die Kernel-Reihe 2.2, Tosatti kümmerte sich bis Mitte 2006 um die Version 2.4 und Andrew Morton steuert die Entwicklung und Verwaltung des neuen 2.6-Kernels, welcher am 18. Dezember 2003 in einer als stabil (stable) vorliegenden Version veröffentlicht wurde.

Auch die älteren Zweige werden nach wie vor ständig verbessert.

Der Erfolg von Linux in vielen Einsatzbereichen ist insbesondere auf die Eigenschaften freier Software bezüglich Stabilität, Sicherheit, Erweiterbarkeit und Wartbarkeit, aber auch auf die entfallenden Lizenzkosten zurückzuführen.

Gegenwärtig ist David Weinehall für die 2.0er Serie verantwortlich, Marc-Christian Petersen für den Kernel 2.2, Willy Tarreau für den Kernel 2.4 und Andrew Morton für den aktuellen stabilen Kernel 2.6.

Versionen und Versionsgeschichte

Datei:Grafik59.png

Neuerungen im Kernel 2.6

Die Kernel-Reihe 2.6 wurde ab Dezember 2001 auf Basis des damaligen 2.4er Kernels entwickelt und wies umfangreiche Neuerungen auf.

Für die Entwicklung war der neue Kernel-Code übersichtlicher und leichter zu pflegen, während Anwender durch die Überarbeitung der Scheduler und des I/O-Bereichs und von geringeren Latenzzeiten profitierten.

Dies wurde durch eine Reihe von Maßnahmen erreicht, die im Folgenden besprochen werden sollen:

Der O(1)-Scheduler

Der Scheduler ist der Teil der Prozessverwaltung, der den Prozessen Rechenzeit zuteilt. Ingo Moln hat Scheduler für den 2.6er Kernel komplett neu konzipiert und implementiert.

O(1)-Scheduler * die vom Scheduler für eigene Aufgaben benötigte Prozessorzeit unabhängig von der Anzahl der verwalteten Prozesse bzw. Threads ist, er also Komplexität O(1) hat
  • Der O(1)-Scheduler arbeitet daher auch bei sehr vielen Prozessen überaus effizient und benötigt selbst sehr wenig Rechenzeit.
Verbesserte Interaktivität * Der interne „Takt“ des Kernels wurde ab dem Kernel 2.6 von 100 Hz auf 1000 Hz erhöht, das heißt, die kürzestmögliche Länge einer Zeitscheibe beträgt nun eine Millisekunde.
verbessertes

Thread -Management

symmetrisches Multiprocessing (SMP)

Hyper-Threading

* Dies kommt vor allem hoch belasteten Servern zugute. In Testsituationen konnten unter dem neuen Scheduler 100.000 Threads gestartet werden, ohne dass das System subjektiv langsamer wurde.
  • Weiterhin sorgt der neue Scheduler dafür, dass die zur Verfügung stehenden CPUs optimal ausgelastet werden, ohne Prozesse übermäßig oft zwischen zwei CPUs hin- und herwechseln zu lassen.

Präemptiver Kernel

Der Kernel ist ab Version 2.6 in den meisten Funktionen präemptiv, d.h. selbst wenn das System gerade im Kernel-Modus Aufgaben ausführt, kann dieser Vorgang durch einen Prozess aus dem User-Modus unterbrochen werden. Das kommt ebenfalls der Interaktivität zugute.

Zugriffskontrolllisten

Seit dem Kernel 2.6 werden für Linux Zugriffskontrolllisten (access control lists) nativ eingeführt. Damit können beliebig viele Berechtigungen auf Dateien vergeben werden.

Inotify

Dies ermöglicht das permanente Überwachen von Dateien und Ordnern: Wird eines der überwachten Objekte geändert oder ein neues Objekt im Überwachungsraum erschaffen, gibt Inotify eine Meldung aus, die wiederum andere Programme zu definierten Tätigkeiten veranlassen kann.

Dies ist insbesondere für Such- und Indexierungsmechanismen der Datenbestände von entscheidender Bedeutung, und ermöglicht erst den sinnvollen Einsatz von Desktop-Suchmaschinen wie Kat oder Beagle.

Ohne eine solche Benachrichtigungsfunktion des Kernels müsste ein Prozess die zu überwachende Datei bzw. den zu überwachenden Ordner in bestimmten Zeitintervallen auf Änderungen überprüfen, was im Gegensatz zu Inotify zusätzliche Performance-Einbußen mit sich brächte.

Weitere wichtige Änderungen

  • Die Maximalzahl für diverse Ressourcen wurden angehoben
    • Die Anzahl von möglichen Benutzern und Gruppen wurde von 65.000 auf über 4 Milliarden
    • die Anzahl der Prozess-IDs (von 32.000 auf 1 Milliarde)
    • die Anzahl der Geräte (Major/Minor-Nummern)
  • Weitere leistungssteigernde Maßnahmen
    • das Threading mit der neuen Native POSIX Thread Library und den
    • Netzwerk-Stack: skaliert nun in den meisten Tests O(1)
  • für die Verwaltung der I/O-Gerätedateien wurde devfs durch udev ersetzt

Weitere Kernel-Funktionen

  • Software-RAID
  • PCMCIA-Unterstützung
  • Quota
  • Loopback für Netzwerk
  • Loopback für Dateisysteme

Der Kernel zeichnet sich durch eine sehr hohe Stabilität aus, Uptimes von über einem Jahr sind durchaus möglich. Außerdem ist er ressourcensparend, da er die Hardware besser ausnutzt besser angepasst werden kann).

Zukünftige Entwicklungen

Einheitliches WLAN-Subsystem

Jeff Garzik stellte Anfang 2006 fest, dass die Situation rund um WLAN-Treiber in Linux unausgegoren war:

Die meisten Treiber bauten auf verschiedenen, nicht einheitlichen Systemen auf.

Neue Treiber konnten damit nur schwer entwickelt werden, da schon zu Beginn unklar war, für welches Subsystem sie entwickelt werden sollten.

Auch war das Warten verschiedener Subsysteme und alter Treiber schwierig und erforderte einen großen Zeitaufwand.

Um diesen Problemen zu begegnen, wurde ein Verwalter für das WLAN-Subsystem bestimmt, John W. Linville, der sich seitdem um die Entwicklung kümmert.

Seitdem wird an einem einheitlichen Subsystem auf der Basis des Advanced Datapath Drivers gearbeitet, der von der Firma Devicescape für den Kernel 2.6 freigegeben wurde.

Entwicklungsprozess

Die Entwicklung von Linux liegt durch die GNU General Public License und durch ein sehr offenes Entwicklungsmodell nicht in der Hand von Einzelpersonen, Konzernen oder Ländern, sondern in der Hand einer weltweiten Gemeinschaft vieler Programmierer, die sich hauptsächlich über das Internet austauschen.

In vielen Mailinglisten, aber auch in Foren und im Usenet besteht für jedermann die Möglichkeit, die Diskussionen über den Kernel zu verfolgen, sich daran zu beteiligen und auch aktive Beiträge zur Entwicklung zu leisten.

Durch diese unkomplizierte Vorgehensweise ist eine schnelle und stetige Entwicklung gewährleistet, die auch die Möglichkeit mit sich bringt, dass jeder dem Kernel Fähigkeiten zukommen lassen kann, die er benötigt.

Eingegrenzt wird dies nur durch die Kontrolle von Linus Torvalds und einigen besonders verdienten Programmierern, die das letzte Wort über die Aufnahme von Verbesserungen und Patches in die offizielle Version haben.

Manche Linux-Distributoren bauen auch eigene Funktionen in den Kernel ein, die im offiziellen Kernel (noch) nicht vorhanden sind.

Datei:.png
Entwicklungsprozess des Linux-Kernels

Herkunftskontrolle

Der Entwicklungsprozess des Kernels selbst ist wie der Kernel ebenfalls immer weiterentwickelt worden.

So führte der Rechtsprozess der SCO Group um angeblich illegal übertragenen Code in Linux zur Einführung eines „Linux Developer's Certificate of Origin“, das von Linus Torvalds und Andrew Morton bekanntgegeben wurde.

Diese Änderung griff das Problem auf, dass nach dem bis dahin gültigen Modell des Linux-Entwicklungsprozesses die Herkunft einer Erweiterung oder Verbesserung des Kernels nicht nachvollzogen werden konnte.

Das Versionskontrollsystem git

Die Versionskontrolle des Kernels unterliegt dem Programm git. Dies wurde speziell für den Kernel entwickelt und auf dessen Bedürfnisse hin optimiert.

Es wurde im April 2005 eingeführt, nachdem sich abgezeichnet hatte, dass das alte Versionskontrollsystem BitKeeper nicht mehr lange für die Kernelentwicklung genutzt werden konnte.

Lizenz

Die bei GPL-Software übliche Klausel, dass statt der Version 2 der GPL auch eine neuere Version verwendet werden kann, fehlt beim Linux-Kernel.

Die Entscheidung, ob die im Juni 2007 erschienene Version 3 der Lizenz für Linux verwendet wird, ist damit prinzipiell nur mit Zustimmung aller Entwickler möglich.

In einer Umfrage haben sich Torvalds und die meisten anderen Entwickler für die Beibehaltung der Version 2 der Lizenz ausgesprochen.