Kernel-Modul
Vorlage:ÜA Ein Kernel-Modul (kurz LKM für englisch loadable kernel module) ist ein spezielles Software-Modul, das in den Kernel eines Betriebssystems geladen und wieder daraus entfernt werden kann.[1]
Kernel-Module werden häufig für Gerätetreiber verwendet, da eine große Auswahl der Module für die unterschiedlichsten Hardware-Komponenten mit dem Betriebssystem mitgeliefert oder für dieses entwickelt werden kann, aber nur die tatsächlich benötigten Treiber in den Speicher geladen werden müssen.
Kernel-Module gibt es bei unterschiedlichen Betriebssystemen, zum Beispiel Linux, BSD oder Solaris.
Details
Das Verfahren des dynamischen Hinzufügens von Kernel-Modulen wird z. B. dazu verwendet, um einen Standardkernel an die Hardware, auf der er ausgeführt wird, anzupassen. So kann der Treiber eines vorgefundenen Peripheriegeräts zur Laufzeit des Systemkerns geladen werden, während Treiber für nicht vorhandene Hardware ignoriert werden können und somit auch keinen Arbeitsspeicher belegen.
Ein weiterer Vorteil liegt darin, dass Erweiterungen für den Kernel integriert werden können, ohne dass das Betriebssystem neu gestartet werden muss. Denkbar wäre, dass man auf diese Weise einen als Kernel-Modul realisierten Treiber entfernt, um eine neuere Version in das laufende System einbindet.
Über Kernel-Module werden auch auf Treiber von Drittanbietern realisiert. Dies ist z. B. unter macOS über Kernel-Erweiterungen der Fall, aber auch unter Linux, wenn proprietäre Treiber verwendet werden.
Kernel-Module unter Linux
Obwohl der Linux-Kernel einen monolithischen Aufbau hat, besitzt er auch eine Schnittstelle für Module als Alternative dazu, die Komponenten bereits beim Übersetzen ([[Compiler|Kompilieren}}) statisch in den Kernel zu integrieren.[2] Die ausgewählten Module werden standardmäßig in /usr/lib/modules/kernel_release
abgelegt[3] und verwenden die Dateinamenserweiterung .ko
, was für kernel object steht. Bis Kernel-Version 2.4 war die Dateinamenserweiterung noch .o
. In beiden Fällen handelt es sich um eine Objektdatei, also einer Datei, die Objektcode enthält.
Die aktuell geladenen Kernel-Module kann man sich mit Hilfe des Befehls lsmod
anzeigen lassen.
Kernelerweiterungen unter macOS
Unter macOS, ursprünglich Mac OS X und zwischenzeitlich OS X, werden englisch kernel extensions meist als Treiber für Hardware genutzt. Diese haben die Dateinamenserweiterung .kext
und werden vom Darwin-Kernel xnu als Kernel-Module bei Bedarf geladen.
Einzelnachweise
- ↑ Kernelmodule › Wiki › ubuntuusers.de. Abgerufen am 23. Juni 2019.
- ↑ Kernelmodule › Wiki › ubuntuusers.de. Abgerufen am 23. Juni 2019.
- ↑ Kernel module - ArchWiki. Abgerufen am 23. Juni 2019.