c't 6/2017
S. 166
FAQ

Basiswissen zum Linux-Kernel

Antworten auf die häufigsten Fragen

Die Rolle des Kernels

¯??? Welche Aufgabe erledigt der Linux-Kernel in meinem System?

¯!!! Der Linux-Kernel ist das zentrale Element jedes Linux-basierten Betriebssystems. Er ist in jede noch so kleine Interaktion mit dem System involviert – er wird daher schon aktiv, wenn Sie nur den Finger auf das Touchpad legen.

Die Hauptaufgabe des Linux-Kernels: die Hardware vollständig in Gang bringen und damit eine Umgebung bereitstellen, in der Sie Programme ausführen können.

Auf dieses Ziel arbeitet der Kernel hin, sobald Sie Linux über den Boot-Manager starten. Der lädt dann einen Linux-Kernel in den Speicher und führt diesen aus. Mit den Tausenden im Kernel enthaltenen Treibern beginnt er dann, Mainboard, Prozessor, Grafikchip und alle anderen Komponenten des Systems zu aktivieren.

Anschließend bindet der Kernel den Datenträger mit der Linux-Installation ein und ruft das dort liegende Init-System auf. Das startet dann mithilfe des Kernels zahlreiche Programme, die dann letztlich die Bedienoberfläche stellen, über die Sie mit dem System per Tastatur, Maus & Co. interagieren. Dabei ist jedes Mal der Kernel involviert, denn dessen Treiber abstrahieren Hardware-Unterschiede. Dadurch können Anwendungen beispielsweise zum Speichern vorgesehene Daten einfach an den Kernel übergeben, ohne sich um die Unterschiede scheren zu müssen, die beim Speichern auf USB-Sticks, Netzlaufwerken und den verschiedenen Festplatten-Typen (PATA, SATA, SCSI, NVMe …) zu beachten sind. Das erledigt der Kernel mit seinen Treibern.

Parallel zur Initialisierung der Hardware hat der Kernel die Umgebung aufgesetzt, in der er die Programme ausführt. Der Kernel kontrolliert diesen „Userspace“ und regelt beispielsweise, wie häufig und lange ein Programm den Prozessor nutzen darf, bevor er an das nächste übergibt. Er verteilt auch den Arbeitsspeicher und schirmt die Programme voneinander ab, offeriert zugleich aber auch Wege, über die Programme miteinander kommunizieren können. Ferner erledigt der Kernel zahlreiche Aufgaben, für die er durch seine zentrale, alles kontrollierende Position schlicht am besten positioniert ist. Daher kümmert er sich etwa um die Zugriffsrechte und hilft mit Dateisystemen beim Ordnunghalten.

Linguistik

¯??? Meinen die Bezeichnungen Kernel, Linux und Linux-Kernel eigentlich alle das Gleiche?

¯!!! Im allgemeinen Sprachgebrauch werden diese drei Wörter oft synonym verwendet. Tatsächlich können sie aber für ganz unterschiedliche Dinge stehen.

Eindeutig ist lediglich die Bezeichnung „Linux-Kernel“: Damit ist immer der Betriebssystemkern gemeint, dessen Entwicklung Linus Torvalds vor 25 Jahren begonnen hat.

Wie jede andere Software hat auch dieser Kern (Englisch: Kernel) einen Namen: „Linux“. Mancher empfindet die Bezeichnung „Linux-Kernel“ daher ähnlich holprig und redundant wie „weißer Schimmel“ oder „iPhone-Smartphone“. Sie sorgt aber für Klarheit, denn der Begriff „Linux“ wird schon lange auch für Android, Fritz!OS, Ubuntu und Tausende andere Betriebssysteme genutzt, die Linux als Kernel einsetzen.

Noch mehrdeutiger ist die Bezeichnung „Kernel“, schließlich hat jedes Betriebssystem einen solchen – auch Windows. Trotzdem ist mit dem Begriff häufig Linux (der Kernel) gemeint.

Versionsfragen

¯??? Welche Linux-Version verwendet meine Distribution?

