Kernelmodule
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)