Linux (Kernel)

Unix-ähnlicher, monolithischer Betriebssystem-Kernel, Basis aller Linux-Betriebssysteme / Linux-Distributionen
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 30. August 2003 um 13:13 Uhr durch Kris Kaiser (Diskussion | Beiträge) (gestrafft). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Dieser Artikel ist nur über den Linux-Kernel, insbesondere technische Aspekte. Weiteres, insb. zu Geschichte und Betriebssystem unter Linux oder Linux-Distribution


Datei:Tux kl.png
Tux, der Linux-Pinguin.

Der Linux-Kernel ist der Betriebssystem-Kern der freien Software namens Linux (GNU/Linux) und ist frei verfügbar unter der GNU General Public Lizense (GPL).

Er bildet die hardwareabstrahierende Schicht, d.h. er stellt der auf dieser Basis aufsetzenden Software eine einheitliche Schnittstelle unabhängig von der Hardware-Architektur zur Verfügung.

Detailliert

Er stellt das Basis-System dar, das zwischen dem BIOS der Hardware und der höheren Software liegt und macht die Hardware für die auf dem System laufenden Anwendungen durch ein einheitliches API verfügbar. Der Kernel ist damit z.B. zuständig für Prozessverwaltung, Multitasking, Eingabe/Ausgabe-Operationen auf verschiedenen Geräten wie Festplatten oder Netzwerkkarten, Lastverteilung und Sicherheitserzwingung. Der Kernel ist noch kein komplettes Betriebssystem im landläufigen Sinne, da er ohne weitere Programme relativ nutzlos ist.

Der Linux-Kernel ist fast komplett in C geschrieben (Ausnahme: Codeteile für die allererste Startphase, die in Assembler für die jeweilige Architektur geschrieben sind), wobei einige GNU C-Erweiterungen benutzt werden.

Neue "offizielle" Kernel-Versionen werden weiterhin von Torvalds selbst veröffentlicht, der die Beiträge anderer Programmierer sammelt und auch selbst Änderungen vornimmt. Alle Linux-Versionen, bei denen die Sub-Version (die zweite Zahl) im Versionsstring eine gerade Zahl ist, gehören zu sog. "stabilen" Serien, bislang gab es 1.0.x, 1.2.x, 2.0.x, 2.2.x, 2.4.x und die neue 2.6.x, wohingegen Releases mit ungerader Sub-Version, wie z.B. die 2.5er Reihe, Entwickler-Versionen sind, in denen mit neuen (und potenziell auch "gefährlichen") Features experimentiert wird, und die daher auch nicht für den Einsatz in Produktivumgebungen empfohlen werden. Während Torvalds die neuesten Entwicklungs-Versionen 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, Alan Cox für den Kernel 2.2 und Marcelo Tosatti für den im Moment noch aktuellen stabilen Kernel 2.4. Zusätzlich zu diesen offiziellen und über www.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 beinhalten, die noch nicht im offiziellen Kernel sind, von denen der Distributor aber glaubt, dass seine Kundschaft sie benötigen könnte.

Die 2.5er Beta-Kernel sind inzwischen in der letzten Test- und Bugfix-Phase, inzwischen heißen sie auch nicht mehr 2.5.x, sondern 2.6.0-test. Sobald die 2.6.0-test Serie für genügend stabil und fehlerfrei erachtet wird, wird der offizielle Kernel 2.6.0 veröffentlicht werden.

Erscheinungstermine:

17. September 1991 Initial Public Release v0.01
5. Oktober 1991 Erster "offizieller" Kernel v0.02
16. April 1994v1.0
9. Juni 1996 v2.0
21. Januar 1999 v2.2.0
4. Januar 2001 v2.4.0
vorraussichtlich 3./4. Quartal 2003 v2.6.0

Architektur

Linux ist heute ein hybrid monolithischer Kernel. Dies bedeutet, dass man den größten Teil der Treiber, die nicht während der ersten Startphase (bevor ein Dateisystem eingebunden ist) benötigt werden, als Module konfigurieren kann, die dann dynamisch nachgeladen oder auch während des Betriebs entladen werden können, wenn ihre Funktionalität nicht mehr benötigt wird. Die Treiber im Kernel und die Kernel-Module laufen im Ring 0, haben also unbeschränkten Zugriff auf die Hardware. Einige wenige Module des Kernels laufen im eingeschränkten Ring 3 (Usermodus). Die Level 1 und 2 der x86-Architektur werden vom Linux-Kernel nicht genutzt.

Die Tatsache, dass Linux kein Microkernel ist, war Thema eines berühmten Flame War zwischen Linus Torvalds und Andy Tanenbaum. Anfang der 1990er Jahre, als Linux entwickelt wurde, galten monolithische Kernels als obsolet (Linux war zu diesem Zeitpunkt noch rein monolithisch, die Möglichkeit, auch Module verwenden zu können, wurde erst später nachgerüstet). Eine Zusammenfassung der Diskussion zwischen Torvalds und Tanenbaum kann unter http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html gefunden werden.

Portierbarkeit

Obwohl Linus Torvalds eigentlich nicht beabsichtigt hatte, einen portierbaren Kernel zu schreiben, hat sich Linux doch in diese Richtung entwickelt, es ist inzwischen das am zweitmeisten portierte System (nur NetBSD läuft auf noch mehr Architekturen). Das Repertoire reicht dabei von eher exotischen Betriebsumgebungen wie dem iPAQ-Handheld-Computer oder gar Digitalkameras bis hin zu IBM's S/390 zSeries, einem großen und sehr teueren Mainframe-System. Obwohl die Portierung auf die S/390 ursprünglich ein vom IBM-Management nicht genehmigtes Unterfangen war (siehe auch: Skunk Works), hat Big Blue wohl inzwischen Gefallen am Linux-System gefunden, und so soll auch die nächste IBM-Supercomputer-Generation 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 jedermann eine einfache Möglichkeit bietet, auf einem freien System freie Software laufen zu lassen.

Linux läuft gegenwärtig auf den folgenden Architekturen:

Lizenz

Making Linux GPL'd was definitely the best thing I ever did. -- Linus Torvalds [1]

Torvalds gab Linux ursprünglich unter einer Lizenz heraus, die jede kommerzielle Nutzung verbot. Diese Lizenz tauschte er bald gegen die GNU General Public License (Version 2). Sie erlaubt die Verteilung und sogar den Verkauf von (auch veränderten) Versionen von Linux. Die Bedingungen hierfür sind, dass alle Kopien auch unter der selben Lizenz stehen müssen und der Quelltext immer mitgeliefert werden muss.