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:

BegriffRolleTypische Bestandteile oder Beispiele

Kernel – Zentrale Komponente zur Verwaltung von Hardware, Speicher, Prozessen und Ein-/Ausgabe – Linux-Kernel

Betriebssystem – Gesamtheit der grundlegenden Software, die Hardware verwaltet und Anwendungen ausführt – Kernel, Systemwerkzeuge, Bibliotheken und weitere Dienste

Linux-Distribution – Nutzbare Zusammenstellung rund um den Linux-Kernel – Kernel, Systemwerkzeuge, Paketverwaltung, Anwendungen, Konfiguration und Paketquellen

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.

AufgabeWas der Kernel verwaltetAlltagsbeispiel

Hardwarezugriff – Vermittlung zwischen Programmen und physischen Geräten – Eine Anwendung liest Daten von einem Datenträger

Prozessverwaltung – Starten, Ausführen, Planen und Beenden von Programmen – Mehrere Anwendungen erhalten abwechselnd Prozessorzeit

Speicherverwaltung – Zuteilung, Schutz und Freigabe von Arbeitsspeicher – Ein Programm erhält Speicher, den andere Programme nicht verändern dürfen

Geräteverwaltung – Kommunikation mit Hardware über Gerätetreiber – Ein Netzwerkadapter oder eine USB-Tastatur wird angesprochen

Dateisystem und Ein-/Ausgabe – Lesen, Schreiben und Organisieren von Daten – Eine Datei wird geöffnet oder auf einer SSD gespeichert

Netzwerkfunktionen – Verarbeitung von Netzwerkpaketen und Bereitstellung von Netzwerk-Schnittstellen – Ein Browser empfängt Daten von einem Server

Schutz und Stabilität – Trennung von Programmen und Kontrolle privilegierter Vorgänge – Ein fehlerhaftes Programm kann nicht beliebig den Speicher anderer Prozesse überschreiben

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.

ArchitekturGrundideeAusführung zentraler DiensteEinordnung von Linux

Monolithischer Kernel – Viele zentrale Betriebssystemdienste sind eng in den Kernel integriert – Prozessverwaltung, Speicherverwaltung und viele Treiber laufen im Kernel-Kontext – Linux ist monolithisch, aber modular erweiterbar

Mikrokernel – Nur wenige grundlegende Funktionen verbleiben im privilegierten Bereich – Weitere Dienste wie Treiber oder Dateisysteme laufen möglichst außerhalb des Kernels – Nicht die Architektur des Linux-Kernels

Hybridkernel – Verbindet Konzepte monolithischer Kernel und Mikrokernel – Je nach System liegen manche Dienste im Kernel und andere außerhalb – Eigenständige Architekturklasse anderer Betriebssysteme

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:

lsmod

Eine 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 -r

Eine mögliche Ausgabe sieht beispielsweise so aus:

6.8.0-45-generic

Die 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 -a

Die 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/Linux

In 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/version

Dieser Befehl zeigt Versionsdaten und Informationen zur Build-Umgebung des aktuell laufenden Kernels. Für die einfache Versionsabfrage bleibt uname -r jedoch die übersichtlichste Wahl.

BefehlAusgabeGeeigneter Einsatz

uname -r – Kernel-Release des laufenden Kernels – Schnelle Versionsprüfung

uname -a – Umfassende Kernel- und Systeminformationen – Support-Anfrage oder ausführliche Diagnose

lsmod – Geladene Kernel-Module – Prüfung der modularen Treiber- und Funktionserweiterungen

cat /proc/version – Kernel-Version und Build-Informationen aus proc – Ergänzende Systemdiagnose

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:

  1. Das Kernel-Update über die vorgesehenen Werkzeuge der Distribution installieren.
  2. Die laufende Version mit uname -r prüfen.
  3. Falls erforderlich das System neu starten.
  4. Nach dem Neustart uname -r erneut 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.

  1. Geräte- und Systemmeldungen prüfen.
  2. Feststellen, ob ein passendes Kernel-Modul geladen ist.
  3. Benötigte Firmware und distributionsspezifische Treiberpakete kontrollieren.
  4. 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 -r zeigt die Release-Version des laufenden Kernels, uname -a zusätzliche Systeminformationen.
  • Nach einem Kernel-Update ist oft ein Neustart erforderlich.