GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Anfängerleitfaden zur Kernelmodulkonfiguration in Linux

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.ko
Hinweis :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 fscache
Hinweis :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


Cent OS
  1. Linux-Kernel-Module, ohne die wir nicht leben können

  2. Anfängerleitfaden für Udev unter Linux

  3. Linux-Kernel-Timer ändern

  4. Wie kodiere ich ein Linux-Kernel-Modul?

  5. Was ist ein verdorbener Kernel in Linux?

So laden oder entladen Sie ein Linux-Kernel-Modul

So laden und entladen Sie Kernel-Module in Linux

Lsmod-Befehl in Linux (Kernel-Module auflisten)

Modprobe-Befehl unter Linux

Zeigen Sie Linux-Kernel-Modulinformationen mit dem Modinfo-Befehl an

Vollständiges Handbuch zur Linux-Protokollierung