Linux (Kernel)
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 | 1994 | v1.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:
- Acorn Archimedes, A5000 und RiscPC Serie (ARM, StrongARM, Intel XScale etc.)
- AMD64: AMD's 64-bit Prozessor (auch bekannt als x86-64)
- Axis Communications' CRIS
- Compaq Alpha-Prozessor
- Hitachi H8/300
- Hewlett Packard PA-RISC
- IA-64: PCs mit 64bit Intel Itanium-Prozessor
- IBM S/390
- Intel 80386 und neuer: IBM PCs und kompatible mit den CPUs 80386, 80486, und Pentium-Serie; AMD Athlon, Duron, Thunderbird; Cyrix-Prozessoren. Unterstützuung für Intel 8086, 8088, 80186, 80188 und 80286 CPUs wird derzeit entwickelt (siehe auch ELKS-Projekt)
- MIPS: Maschinen von Silicon Graphics...
- Motorola 68020 und neuer: neuere Amigas, einige Apple Computer
- NEC v850e
- PowerPC: die meisten neueren Apple Computer (alle PCI-basierten Power Macintosh, 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 embedded PowerPC-Plattformen
- SPARC und UltraSparc: Sun-Workstations
- Hitachi SuperH: SEGA Dreamcast
- Sony PlayStation 2
- Microsoft's Xbox
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.