Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / SUSE Linux Enterprise Server-Dokumentation / Administrationshandbuch / System / Verwalten von Kernelmodulen
Gilt für SUSE Linux Enterprise Server 12 SP5

20 Verwalten von Kernelmodulen

Linux ist als monolithischer Kernel ausgelegt, kann jedoch mithilfe von Kernelmodulen erweitert werden. Diese besonderen Objekte lassen sich je nach Bedarf in den Kernel einfügen und wieder entfernen. Mit Kernelmodulen können also Treiber und Schnittstellen, die nicht im Kernel selbst enthalten sind, eingefügt und entfernt werden. Linux bietet einige Befehle zum Verwalten der Kernelmodule.

20.1 Auflisten der geladenen Module mit lsmod und modinfo

Der Befehl lsmod zeigt die derzeit geladenen Kernelmodule. Dieser Befehl liefert beispielsweise die folgende Ausgabe:

tux > lsmod
Module                  Size  Used by
snd_usb_audio         188416  2
snd_usbmidi_lib        36864  1 snd_usb_audio
hid_plantronics        16384  0
snd_rawmidi            36864  1 snd_usbmidi_lib
snd_seq_device         16384  1 snd_rawmidi
fuse                  106496  3
nfsv3                  45056  1
nfs_acl                16384  1 nfsv3

Die Ausgabe ist in drei Spalten gegliedert. Die Spalte Modul enthält den Namen der geladenen Module, die Spalte Größe entsprechend die Größe der einzelnen Module. Aus der Spalte Verwendet von gehen die Anzahl und der Name der verweisenden Module hervor. Diese Liste ist unter Umständen nicht vollständig.

Ausführliche Informationen zu einem bestimmten Kernelmodul erhalten Sie mit dem Befehl modinfo MODULNAME, wobei MODULNAME für den Namen des gewünschten Kernelmoduls steht. Die modinfo-Binärdatei befindet sich im Verzeichnis /sbin, die nicht zur PATH-Umgebungsvariable des Benutzers gehört. Wenn Sie den Befehl modinfo als normaler Benutzer ausführen, müssen Sie daher den vollständigen Pfad zur Binärdatei angeben:

$ /sbin/modinfo kvm
filename:       /lib/modules/4.12.14-94.37-default/kernel/arch/x86/kvm/kvm.ko
license:        GPL
author:         Qumranet
srcversion:     BDFD8098BEEA517CB75959B
depends:        irqbypass
intree:         Y
vermagic:       4.4.57-18.3-default SMP mod_unload modversions
signer:         openSUSE Secure Boot Signkey
sig_key:        03:32:FA:9C:BF:0D:88:BF:21:92:4B:0D:E8:2A:09:A5:4D:5D:EF:C8
sig_hashalgo:   sha256
parm:           ignore_msrs:bool
parm:           min_timer_period_us:uint
parm:           kvmclock_periodic_sync:bool
parm:           tsc_tolerance_ppm:uint
parm:           lapic_timer_advance_ns:uint
parm:           halt_poll_ns:uint
parm:           halt_poll_ns_grow:int
parm:           halt_poll_ns_shrink:int

20.2 Einfügen und Entfernen von Kernelmodulen

Kernelmodule können durchaus mit den Befehlen insmod und rmmod eingefügt und entfernt werden; allerdings wird das Werkzeugmodprobe empfohlen. modprobe bietet mehrere wichtige Vorteile, beispielsweise die automatische Auflösung von Abhängigkeiten und Einträge in schwarze Listen.

Wenn Sie keine Parameter angeben, wird mit dem Befehl modprobe ein angegebenes Kernelmodul installiert. modprobe muss mit Root-Berechtigungen ausgeführt werden:

tux > sudo modprobe acpi

Zum Entfernen eines Kernelmoduls geben Sie den Parameter -r an:

sudo modprobe -r acpi

20.2.1 Automatisches Laden von Kernelmodulen beim Booten

