Ein Kernelmodul unter Linux (siehe auch LinuxKernel) ist etwas sinngemäß ähnliches, wie ein "Treiber" unter anderen Betriebssystemen - nur besser, denn man kann ein LKM (Linux Kernel Modul) zur Laufzeit laden und auch wieder entladen (ohne Neustart ;).

Beim Linux-Kernel kann man es sich beim Übersetzen raussuchen, ob ein "Treiber" fest im Kernel oder als LKM übersetzt wird. LinuxDistributionen sind i.d.R. voll modularisiert, haben also praktisch alle Treiber als LKM.

Mini-Howto

Infos über ein Modul (insbesondere Modulparameter)

modinfo modul

geladene Module anzeigen

lsmod oder cat /proc/modules

Modul laden (primitiv)

insmod modul

Modul laden (Komfort-Version, lädt auch Abhängigkeiten)

modprobe modul

Modul entladen

rmmod modul

erste Hilfe

man modprobe.conf

Module bevorzugen

Es ist möglich und manchmal auch sinnvol bestimmte Module anderen vorzuziehen.

Es ist zum Beispiel auf aktueller Hardware sinnvoll, das Modul twofish-x86_64.ko anstelle von dem automatisch ausgewählten twofish.ko zu laden.

Die Konfiguration bei aktuellen modutilities wird in den Dateien, die mit .conf enden und im Verzeichnis /etc/modprobe.d gespeichert sind, abgelegt.

Um nun das eine Modul zu bevorzugen, erstellt man eine Datei, die mit .conf endet und gibt dieser folgenden Inhalt:

Nun ist es notwendig, die geändere Konfiguration mit dem Befehl depmod -a zu übernehmen.

Damit wird beim Versuch das Modul twofish.ko zu laden, anstelle dessen alle anschließenden Befehle ausgeführt.

Konfiguration bei älteren modutilities

Der folgende Text bezieht sich auf ältere modutilities und ist damit veraltet!

Einstellungen zu Modulen (Parameter, Ladeskripte, etc) kann man über die Datei /etc/modules.conf festlegen. Nach einer Änderung muss man das Programm depmod ausführen. Die Datei wird nur in Verbindung mit modprobe wirksam, nicht mit insmod.

Einstellungen in modules.conf

Beispiel

Modulparameter

options modul parameter

options 3c59x full_duplex=1

Modul einem Gerät zuordnen

alias gerät modul

alias eth0 3c59x

Befehl nach dem Laden ausführen

post-install modul befehl

post-install ip_conntrack modprobe ip_conntrack_ftp

Befehl vor dem Entladen ausführen

pre-remove modul befehl

pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :

Weitere Möglichkeiten stehen in der ManPage zu modules.conf.

Normalerweise geschieht das Laden von Modulen vollautomisch durch kmod, den Kernel-Modul-Lader (in Verbindung mit modprobe). Bei manchen Konstellationen kann es notwendig sein, Module von Hand zu laden; wie man das elegant lösen kann, zeigt dieses /LadeSkript.

F: Wenn der Treiber für eine Hardwarekomponente nicht in der jeweiligen Distribution enthalten ist, wie wird er dann installiert?

A: Da gibt es mehrere Möglichkeiten:

F: Wie erkenne ich ein LKM?

A: Dies ist von der Version des Kernels abhängig. Ein Kernel der Version 2.4.* haben die Treiber eine ".o"-Endung. Bei 2.6.*-Kernelversionen endet der Treibername auf "*.ko". Beispiel: "snd-intel8x0m.ko" oder "snd-intel8x0m.o"

F: Wie erkennt man, welche Module zu welchem Kernel passen?

A: Das sollte dabeistehen und im Zweifelsfall kann man es auch einfach probieren, das merkt man dann schon, ob es sich laden lässt oder nicht.

/dazuko

KernelModul (zuletzt geändert am 2010-04-13 09:45:27 durch hippo64)