¯!!! Der Befehl uname -r liefert die Versionsbezeichnung des gerade laufenden Linux-Kernels. Diese ist bei einigen Distributionen aber nur ein grober Anhaltspunkt.

Ubuntu 16.10 beispielsweise verwendete zeitweise einen Kernel, der sich als „4.8.0-34-generic“ identifiziert. Das „4.8.0“ deutet an, dass der Quellcode von Linux 4.8 die Basis bildet; tatsächlich ist es aber die Version 4.8.11, was man allerdings nur im Quellcodeverwaltungssystem des Ubuntu-Kernels erfährt. Bei der „34“ handelt es sich um eine Ubuntu-eigene Revisionsbezeichnung zur eindeutigen Identifikation.

Mit „generic“ kennzeichnet Ubuntu seine Standard-Kernel-Variante. Neben diesem Image gibt es bei Ubuntu beispielsweise noch eines mit der Kennzeichnung „lowlatency“. Dieses entsteht aus demselben Quellcode, ist aber anders konfiguriert; dadurch kann er bei Bedarf schneller reagieren, was für Industriesteuerungsanlagen wichtig sein kann, aber den Datendurchsatz senkt.

Ähnlich machen es auch andere Distributionen. Bei Enterprise-Distributionen darf man allerdings nicht allzu viel auf die Versionsnummer geben: Der aktuelle Kernel von Red Hat Enterprise Linux 7 identifiziert sich etwa als „3.10.0-514.2.2.el7.x86_64“. Er unterscheidet sich aber stark von Linux 3.10, denn Red Hat hat in seinen Kernel viele Funktionen und Treiber eingebaut, die in spätere Versionen des Linux-Kernels eingeflossen sind.

Abgehakt?

¯??? Der Kernel meiner Linux-Distribution basiert auf einer Linux-Version, die laut Linux-Kernel-Entwicklern oder Kernel.org nicht mehr gepflegt wird. In einer Freigabe-Mail war sogar zu lesen: „Alle Anwender müssen upgraden.“ Muss ich jetzt auf eine neue wechseln, damit mein System wieder sicher ist?

Falls ein neuer Ubuntu-Kernel Probleme bereitet, kann man über den Boot-Manager-Eintrag „Erweiterte Optionen für Ubuntu“ das bislang genutzte Kernel-Image starten.

¯!!! Daran brauchen Sie keinerlei Gedanken zu verschwenden, solange Ihre Linux-Distribution noch gewartet wird. Innerhalb des Support-Zeitraums pflegen alle ordentlichen Distributoren den standardmäßig eingerichteten Kernel; sie reichen daher korrigierte Versionen als Update nach, um zwischenzeitlich publik gewordene Sicherheitslücken zu stopfen.

Bis zum Support-Ende von Ubuntu 16.10 braucht es Sie daher nicht zu jucken, dass die Kernel-Entwickler die Pflege von Linux 4.8 aufgegeben haben, auf dem der Ubuntu-16.10-Kernel aufbaut.

Komplettpaket

¯??? Der Linux-Kernel meiner Distribution unterstützt die Sound- und WLAN-Chips meines Notebooks nicht. Wie kann ich die Treiber aktualisieren?

¯!!! Am besten wechseln Sie auf eine neuere Linux-Distribution, die einen jüngeren Kernel mitbringt. Die Treiber für diese und viele andere Hardware-Komponenten sind nämlich ein integraler Bestandteil des Kernels; ein in Linux 4.9 enthaltener Treiber lässt sich deshalb nicht unter Linux 4.4 einsetzen.

Das ist die Kurzantwort auf ein komplexes Thema mit vielen „Wenn und Aber“. So gibt es beispielsweise einige unabhängig vom Kernel gewartete Treiber, die sich durchaus mit verschiedenen Linux-Versionen kombinieren lassen; solche Treiber sind aber eher die Ausnahme, wenn man von den Kernel-Treibern absieht, die AMD und Nvidia für ihre Grafikchips anbieten.

