Esta breve guía explica qué es el módulo Linux Kernel , cómo listar los módulos Kernel actualmente cargados usando lsmod
y cómo mostrar la información del módulo Linux Kernel con modinfo
comando en Linux.
¿Qué es el módulo Linux Kernel?
Linux Kernel es el componente principal de un sistema operativo GNU/Linux. La funcionalidad del Kernel de Linux se puede ampliar sin necesidad de reiniciar el sistema utilizando módulos del Kernel . Un módulo de Kernel es una pieza de código que se puede cargar y descargar en el kernel a pedido.
Algunos ejemplos de módulos Kernel son controladores de dispositivos y firmware, que permiten que el Kernel de Linux acceda y controle el hardware conectado al sistema. Por lo general, los módulos del núcleo se utilizan para agregar soporte para nuevo hardware (como controladores de dispositivos) y/o sistemas de archivos. , o para agregar llamadas al sistema .
Sin los módulos del Kernel, tenemos que reconstruir y reiniciar el kernel cada vez que queremos una nueva funcionalidad. También necesitamos construir kernels monolíticos más grandes y agregar nuevas funciones directamente en la imagen del kernel sin módulos Kernel. Con la ayuda de los módulos del Kernel, podemos evitar estos problemas de forma sencilla.
Los módulos del kernel generalmente se almacenan en Los módulos se almacenan en /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
Los módulos del núcleo se denominan con diferentes nombres en diferentes sistemas operativos. Por ejemplo, un módulo de kernel se conoce como módulo cargable de kernel (kld) en FreeBSD, extensión de kernel (kext) en macOS, módulo de extensión de kernel en AIX, controlador de modo kernel en Windows NT y módulo de kernel descargable (DKM) en VxWorks. También se conocen como módulos cargables del kernel (o KLM), y simplemente como módulos del kernel (KMOD).
Lista de módulos del Kernel de Linux usando el comando lsmod
Podemos ver la lista de módulos del Kernel que están actualmente cargados en el Kernel usando lsmod
(módulos de lista) comando como a continuación:
$ lsmod
Salida de muestra:
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
[...]

El comando lsmod obtiene los detalles de los módulos Kernel actualmente cargados del archivo /proc/modules
.
Espero que tenga una idea básica de qué son los módulos del kernel de Linux y cómo enumerar los módulos cargados actualmente en el kernel de Linux. Avancemos y veamos cómo ver los detalles de un módulo Kernel específico.
Mostrar información del módulo Linux Kernel con el comando modinfo
El modinfo
El comando muestra la información detallada de un módulo Kernel determinado. De forma predeterminada, enumera los atributos de un módulo Kernel en forma de fieldname : value
, para facilitar la lectura.
Para mostrar la información de un módulo del kernel de Linux, por ejemplo 88XXau
, que es el adaptador inalámbrico TP-Link AC600 (Archer T2U Nano) , ejecuta:
$ modinfo 88XXau
Salida de muestra:
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
[...]

No agregue un .ko
extensión al final del nombre del módulo Kernel. Porque los nombres de los módulos del Kernel no tienen extensiones, pero sus archivos correspondientes sí.
Mostrar ciertos detalles de los módulos del Kernel
Cuando ejecuta modinfo sin ninguna opción, muestra mucha información sobre el módulo del kernel dado. Puede restringir el resultado mostrando solo campos específicos como author
, description
, license
, parm
, depends
y alias
. Los siguientes comandos muestran los detalles de cada campo del 88XXau
módulo.
1. Mostrar autor del módulo Kernel (proveedor)
Para ver quién escribió un módulo Kernel, use author
bandera.
$ modinfo -F author 88XXau
Realtek Semiconductor Corp.
2. Mostrar descripción del módulo Kernel
Para imprimir la descripción de un módulo Kernel, use description
bandera.
$ modinfo -F description 88XXau
Realtek Wireless Lan Driver
3. Mostrar licencia del módulo Kernel
Conocer la licencia de un módulo Kernel podría ser útil cuando desee saber si el firmware y los controladores son de código abierto o cerrado. Algunas distribuciones de Linux pueden incluir controladores no libres de forma predeterminada. Puede verificar si una unidad de dispositivo es libre o no libre comprobando la licencia adjunta.
$ modinfo -F license 88XXau
GPL
La mayoría de los módulos de Kernel tienen licencia bajo GPL
(Licencia Pública GNU). Algunos módulos pueden tener licencia dual, por ejemplo, BSD
y GPL
.
$ modinfo -F license zram Dual BSD/GPL
4. Mostrar parámetros del módulo Kernel
Para ver los parámetros de un módulo Kernel, ejecute:
$ 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. Mostrar las dependencias de los módulos del Kernel
Para ver las dependencias de un módulo Kernel, ejecute:
$ modinfo -F depends 88XXau
cfg80211
También puede usar -a/--author
, -d/--description
, -l/--license
, -p/--parameters
banderas para mostrar los detalles específicos de los módulos del Kernel. Estos son solo los atajos para el --field
autor, descripción, licencia y parm de la bandera. Por ejemplo, puede usar -l
o --license
marcar para ver la licencia de un módulo Kernel.
$ modinfo -l kvm
O,
$ modinfo --license kvm
Los comandos anteriores son equivalentes al siguiente comando:
$ modinfo -F license kvm
Para más detalles sobre modinfo
comando, busque en sus páginas man.
$ man modinfo
Espero que esto ayude.
Lectura relacionada:
- Enumerar o comprobar todos los kernels de Linux instalados desde la línea de comandos
- Administre y supervise los módulos del kernel de Linux con Kmon