Website-Suche

So laden und entladen Sie Kernelmodule unter Linux


Ein Kernelmodul ist ein Programm, das bei Bedarf in den Kernel geladen oder aus diesem entladen werden kann, ohne dass dieser (der Kernel) notwendigerweise neu kompiliert oder das System neu gestartet werden muss, und das die Funktionalität des Kernels verbessern soll.

Im allgemeinen Softwarebegriff sind Module mehr oder weniger wie Plugins für eine Software wie WordPress. Plugins bieten Möglichkeiten zur Erweiterung der Softwarefunktionalität. Ohne sie müssten Entwickler eine einzige umfangreiche Software erstellen, bei der alle Funktionalitäten in einem Paket integriert sind. Wenn neue Funktionalitäten benötigt werden, müssten diese in neuen Versionen einer Software hinzugefügt werden.

Ohne Module müsste der Kernel ebenfalls mit allen Funktionalitäten direkt in das Kernel-Image integriert werden. Dies würde größere Kernel bedeuten und Systemadministratoren müssten den Kernel jedes Mal neu kompilieren, wenn eine neue Funktionalität benötigt wird.

Ein einfaches Beispiel für ein Modul ist ein Gerätetreiber – der es dem Kernel ermöglicht, auf eine mit dem System verbundene Hardwarekomponente/ein Gerät zuzugreifen.

Empfohlene Lektüre: So finden Sie heraus, welche Linux-Version Sie verwenden

Listen Sie alle geladenen Kernelmodule unter Linux auf

Unter Linux enden alle Module mit der Erweiterung .ko und werden normalerweise automatisch geladen, wenn die Hardware beim Systemstart erkannt wird. Ein Systemadministrator kann die Module jedoch mit bestimmten Befehlen verwalten.

Um alle aktuell geladenen Module unter Linux aufzulisten, können wir den Befehl lsmod (Module auflisten) verwenden, der den Inhalt von /proc/modules wie folgt liest.

lsmod
Module                  Size  Used by
rfcomm                 69632  2
pci_stub               16384  1
vboxpci                24576  0
vboxnetadp             28672  0
vboxnetflt             28672  0
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci
bnep                   20480  2
rtsx_usb_ms            20480  0
memstick               20480  1 rtsx_usb_ms
btusb                  45056  0
uvcvideo               90112  0
btrtl                  16384  1 btusb
btbcm                  16384  1 btusb
videobuf2_vmalloc      16384  1 uvcvideo
btintel                16384  1 btusb
videobuf2_memops       16384  1 videobuf2_vmalloc
bluetooth             520192  29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_core         36864  2 uvcvideo,videobuf2_v4l2
v4l2_common            16384  1 videobuf2_v4l2
videodev              176128  4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
media                  24576  2 uvcvideo,videodev
....

So laden und entladen (entfernen) Sie Kernelmodule unter Linux

Um ein Kernelmodul zu laden, können wir den Befehl insmod (Modul einfügen) verwenden. Hier müssen wir den vollständigen Pfad des Moduls angeben. Mit dem folgenden Befehl wird das Modul speedstep-lib.ko eingefügt.

insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

Um ein Kernelmodul zu entladen, verwenden wir den Befehl rmmod (Modul entfernen). Das folgende Beispiel entlädt oder entfernt das Modul speedstep-lib.ko.

rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

So verwalten Sie Kernelmodule mit dem Befehl modprobe

modprobe ist ein intelligenter Befehl zum Auflisten, Einfügen und Entfernen von Modulen aus dem Kernel. Es sucht im Modulverzeichnis /lib/modules/$ (uname -r) nach allen Modulen und zugehörigen Dateien, schließt jedoch alternative Konfigurationsdateien in /etc/modprobe.d aus Verzeichnis.

Hier benötigen Sie nicht den absoluten Pfad eines Moduls; Dies ist der Vorteil der Verwendung von modprobe gegenüber den vorherigen Befehlen.

Um ein Modul einzufügen, geben Sie einfach seinen Namen wie folgt ein.

modprobe speedstep-lib

Um ein Modul zu entfernen, verwenden Sie das Flag -r wie folgt.

modprobe -r speedstep-lib

Hinweis: Unter modprobe wird eine automatische Unterstrichkonvertierung durchgeführt, sodass es keinen Unterschied zwischen _ und while gibt Eingabe von Modulnamen.

Weitere Nutzungsinformationen und Optionen finden Sie auf der Modprobe-Manpage.

man modprobe

Vergessen Sie nicht, Folgendes anzuschauen:

  1. So ändern Sie Kernel-Laufzeitparameter auf dauerhafte und nicht dauerhafte Weise
  2. So installieren oder aktualisieren Sie auf die neueste Kernel-Version in CentOS 7
  3. So aktualisieren Sie den Kernel in Ubuntu auf die neueste Version

Das ist alles für jetzt! Haben Sie nützliche Ideen, die wir diesem Leitfaden hinzufügen sollen, oder haben Sie Fragen? Verwenden Sie das unten stehende Feedback-Formular, um uns diese mitzuteilen.