Fähige Programmierer können natürlich durchaus Treiber aktueller Linux-Kernel in ältere einbauen. Wie viel Arbeit so ein „Backport“ macht, hängt vom Einzelfall ab. Es wird aber schnell aufwendig, daher ist es selbst für Entwickler oft effizienter, eine neuere Linux-Distribution oder wenigstens einen jüngeren Linux-Kernel zu installieren.

Sicherheit

¯??? Die Systemaktualisierung will auch den Linux-Kernel aktualisieren. Muss ich dieses Update wirklich einspielen? Ich habe Angst, dass irgendwas danach nicht mehr funktioniert.

¯!!! Sie sollten den neuen Kernel installieren: Jedes Jahr werden Dutzende moderate und eine Handvoll schwerwiegende Sicherheitslücken im Linux-Kernel gefunden. Angreifer machen sich diese Lücken zunutze und übernehmen damit immer wieder Server, Router und IoT-Geräte. Auf Desktop-Systeme haben sie es bislang zwar selten abgesehen; das kann sich aber jeden Tag ändern.

Bei Debian, Fedora, Ubuntu und den meisten anderen Distributionen gibt es ohnehin keinen Grund zur Angst, denn diese installieren neue Kernel-Images parallel zum gerade verwendeten. Sollte ein neuer Kernel tatsächlich mal Probleme bereiten, lässt sich der zuvor eingesetzte Kernel nach wie vor über den Boot-Manager starten; manchmal ist der Eintrag für den alten Kernel allerdings in einem Untermenü versteckt.

Auswechseln?

¯??? Linus Torvalds hat eine neue Linux-Version veröffentlicht. Lohnt sich der Umstieg? Arbeitet mein System mit der neuen Version vielleicht sogar schneller?

¯!!! Alle zehn Wochen erscheinen neue Linux-Kernel, die größere Verbesserungen enthalten. Ob der Umstieg lohnt, hängt vor allem von der Antwort auf zwei Fragen ab: Profitieren Sie von den Verbesserungen der neuen Version? Rechtfertigen die Vorteile den Aufwand, den Sie mit einem Wechsel auf eine neuere Kernel-Version haben?

Die Antworten auf diese Fragen sind sehr individuell. Ob für Sie relevante Änderungen dabei sind, beantwortet ein Studium von Artikeln wie dem Kernel-Log der c’t, die Verbesserungen neuer Linux-Versionen beschreiben. Zu denen gehören immer neue und verbesserte Treiber, durch die Ihr System womöglich besser oder schneller läuft. Bei neuen PCs ist das häufiger mal der Fall, weil die dafür zuständigen Treiber oft noch Feinschliff erhalten. Manchmal sprechen auch Features für den Umstieg, wenn sich durch sie irgendwas realisieren lässt, das vorher nicht oder nur erheblich umständlicher möglich war.

Noch individueller ist die Klärung, ob die Vorteile den Aufwand rechtfertigen. Die Antwort hängt nämlich vor allem von Ihrer Motivation und Ihren Linux-Kenntnissen ab. Wer häufiger neue Linux-Kernel installiert, erledigt das mit einer Handvoll Kommandos, während er ein Heißgetränk aus der Küche holt. Wer hingegen das erste Mal einen neuen Kernel einspielt, braucht dafür schnell viele Stunden; dabei kann die Linux-Installation im dümmsten Fall sogar so durcheinander geraten, dass sich mancher nur noch mit einer Neuinstallation zu helfen weiß.

Sie sollten daher ein wenig Zeit und Experimentierfreude mitbringen, wenn Sie eigenhändig auf eine jüngere Kernel-Version wechseln wollen. Ein aktuelles Backup sollten Sie ebenfalls anlegen. Und vergessen Sie nicht, dass ein Wechsel nichts Einmaliges ist, denn auch der Kernel braucht Wartung: Im Linux-Kernel werden immer wieder Sicherheitslücken gefunden und durch neue Versionen gestopft, daher müssen Sie nach solchen Ausschau halten und diese bei Bedarf zeitnah einspielen, um sich keiner Gefahr auszusetzen. (thl@ct.de)