Statt die Kernelmodule manuell zu laden, können Sie sie mit dem Dienst system-modules-load.service automatisch beim Booten laden lassen. Zum Aktivieren eines Kernelmoduls fügen Sie eine .conf-Datei in das Verzeichnis /etc/modules-load.d/ ein. Die Konfigurationsdatei sollte dabei denselben Namen erhalten wie das Modul selbst, beispielsweise:

/etc/modules-load.d/rt2800usb.conf

Die Konfigurationsdatei muss den Namen des Kernelmoduls enthalten (z. B. rt2800usb).

Mit dem beschriebenen Verfahren laden Sie Kernelmodule ohne Parameter. Falls Sie ein Kernelmodul mit bestimmten Optionen laden möchten, fügen Sie stattdessen eine Konfigurationsdatei in das Verzeichnis /etc/modprobe.d/ ein. Die Datei muss die Dateinamenerweiterung .conf haben. Für den Dateinamen gilt die folgende Namenskonvention: priority-modulename.conf, beispielsweise 50-thinkfan.conf. Die Konfigurationsdatei muss den Namen des Kernelmoduls und die gewünschten Parameter enthalten. Mit dem folgenden Beispielbefehl erstellen Sie eine Konfigurationsdatei mit dem Namen des Kernelmoduls und den zugehörigen Parametern:

echo "options thinkpad_acpi fan_control=1" | sudo tee /etc/modprobe.d/thinkfan.conf
Anmerkung
Anmerkung: Laden der Kernelmodule

Die meisten Kernelmodule werden automatisch durch das System geladen, sobald ein Gerät erkannt wird oder ein Userspace bestimmte Funktionen angefordert. Sie müssen die Module daher nur in seltenen Fällen manuell in /etc/modules-load.d/ aufnehmen.

20.2.2 Eintragen von Kernelmodulen in schwarze Listen mit modprobe

Wenn ein Kernelmodul in eine schwarze Liste eingetragen wird, kann es beim Booten nicht mehr geladen werden. Dies ist von Nutzen, wenn Sie ein Modul deaktivieren möchten, das vermutlich Probleme auf dem System verursacht. Mit dem Werkzeug insmod oder modprobe können Sie Kernelmodule, die auf einer schwarzen Liste stehen, dennoch manuell laden.

Zum Eintragen eines Moduls in eine schwarze Liste tragen Sie die Zeile blacklist MODULNAME in die Datei /etc/modprobe.d/50-blacklist.conf ein. Beispiel:

blacklist nouveau

Erzeugen Sie mit dem Befehl mkinitrd (als root) ein neues initrd-Image und booten Sie den Computer neu. Diese Schritte können mit dem folgenden Befehl ausgeführt werden:

su
echo "blacklist nouveau" >> /etc/modprobe.d/50-blacklist.conf && mkinitrd && reboot

Soll ein Kernel-Modul nur vorübergehend deaktiviert werden, tragen Sie es direkt beim Booten in die Blacklist ein. Drücken Sie hierzu im Bootbildschirm die Taste E. Sie gelangen zu einem minimalen Editor, in dem Sie die Bootparameter bearbeiten können. Wechseln Sie zur Zeile, die wie folgt aufgebaut ist:

linux /boot/vmlinuz...splash= silent quiet showopts

Hängen Sie den Befehl modprobe.blacklist=MODULNAME an das Ende der Zeile an. Beispiel:

linux /boot/vmlinuz...splash= silent quiet showopts modprobe.blacklist=nouveau

Drücken Sie die Taste F10 oder StrgX. Der Computer wird mit der angegebenen Konfiguration gebootet.

Soll ein Kernelmodul dauerhaft über GRUB in eine Schwarze Liste eingetragen werden, öffnen Sie die Datei /etc/default/grub zum Bearbeiten und hängen Sie die Option modprobe.blacklist=MODULNAME an den Befehl GRUB_CMD_LINUX an. Führen Sie dann den Befehl sudo grub2-mkconfig -o /boot/grub2/grub.cfg aus, damit die Änderungen in Kraft treten.