Der Linux-Kernel wird vom Bootloader in den Arbeitsspeicher geladen. Kernel-Module werden bei Bedarf dynamisch geladen und entladen. Sie stellen Gerätetreiber bereit, um dem Kernel den Zugriff auf neue Hardware zu ermöglichen, unterstützen verschiedene Dateisystemtypen und erweitern allgemein die Funktionalität des Kernels.
Auflisten der geladenen Kernel-Module
Verwenden Sie lsmod, um aufzulisten, welche Kernelmodule derzeit in den Kernel geladen sind Befehl. Dieser Befehl erzeugt eine Ausgabe, indem er /proc/modules liest Datei. Beispiel:
# lsmod Module Size Used by ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw xfs 985426 2 libcrc32c 12644 1 xfs ...
Die Verwendet von Spalte gibt die Gesamtzahl der Prozesse an, die das Modul und die anderen Module verwenden, von denen es abhängt, gefolgt von einer Liste dieser abhängigen Module.
kmod-Paket
Der Befehl lsmod und andere Kernel-Moduldateien und Dienstprogramme wie modinfo, modprobe, depmod, insmod und rmmod werden vom kmod-Paket bereitgestellt:
# rpm -qf /sbin/lsmod kmod-20-9.el7.x86_64
Geben Sie Folgendes ein, um alle vom kmod-Paket bereitgestellten Dateien aufzulisten:
# rpm -ql kmod /etc/depmod.d /etc/depmod.d/dist.conf /etc/modprobe.d /usr/bin/kmod /usr/lib/modprobe.d /usr/sbin/depmod /usr/sbin/insmod /usr/sbin/lsmod /usr/sbin/modinfo /usr/sbin/modprobe /usr/sbin/rmmod /usr/sbin/weak-modules /usr/share/bash-completion/completions/kmod /usr/share/doc/kmod-20 /usr/share/doc/kmod-20/COPYING /usr/share/doc/kmod-20/NEWS /usr/share/doc/kmod-20/README /usr/share/doc/kmod-20/TODO /usr/share/man/man5/depmod.d.5.gz /usr/share/man/man5/modprobe.conf.5.gz /usr/share/man/man5/modprobe.d.5.gz /usr/share/man/man5/modules.dep.5.gz /usr/share/man/man5/modules.dep.bin.5.gz /usr/share/man/man8/depmod.8.gz /usr/share/man/man8/insmod.8.gz /usr/share/man/man8/kmod.8.gz /usr/share/man/man8/lsmod.8.gz /usr/share/man/man8/modinfo.8.gz /usr/share/man/man8/modprobe.8.gz /usr/share/man/man8/rmmod.8.gz
Moduldetails auflisten
Der Befehl modinfo zeigt detaillierte Informationen zu einem bestimmten Kernelmodul an. Um beispielsweise Informationen über das iptables-Kernelmodul anzuzeigen, geben Sie Folgendes ein:
# modinfo ip_tables filename: /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko description: IPv4 packet filter author: Netfilter Core Team [[email protected]] license: GPL rhelversion: 7.3 srcversion: EDBAB32FC38D6942C83A4B1 depends: intree: Y vermagic: 3.10.0-514.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: D4:88:63:A7:C1:6F:CC:27:41:23:E6:29:8F:74:F0:57:AF:19:FC:54 sig_hashalgo: sha256
hier
Dateiname :Der absolute Pfad der Kernel-Objektdatei
Beschreibung :Die kurze Beschreibung des Moduls
Alias :Die internen Aliasnamen für das Modul, falls
abhängig :Eine durch Kommas getrennte Liste von Modulen, von denen dieses Modul abhängig ist, falls vorhanden
parm :Der Parametername und eine kurze Beschreibung
Module werden aus /lib/modules/[kernel_version]/kernel geladen Verzeichnis. Um beispielsweise den absoluten Pfad der Kernel-Objektdatei ip_tables anzuzeigen, :
# modinfo -n ip_tables /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko
Laden und Entladen von Kernel-Modulen
Module laden
Kernel-Module werden mit dem Befehl modprobe geladen. Der Gerätemanager für den Linux-Kernel, udev, verwendet modprobe, um Treiber für automatisch erkannte Hardware zu laden. Zum Beispiel um das Kernelmodul ip_tables zu laden:
# modprobe ip_tables
So überprüfen Sie, ob das Modul geladen wurde:
# lsmod | grep ip_tables ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw
Die abhängigen Module werden zuerst geladen. Verwenden Sie modprobe –v (ausführlich), um die Abhängigkeitsauflösung beim Laden eines Kernelmoduls anzuzeigen. Zum Beispiel:
# modprobe -v nfs insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/fscache/fscache.ko insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/nfs/nfs.koHinweis :modprobe verwendet den Befehl insmod, um die Module in den Kernel zu laden. Verwenden Sie jedoch nicht insmod, da dieser Befehl keine Abhängigkeiten auflöst.
Module entladen
Kernel-Module mit modprobe –r entladen Befehl. Sie können auch die ausführliche Option verwenden. Um beispielsweise das nfs-Kernelmodul zu entladen, geben Sie Folgendes ein:
# modprobe -rv nfs rmmod nfs rmmod fscacheHinweis :Der Befehl modprobe –r verwendet rmmod, um die Module zu entladen. Aber ähnlich wie insmod wird es nicht empfohlen, rmmod direkt zu verwenden, um Kernel-Module zu entladen.
Module werden in umgekehrter Reihenfolge entladen, wobei das Kernelmodul nfs.ko zuerst entladen wird, gefolgt von den Modulen, von denen es abhängig war. Module, die von einem Prozess verwendet werden, oder Module, die von anderen geladenen Modulen benötigt werden, werden nicht entladen.
Kernel-Modul-Parameter
So wie der Kernel Bootzeitparameter akzeptieren kann, um das Verhalten des Kernels zu ändern, können Kernelmodule auch Parameter akzeptieren, um ihr Verhalten zu ändern. Die Syntax zum Übergeben von Parametern an ein Kernelmodul mit modprobe lautet:
# modprobe [module_name] [parameter=value]
Mehrere Parameter=Wert-Paare können übergeben werden, indem die Paare durch Leerzeichen getrennt werden. Stellen Sie sicher, dass das Modul nicht zuvor geladen wurde, da modprobe das Modul nicht neu lädt.
Konfigurationsverzeichnis für modprobe
Das Konfigurationsverzeichnis für modprobe ist /etc/modprobe.d. Erstellen Sie *.conf-Dateien in /etc/modprobe.d, um:
– Optionen anzugeben
– Aliase zu erstellen
– Normales modprobe-Verhalten außer Kraft zu setzen
– Kernel-Module auf die schwarze Liste zu setzen
Das Format dieser .conf-Dateien ist ein Befehl pro Zeile. Gültige Befehle zur Verwendung in diesen Dateien umfassen die folgenden:
alias, options, install, remove, blacklist
Alias
Verwenden Sie den Syntax-Alias alias_name module_name, um alternative Namen für Kernel-Module zu erstellen. Sie können auch Shell-Platzhalter in Aliasnamen verwenden. Beispiel:
alias usbdevfs usbcore
Optionen
Verwenden Sie die Syntaxoptionen Modulname-Option(en), um Optionen zu Modulname hinzuzufügen. Beispiel:
options b43 nohwcrypt=1 qos=0
Installieren
Verwenden Sie die Syntax install module_name command(s), um modprobe anzuweisen, Shell-Befehle auszuführen, anstatt das Modul in den Kernel einzufügen. Beispiel:
install net-pf-6 /bin/true
Entfernen
Dies ähnelt dem Installationsbefehl, außer dass er aufgerufen wird, wenn „modprobe –r“ ausgeführt wird. Verwenden Sie die Syntax remove module_name command(s), um „modprobe –r“ anzuweisen, Shell-Befehle auszuführen, anstatt das Modul aus dem Kernel zu entladen.
Schwarze Liste
Verwenden Sie die Syntax blacklist module_name, um modprobe anzuweisen, die internen Aliase eines Moduls zu ignorieren. Interne Aliase werden bei Verwendung des Befehls modinfo [Modulname] angezeigt. Das Schlüsselwort Blacklist wird normalerweise verwendet, wenn die zugehörige Hardware nicht benötigt wird oder wenn zwei oder mehr Module dieselben Geräte unterstützen oder ein Modul ungültigerweise behauptet, ein Gerät zu unterstützen.
Weitere Informationen finden Sie auf der Manpage modprobe.d.
# man modprobe.d