Ce bref guide explique ce qu'est le module Linux Kernel , comment lister les modules Kernel actuellement chargés en utilisant lsmod
, et comment afficher les informations du module Linux Kernel avec modinfo
commande sous Linux.
Qu'est-ce que le module du noyau Linux ?
Le noyau Linux est le composant principal d'un système d'exploitation GNU/Linux. La fonctionnalité du noyau Linux peut être étendue sans qu'il soit nécessaire de redémarrer le système à l'aide de modules du noyau . Un module Kernel est un morceau de code qui peut être chargé et déchargé dans le noyau à la demande.
Quelques exemples de modules du noyau sont les micrologiciels et les pilotes de périphériques, qui permettent au noyau Linux d'accéder et de contrôler le matériel connecté au système. Généralement, les modules Kernel sont utilisés pour ajouter la prise en charge de nouveaux matériels (en tant que pilotes de périphériques) et/ou de systèmes de fichiers , ou pour ajouter des appels système .
Sans modules Kernel, nous devons reconstruire et redémarrer le noyau chaque fois que nous voulons une nouvelle fonctionnalité. Nous devons également construire des noyaux monolithiques plus gros et ajouter de nouvelles fonctionnalités directement dans l'image du noyau sans les modules Kernel. Avec l'aide d'un module Kernel, nous pouvons simplement éviter ces problèmes.
Les modules du noyau sont généralement stockés sous Les modules sont stockés dans /usr/lib/modules/<kernel_release_directory>
.
$ 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
Les modules du noyau sont référencés avec des noms différents dans différents systèmes d'exploitation. Par exemple, un module Kernel est appelé module chargeable du noyau (kld) dans FreeBSD, extension du noyau (kext) dans macOS, module d'extension du noyau dans AIX, pilote en mode noyau dans Windows NT et module de noyau téléchargeable (DKM) dans VxWorks. Ils sont également connus sous le nom de modules chargeables par le noyau (ou KLM) et simplement sous le nom de modules du noyau (KMOD).
Répertorier les modules du noyau Linux à l'aide de la commande lsmod
Nous pouvons afficher la liste des modules du noyau qui sont actuellement chargés dans le noyau en utilisant lsmod
(liste des modules) comme ci-dessous :
$lsmod
Exemple de résultat :
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
[...]

La commande lsmod obtient les détails des modules du noyau actuellement chargés à partir du fichier /proc/modules
.
J'espère que vous aurez une idée de base de ce que sont les modules du noyau Linux et comment répertorier les modules actuellement chargés dans le noyau Linux. Allons de l'avant et voyons comment afficher les détails d'un module spécifique du noyau.
Afficher les informations du module du noyau Linux avec la commande modinfo
Le modinfo
La commande affiche les informations détaillées d'un module Kernel donné. Par défaut, il liste les attributs d'un module Kernel sous la forme fieldname : value
, pour une lecture facile.
Pour afficher les informations d'un module Linux Kernel, par exemple 88XXau
, qui est l'adaptateur sans fil TP-Link AC600 (Archer T2U Nano) , exécutez :
$ modinfo 88XXau
Exemple de résultat :
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
[...]

Ne pas ajouter de .ko
extension à la fin du nom du module Kernel. Parce que les noms des modules du noyau n'ont pas d'extensions, mais leurs fichiers correspondants en ont.
Afficher certains détails des modules du noyau
Lorsque vous exécutez modinfo sans aucune option, il affiche un grand nombre d'informations sur le module de noyau donné. Vous pouvez affiner le résultat en n'affichant que des champs spécifiques tels que author
, description
, license
, parm
, depends
, et alias
. Les commandes suivantes affichent les détails de chaque champ du 88XXau
module.
1. Auteur du module Display Kernel (fournisseur)
Pour voir qui a écrit un module Kernel, utilisez author
drapeau.
$ modinfo -F auteur 88XXau
Realtek Semiconductor Corp.
2. Afficher la description du module noyau
Pour imprimer la description d'un module Kernel, utilisez description
drapeau.
$ modinfo -F description 88XXau
Pilote LAN sans fil Realtek
3. Afficher la licence du module Kernel
Connaître la licence d'un module Kernel peut être utile lorsque vous souhaitez savoir si le firmware et les pilotes sont open source ou fermés. Certaines distributions Linux peuvent inclure des pilotes non libres par défaut. Vous pouvez vérifier si un lecteur de périphérique est libre ou non en vérifiant la licence qui lui est attachée.
$ modinfo -F licence 88XXau
GPLLa plupart des modules Kernel sont sous licence
GPL
(Licence Publique GNU). Quelques modules peuvent avoir une double licence, par exempleBSD
etGPL
.$ modinfo -F license zram Dual BSD/GPL4. Afficher les paramètres du module Kernel
Pour afficher les paramètres d'un module Kernel, exécutez :
$ modinfo -F parm 88XXaurtw_wireless_mode :(int)rtw_monitor_overwrite_seqnum :écrase le numéro de séquence des trames injectées (int)rtw_monitor_retransmit :retransmet les trames injectées (int)rtw_monitor_disable_1m :désactive le débit de 1 Mbps par défaut pour surveiller les trames injectées (int)rtw_ips_mode :la valeur par défaut Mode IPS (int)rtw_lps_level :Le niveau LPS par défaut (int)[...]5. Afficher les dépendances des modules du noyau
Pour afficher les dépendances d'un module Kernel, exécutez :
$ modinfo -F dépend de 88XXau
cfg80211Vous pouvez également utiliser -
a/--author
,-d/--description
,-l/--license
,-p/--parameters
flags pour afficher les détails spécifiques des modules du noyau. Ce ne sont que les raccourcis pour le--field
auteur, description, licence et paramètre du drapeau. Par exemple, vous pouvez utiliser-l
ou--license
flag pour afficher la licence d'un module Kernel.$ modinfo -l kvmOu,
$ modinfo --license kvmLes commandes ci-dessus sont équivalentes à la commande suivante :
$ modinfo -F licence kvmPour plus de détails sur
modinfo
commande, consultez ses pages de manuel.$ man modinfoJ'espère que cela vous aidera.
Lire connexe :
- Répertorier ou vérifier tous les noyaux Linux installés à partir de la ligne de commande
- Gérer et surveiller les modules du noyau Linux avec Kmon