Der Linux-Kernel ist das Herzstück des Linux-Betriebssystems. Dieses Programm wird unmittelbar nach dem Systemlader gestartet und läuft kontinuierlich, bis der Rechner heruntergefahren wird. Er verwaltet die Hardware-Ressourcen (Prozessor, Arbeitsspeicher, Festplatten, Netzwerkkarten und andere Geräte) und bearbeitet die Systemaufrufe (System Calls) der Programme, beispielsweise wenn ein Programm eine Datei öffnet, Arbeitsspeicher anfordert oder eine Netzwerkverbindung herstellt.
Der Kernel ist die unterste Ebene des Betriebssystems, die direkt mit der Hardware kommuniziert. Anwendungsprogramme, die Befehlszeile und die grafische Benutzeroberfläche greifen nicht direkt auf die Hardware zu, sondern fordern den Zugriff über den Kernel an, sodass ein fehlerhaftes Programm den Speicher der anderen Prozesse nicht beschädigen kann.
Die Hauptaufgaben des Kernels
- Prozessverwaltung und -planung: Legt fest, welcher Prozess wann und auf welchem Prozessorkern ausgeführt werden soll.
- Speicherverwaltung: Sie verteilt den physischen Speicher, verwaltet den virtuellen Speicher und den Swap-Speicher und beendet bei Speichermangel mithilfe des OOM-Killers einen Prozess.
- Geräteverwaltung: Die Gerätetreiber sind entweder Teil des Kernels oder ladbare Kernelmodule.
- Dateisysteme: Unterstützung für ext4, XFS, Btrfs und weitere Dateisysteme.
- Netzwerk: Grundlagen der TCP/IP-Protokolle und der Firewall (netfilter, nftables).
Monolithisch, aber modular
Der Linux-Kernel ist monolithisch, das heißt, die oben genannten Funktionen werden in einem einzigen Programm ausgeführt, das in einem gemeinsamen Adressraum läuft. Seltener genutzte Teile, wie beispielsweise bestimmte Gerätetreiber, sind jedoch auch als Module verfügbar, die während des Betriebs geladen werden können. Die geladenen Module werden mit dem Befehl „lsmod“ aufgelistet.
Kernel-Versionen
Die Entwicklung des Kernels erfolgt öffentlich und ist um kernel.org herum organisiert, wobei an jeder Veröffentlichung mehrere tausend Entwickler mitwirken. Etwa alle zwei bis drei Monate erscheint eine neue Hauptversion. Bestimmte Versionen werden als Langzeit-Support-Versionen (LTS) über Jahre hinweg gepflegt. Die Distributionen liefern meist einen eigenen Kernel aus: Sie wählen eine bestimmte Version aus und portieren die Sicherheitspatches bis zum Ende der Unterstützungsdauer dorthin zurück. Daher kann die Kernel-Versionsnummer auf einem AlmaLinux- oder Ubuntu-Server älter erscheinen als die aktuellste Version auf kernel.org, enthält jedoch dennoch die neuesten Patches.
Überprüfung des Kernels auf dem Server
uname -r # a futó kernel verziója
dmesg | tail -n 50 # a kernel legutóbbi üzenetei (root jog kell)
rpm -q kernel # a telepített kernelek AlmaLinux/Rocky Linux alatt
dpkg -l 'linux-image*' | grep ^ii # ugyanez Debian/Ubuntu alatt
Ein neuer Kernel wird nach der Paketaktualisierung erst durch einen Neustart wirksam. Wenn der Befehl „uname -r“ eine ältere Version anzeigt als der zuletzt installierte Kernel, läuft auf dem Server noch der alte Kernel. Für eine Kernel-Aktualisierung ohne Neustart stehen Live-Patching-Lösungen zur Verfügung, beispielsweise KernelCare oder kpatch.
Eigener Kernel auf dem VPS
Die KVM-basierte Virtualisierung bietet eine vollständige virtuelle Maschine, sodass auf dem KVM-VPS ein eigener Kernel läuft, den Sie aktualisieren und bei Bedarf auch eigene Module laden können. Unter AlmaLinux können Sie einen neueren Kernel als den der Distribution aus dem ELRepo-Repository installieren, siehe: Installation des Mainline-Linux-Kernels unter AlmaLinux. Bei Shared Hosting wird der Kernel vom Anbieter verwaltet. Über die Vorteile und Risiken eines selbst kompilierten Kernels informieren wir Sie in unserem Blogbeitrag zum Thema „Maßgeschneiderter Linux-Kernel“.
