Kernelmodule

Aus xinux.net
Zur Navigation springen Zur Suche springen

Kernelmodule

Der Linux-Kernel besitzt grundsätzlich einen monolithischen Aufbau, bietet jedoch auch die Möglichkeit, Module zur Laufzeit zu laden und zu entladen. Ein Kernelmodul ist im Allgemeinen ein Teil oder eine Erweiterung des Kernels. Beispielsweise sind alle Hardwaretreiber (wie WLAN-Karte, Soundkarte usw.) als Modul angelegt. Die meisten Linux-Distributionen, einschließlich Ubuntu, machen starken Gebrauch von Kernelmodulen, um die bestmögliche Hardwarekompatibilität mit nur einem "allgemeinen" Kernel zu erreichen. In der Regel werden alle notwendigen Module beim Systemstart und falls nötig zur Laufzeit geladen, sodass der Nutzer sich nicht weiter darum kümmern muss.

Modulverwaltung

  • Module können geladen und entladen werden mit:
   modprobe [Optionen] Modulname
Optionen sind unter anderem
  • -v: Ausführliche Ausgabe
  • -n: Simuliert das Laden des Moduls, lädt es aber nicht
  • -a: Lädt alle in der Kommandozeile angegebenen Module
  • -r: Entlädt Module


Installation

Die Programme zum Umgang mit den Modulen sollten in der Standardinstallation enthalten sein, können aber ansonsten über das Paket module-init-tools installiert werden.

Tools

Verschiedene Kommandos bieten unterschiedliche Funktionalitäten:

  • lsmod: Zeigt geladene Module an
  • modprobe: Universelles und mächtiges Werkzeug zum Entladen und Laden von Modulen
  • rmmod: Einfaches Tool zum Entfernen von Modulen
  • insmod: Einfaches Tool zum Installieren von Modulen
  • depmod: Erstellt Dateien zur Auflösung von Modulabhängigkeiten
  • modinfo: Informationen über Module

Ort, wo die Module des laufenden Kernels liegen

Die Module des aktuellen Kernels befinden sich im Verzeichnis /lib/modules/$(uname -r).
  • find /lib/modules/$(uname -r) -name "*.ko"

Geladene Module anzeigen

Mit dem Befehl lsmod kann man die aktuell geladenen Module anzeigen lassen.
  • lsmod

Information anzeigen

Mit dem Befehl modinfo kann man Informationen zu einem bestimmten Modul anzeigen lassen.
  • modinfo usb_common

Module laden/entladen

Mit dem Befehl modprobe können Module zur Laufzeit geladen oder entladen werden. Modprobe löst dabei automatisch Abhängigkeiten auf.
  • modprobe -v usb_common

Abhängigkeiten von Modulen

Manche Module können erst genutzt bzw. geladen werden, wenn andere Module geladen sind, da sie von diesen abhängen.
  • Diese Abhängigkeiten sind in der Datei /lib/module/<Kernelversion>/modules.dep hinterlegt.
  • depmod -a

Automatisches Laden von Modulen

  • cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
wlan

Automatisches Laden verhindern - Blacklisting

  • Unter bestimmten Umständen kann es sinnvoll sein, das Laden von bestimmten Modulen explizit zu verbieten.
  • Dies geschieht durch den Eintrag des entsprechenden Moduls in eine so genannte Blacklist-Datei.
  • Diese Dateien befinden sich im Verzeichnis /etc/modprobe.d.
  • In der Regel sind hier schon einige Einträge zu finden.
  • Die Datei legt man mit einem Editor mit Root-Rechten an bzw. öffnet eine vorhandene Datei) und fügt einen Dateieintrag nach folgendem Schema hinzu, je ein Eintrag pro Zeile:

Blacklist Datei

  • cat /etc/modprobe.d/blacklist.conf
 # This file lists those modules which we don't want to be loaded by
# alias expansion, usually so some other driver will be loaded for the
# device instead.

# evbug is a debug tool that should be loaded explicitly
blacklist evbug

# these drivers are very simple, the HID drivers are usually preferred
blacklist usbmouse
blacklist usbkbd
...

Man kann auch neue Dateien anlegen. Diese müssen lediglich mit blacklist- beginnen

root@zero:/etc/modprobe.d# cat > blacklist-wlan.conf
blacklist wlan
(Strg+C)