Diese kurze Anleitung erklärt, was das Linux-Kernel-Modul ist , wie man die aktuell geladenen Kernel-Module mit lsmod
, und wie man mit modinfo
Befehl unter Linux.
Was ist ein Linux-Kernel-Modul?
Der Linux-Kernel ist die Hauptkomponente eines GNU/Linux-Betriebssystems. Die Funktionalität des Linux-Kernels kann mit Hilfe von Kernel-Modulen erweitert werden, ohne dass das System neu gestartet werden muss . Ein Kernel-Modul ist ein Stück Code, das bei Bedarf in den Kernel geladen und entladen werden kann.
Einige Beispiele für Kernel-Module sind Firmware und Gerätetreiber, die es dem Linux-Kernel ermöglichen, auf mit dem System verbundene Hardware zuzugreifen und diese zu steuern. Im Allgemeinen werden die Kernel-Module verwendet, um Unterstützung für neue Hardware (als Gerätetreiber) und/oder Dateisysteme hinzuzufügen , oder zum Hinzufügen von Systemaufrufen .
Ohne Kernel-Module müssen wir den Kernel jedes Mal neu erstellen und neu starten, wenn wir eine neue Funktionalität wünschen. Wir müssen auch größere monolithische Kernel bauen und neue Funktionen direkt in das Kernel-Image ohne Kernel-Module einfügen. Mit Hilfe eines Kernel-Moduls können wir diese Probleme einfach umgehen.
Kernel-Module werden normalerweise unter Modules are saved in /usr/lib/modules/<kernel_release_directory>
gespeichert .
$ ls /usr/lib/modules/5.11.18-300.fc34.x86_64/
bls.conf modules.builtin.bin modules.symbols
build modules.builtin.modinfo modules.symbols.bin
config modules.dep source
extra modules.dep.bin symvers.gz
kernel modules.devname System.map
modules.alias modules.drm updates
modules.alias.bin modules.modesetting vdso
modules.block modules.networking vmlinuz
modules.builtin modules.order weak-updates
modules.builtin.alias.bin modules.softdep
Kernelmodule werden in verschiedenen Betriebssystemen mit unterschiedlichen Namen bezeichnet. Beispielsweise wird ein Kernelmodul in FreeBSD als Kernel Loadable Module (kld), Kernel Extension (kext) in macOS, Kernel Extension Module in AIX, Kernelmodustreiber in Windows NT und Downloadable Kernel Module (DKM) in VxWorks bezeichnet. Sie werden auch als ladbare Kernelmodule (oder KLM) und einfach als Kernelmodule (KMOD) bezeichnet.
Listen Sie Linux-Kernel-Module mit dem Befehl lsmod auf
Wir können die Liste der aktuell in den Kernel geladenen Kernel-Module mit lsmod
anzeigen (Module auflisten) Befehl wie unten:
$ lsmod
Beispielausgabe:
Module Size Used by
vhost_net 32768 0
vhost 57344 1 vhost_net
vhost_iotlb 16384 1 vhost
tap 28672 1 vhost_net
tun 57344 1 vhost_net
rfcomm 90112 4
snd_seq_dummy 16384 0
snd_hrtimer 16384 1
xt_CHECKSUM 16384 1
xt_MASQUERADE 20480 3
xt_conntrack 16384 1
ipt_REJECT 16384 2
nf_nat_tftp 16384 0
nf_conntrack_tftp 20480 3 nf_nat_tftp
bridge 290816 0
stp 16384 1 bridge
llc 16384 2 bridge,stp
ccm 20480 6
nft_objref 16384 2
nf_conntrack_netbios_ns 16384 1
nf_conntrack_broadcast 16384 1 nf_conntrack_netbios_ns
nft_fib_inet 16384 1
[...]
Der Befehl lsmod ruft die Details der aktuell geladenen Kernel-Module aus der Datei /proc/modules
ab .
Ich hoffe, Sie haben eine grundlegende Vorstellung davon, was Linux-Kernel-Module sind und wie Sie die aktuell geladenen Module im Linux-Kernel auflisten. Lassen Sie uns fortfahren und sehen, wie Sie die Details eines bestimmten Kernel-Moduls anzeigen können.
Linux-Kernel-Modulinformationen mit dem Befehl modinfo anzeigen
Die modinfo
Der Befehl zeigt die detaillierten Informationen eines bestimmten Kernelmoduls an. Standardmäßig listet es die Attribute eines Kernel-Moduls in Form von fieldname : value
auf , zum einfachen Lesen.
Um die Informationen eines Linux-Kernel-Moduls anzuzeigen, zum Beispiel 88XXau
, das ist der TP-Link AC600 (Archer T2U Nano) Wireless-Adapter , ausführen:
$ modinfo 88XXau
Beispielausgabe:
filename: /lib/modules/5.11.18-300.fc34.x86_64/extra/88XXau.ko.xz
version: v5.6.4.2_35491.20191025
author: Realtek Semiconductor Corp.
description: Realtek Wireless Lan Driver
license: GPL
srcversion: 4EC0EE17404B8E38B323235
alias: usb:v7392pB611ddcdscdpiciscipin
alias: usb:v7392pA813ddcdscdpiciscipin
alias: usb:v7392pA812ddcdscdpiciscipin
alias: usb:v7392pA811ddcdscdpiciscipin
alias: usb:v3823p6249ddcdscdpiciscipin
alias: usb:v2357p0122ddcdscdpiciscipin
alias: usb:v2357p0120ddcdscdpiciscipin
[...]
Hängen Sie kein .ko
an Erweiterung am Ende des Kernel-Modulnamens. Weil Kernel-Modulnamen keine Erweiterungen haben, ihre entsprechenden Dateien aber schon.
Anzeige bestimmter Details von Kernel-Modulen
Wenn Sie modinfo ohne Optionen ausführen, zeigt es eine Menge Informationen über das angegebene Kernelmodul an. Sie können das Ergebnis eingrenzen, indem Sie nur bestimmte Felder wie author
anzeigen , description
, license
, parm
, depends
ab , und alias
. Die folgenden Befehle zeigen die Details jedes Felds des 88XXau
an Modul.
1. Autor des Kernel-Moduls anzeigen (Anbieter)
Um anzuzeigen, wer ein Kernel-Modul geschrieben hat, verwenden Sie author
Flagge.
$ modinfo -F author 88XXau
Realtek Semiconductor Corp.
2. Beschreibung des Kernelmoduls anzeigen
Um die Beschreibung eines Kernel-Moduls auszudrucken, verwenden Sie description
Flagge.
$ modinfo -F description 88XXau
Realtek Wireless Lan Driver
3. Lizenz des Kernel-Moduls anzeigen
Die Kenntnis der Lizenz eines Kernel-Moduls kann nützlich sein, wenn Sie wissen möchten, ob die Firmware und die Treiber Open Source oder Closed Source sind. Einige Linux-Distributionen können standardmäßig unfreie Treiber enthalten. Sie können überprüfen, ob ein Gerätelaufwerk kostenlos oder nicht kostenlos ist, indem Sie die damit verbundene Lizenz überprüfen.
$ modinfo -F license 88XXau
GPL
Die meisten Kernel-Module sind unter GPL
lizenziert (GNU Public License). Einige Module haben möglicherweise eine Doppellizenz, zum Beispiel BSD
und GPL
.
$ modinfo -F license zram Dual BSD/GPL
4. Parameter des Kernel-Moduls anzeigen
Um die Parameter eines Kernel-Moduls anzuzeigen, führen Sie Folgendes aus:
$ modinfo -F parm 88XXau rtw_wireless_mode: (int) rtw_monitor_overwrite_seqnum:Overwrite the sequence number of injected frames (int) rtw_monitor_retransmit:Retransmit injected frames (int) rtw_monitor_disable_1m:Disable default 1Mbps rate for monitor injected frames (int) rtw_ips_mode:The default IPS mode (int) rtw_lps_level:The default LPS level (int) [...]
5. Abhängigkeiten von Kernel-Modulen anzeigen
Um die Abhängigkeiten eines Kernel-Moduls anzuzeigen, führen Sie Folgendes aus:
$ modinfo -F depends 88XXau
cfg80211
Sie können auch -a/--author
verwenden , -d/--description
, -l/--license
, -p/--parameters
Flags, um die spezifischen Details von Kernel-Modulen anzuzeigen. Dies sind nur die Abkürzungen für das --field
Autor, Beschreibung, Lizenz und Parameter des Flags. Sie können beispielsweise -l
verwenden oder --license
Flag, um die Lizenz eines Kernel-Moduls anzuzeigen.
$ modinfo -l kvm
Oder,
$ modinfo --license kvm
Die obigen Befehle entsprechen dem folgenden Befehl:
$ modinfo -F license kvm
Für mehr Details über modinfo
Befehl, schauen Sie in seine Manpages.
$ man modinfo
Hoffe das hilft.
Verwandte Lektüre:
- Alle installierten Linux-Kernel von der Befehlszeile aus auflisten oder prüfen
- Linux-Kernel-Module mit Kmon verwalten und überwachen