VMware ESXi and vSphere Cluster Management
Was ist der Linux-Kernel? Aufgaben, Architektur und Kernel-Version ermitteln
Erfahren Sie, was der Linux-Kernel ist, welche Aufgaben er übernimmt, wie Kernel Space und User Space funktionieren und wie Sie die laufende Kernel-Version prüfen.
Was ist der Linux-Kernel?
Der Kernel ist der zentrale, privilegiert laufende Bestandteil eines Betriebssystems. Er verwaltet die Ressourcen eines Computers und vermittelt zwischen Hardware und Software. Dazu gehören Prozessor, Arbeitsspeicher, Datenträger, Netzwerkadapter und Eingabegeräte.
Der Linux-Kernel ist der freie und quelloffene Kernel, der die technische Grundlage zahlreicher Linux-Systeme bildet. Anwendungen greifen normalerweise nicht unmittelbar auf die Hardware zu. Stattdessen verwenden sie definierte Betriebssystem-Schnittstellen und fordern darüber Funktionen des Kernels an.
Linux-Kernel, Betriebssystem und Distribution
Die Begriffe werden im Alltag oft gleichgesetzt, bezeichnen aber unterschiedliche Ebenen:
Eine Distribution wie ein typisches Desktop- oder Serversystem enthält also wesentlich mehr als den Kernel. Die Bezeichnung Linux meint technisch häufig nur den Kernel. GNU/Linux oder eine konkrete Linux-Distribution bezeichnet dagegen das vollständige, nutzbare System beziehungsweise dessen Zusammenstellung.
Welche Aufgaben übernimmt der Kernel?
Der Kernel stellt Anwendungen eine kontrollierte Umgebung zur Verfügung und teilt die begrenzten Ressourcen des Computers zwischen ihnen auf. Dadurch können viele Programme gleichzeitig laufen, ohne direkt gegeneinander auf Hardware oder Speicher zuzugreifen.
Prozessverwaltung
Ein laufendes Programm wird als Prozess bezeichnet. Der Kernel startet Prozesse, weist ihnen Ressourcen zu, plant ihre Ausführung auf einem oder mehreren Prozessorkernen und beendet sie bei Bedarf. Der sogenannte Scheduler entscheidet, welcher Prozess wann Prozessorzeit erhält.
Speicherverwaltung
Der Kernel verwaltet den Arbeitsspeicher und stellt Prozessen eigene geschützte Speicherbereiche bereit. Er kann Speicher zuweisen, wieder freigeben und den Zugriff kontrollieren. Diese Trennung verhindert, dass ein Programm versehentlich oder absichtlich direkt den Speicher eines anderen Programms verändert.
Gerätetreiber
Ein Gerätetreiber ist eine Kernel-Komponente, die die Kommunikation mit einer bestimmten Hardware ermöglicht. Treiber übersetzen allgemeine Anforderungen des Betriebssystems in gerätespezifische Operationen. Für manche Hardware wird zusätzlich eine Firmware benötigt, die auf dem Gerät selbst ausgeführt wird.
Kernel Space und User Space
Moderne Betriebssysteme teilen die Ausführung typischerweise in geschützte Bereiche auf:
- User Space: Hier laufen normale Anwendungen mit eingeschränkten Rechten. Ein Texteditor, ein Browser oder ein Terminalprogramm kann nicht beliebig auf Hardware und fremde Speicherbereiche zugreifen.
- Kernel Space: Hier läuft der Kernel mit weitreichenden Systemrechten. Er darf privilegierte Prozessorbefehle ausführen, Speicher verwalten und Geräte steuern.
Wenn ein Programm beispielsweise eine Datei lesen möchte, führt es nicht selbst die Hardwareoperation aus. Es verwendet einen System Call, also eine definierte Schnittstelle zum Kernel. Der Kernel prüft die Anfrage, führt den privilegierten Zugriff aus und gibt das Ergebnis an die Anwendung zurück.
Diese Trennung ist eine wichtige Sicherheits- und Stabilitätsfunktion. Ein Programmfehler bleibt möglichst auf den betroffenen Prozess begrenzt. Fehler im Kernel oder in einem Kernel-Treiber können allerdings weitreichender sein, weil diese Komponenten mit privilegierten Rechten arbeiten.
Wie ist der Linux-Kernel entstanden?
Die Entwicklung des Linux-Kernels begann 1991. Linus Torvalds initiierte das Projekt ursprünglich als persönliches Vorhaben. Seitdem wird der Kernel gemeinschaftlich von Menschen und Unternehmen aus aller Welt weiterentwickelt.
Linux ist freie und quelloffene Software und wird unter der GNU General Public License, Version 2 (GPLv2), veröffentlicht. Der Quellcode kann eingesehen, genutzt und verändert werden. Auch die Weitergabe ist unter den Bedingungen der Lizenz möglich. Die GPL bedeutet jedoch nicht, dass jede Weitergabe völlig bedingungslos ist: Für abgeleitete Werke und bestimmte Formen der Weitergabe gelten unter anderem Pflichten zur Einhaltung der Lizenzbedingungen und zur Bereitstellung entsprechender Quellcode-Informationen.
Kernel-Architekturen im Vergleich
Eine Kernel-Architektur beschreibt, welche Dienste im privilegierten Kernel-Bereich laufen und wie die einzelnen Komponenten organisiert sind.
Der Linux-Kernel ist ein monolithischer Kernel. Das bedeutet nicht, dass jede Funktion dauerhaft fest einkompiliert sein muss. Linux unterstützt Kernel-Module: Das sind ladbare Erweiterungen, etwa für Gerätetreiber, Dateisysteme oder bestimmte Netzwerkfunktionen.
Module können bei Bedarf geladen und – sofern keine Abhängigkeiten oder laufende Nutzung dagegen sprechen – wieder entfernt werden. Mit lsmod lässt sich eine Liste der aktuell geladenen Module anzeigen:
lsmodEine typische Ausgabe enthält Modulnamen, Speichergröße und einen Nutzungszähler. Die Modularität vereint die enge Integration eines monolithischen Kernels mit der Möglichkeit, Funktionen flexibel nachzuladen.
Die laufende Kernel-Version ermitteln
Unter Linux zeigt das Kommando uname Informationen über das System und den Kernel an. Für die aktuell laufende Kernel-Release-Version genügt:
uname -rEine mögliche Ausgabe sieht beispielsweise so aus:
6.8.0-45-genericDie genaue Schreibweise hängt von der Distribution ab. Die Ausgabe enthält typischerweise eine Versionsnummer wie 6.8.0 sowie eine distributions- oder paketbezogene Ergänzung wie -45-generic. Diese Kennung ist die Kernel-Release des Kernels, mit dem das System gerade läuft.
Für ausführlichere Informationen verwenden Sie:
uname -aDie Ausgabe enthält meist mehrere durch Leerzeichen getrennte Angaben, zum Beispiel Kernelname, Rechnername, Kernel-Release, Kernel-Versions- oder Build-Informationen und Architektur. Eine beispielhafte Form ist:
Linux arbeitsrechner 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC x86_64 GNU/LinuxIn diesem Beispiel stehen Linux für den Kernelnamen, arbeitsrechner für den Hostnamen, 6.8.0-45-generic für die Release-Kennung, die Angaben danach für Build- und Versionsinformationen und x86_64 für die Prozessorarchitektur.
Eine ergänzende Informationsquelle ist das virtuelle proc-Dateisystem:
cat /proc/versionDieser Befehl zeigt Versionsdaten und Informationen zur Build-Umgebung des aktuell laufenden Kernels. Für die einfache Versionsabfrage bleibt uname -r jedoch die übersichtlichste Wahl.
Alle genannten Befehle können normalerweise ohne besondere Rechte ausgeführt werden.
Laufender und installierter Kernel
uname -r zeigt ausschließlich den Kernel an, der aktuell gestartet wurde. Nach einem Kernel-Update kann bereits eine neue Version auf dem Datenträger installiert sein, während das System weiterhin mit der älteren Version läuft.
Der übliche Ablauf ist:
- Das Kernel-Update über die vorgesehenen Werkzeuge der Distribution installieren.
- Die laufende Version mit
uname -rprüfen. - Falls erforderlich das System neu starten.
- Nach dem Neustart
uname -rerneut ausführen und die Ausgabe vergleichen.
Ein Neustart ist häufig notwendig, damit der neu installierte Kernel tatsächlich geladen wird.
Warum ist die Kernel-Version wichtig?
Die Kernel-Version ist bei der Fehlersuche und bei Support-Anfragen eine wichtige Grundinformation. Sie kann Hinweise darauf geben, ob eine bestimmte Hardware-Unterstützung, ein Sicherheitsupdate oder eine Fehlerbehebung bereits enthalten ist.
- Hardware-Unterstützung: Neuere Kernel können zusätzliche Geräte unterstützen oder Treiber verbessern.
- Sicherheitsupdates: Kernel-Aktualisierungen können bekannte Sicherheitslücken schließen.
- Fehlerbehebung: Probleme mit Speicherverwaltung, Netzwerk, Dateisystemen oder Treibern können behoben werden.
- Support: Helfende benötigen häufig die genaue Release-Kennung, um ein Problem einzuordnen.
Für Einsteiger ist die Paketverwaltung der jeweiligen Distribution der übliche und sicherste Weg für Kernel-Updates. Manuelle Kernel-Änderungen oder selbst kompilierte Kernel erfordern zusätzliche Kenntnisse, etwa zu Konfiguration, Bootloader, Modulen und Wiederherstellungsmöglichkeiten.
Wenn die Hardware trotz aktuellem Kernel nicht funktioniert
Eine aktuelle Kernel-Version garantiert nicht automatisch, dass jedes Gerät funktioniert. Mögliche Ursachen sind ein fehlender oder nicht geladener Treiber, benötigte Firmware, eine distributionsspezifische Konfiguration oder ein Hardwaredefekt.
- Geräte- und Systemmeldungen prüfen.
- Feststellen, ob ein passendes Kernel-Modul geladen ist.
- Benötigte Firmware und distributionsspezifische Treiberpakete kontrollieren.
- Erst danach beurteilen, ob ein Kernel-Update zur Lösung beitragen kann.
Die wichtigsten Punkte im Überblick
- Der Linux-Kernel verwaltet Hardware, Prozesse, Arbeitsspeicher, Geräte, Dateisysteme, Ein-/Ausgabe und Netzwerkfunktionen.
- Anwendungen laufen normalerweise im User Space und greifen über System Calls auf Kernel-Funktionen zu.
- Der Kernel läuft im geschützten Kernel Space und besitzt privilegierte Zugriffsrechte.
- Linux ist ein monolithischer Kernel mit Unterstützung für ladbare Kernel-Module.
- Linus Torvalds begann die Entwicklung 1991; heute entsteht der Kernel durch eine weltweite Gemeinschaft.
- Der Quellcode steht unter der GNU General Public License Version 2.
- Eine Distribution kombiniert den Linux-Kernel mit Werkzeugen, Paketverwaltung, Anwendungen und Konfigurationen.
uname -rzeigt die Release-Version des laufenden Kernels,uname -azusätzliche Systeminformationen.- Nach einem Kernel-Update ist oft ein Neustart erforderlich.