Este artículo demuestra el uso de la herramienta modinfo para obtener información de módulos del kernel Linux, incluyendo la ruta al archivo, versión, descripción, autor y más.



Anteriormente demostré cómo saber qué módulo del kernel Linux está utilizando un dispositivo en GNU/Linux utilizando lsmod. Ahora voy a demostrar cómo obtener información de un módulo del kernel Linux, incluyendo la ruta al archivo en el sistema de archivos.

A modo de ejemplo voy a utilizar el controlador de soporte para máquinas virtuales de VirtualBox. Es posible listar los módulos del kernel Linux actualmente cargados utilizando la herramienta lsmod:

root@hal9000:~# lsmod | grep vbox
vboxpci                28672  0
vboxnetadp             28672  0
vboxnetflt             32768  0
vboxdrv               487424  3 vboxpci,vboxnetadp,vboxnetflt

Para obtener información de un módulo (en este caso "vboxdrv") es posible recurrir a modinfo. Esta herramienta extrae información de un módulo del kernel Linux pasado como parámetro. Si el parámetro no es una ruta a un archivo, modinfo busca dentro del directorio lib/modules/ según la versión del kernel en ejecución (al igual que modprobe al momento de cargar un módulo).

Por defecto modinfo lista todos los atributos del módulo disponibles utilizando un formato "campo: valor" por línea. El nombre del archivo se lista de igual forma, aunque no se trate de un atributo en sí:

root@hal9000:~# modinfo vboxdrv
filename:       /lib/modules/4.19.0-6-amd64/misc/vboxdrv.ko
version:        6.0.14 r133895 (0x00290008)
license:        GPL
description:    Oracle VM VirtualBox Support Driver
author:         Oracle Corporation
srcversion:     7695B5492FAB00B446B1769
depends:        
retpoline:      Y
name:           vboxdrv
vermagic:       4.19.0-6-amd64 SMP mod_unload modversions 
parm:           force_async_tsc:force the asynchronous TSC mode (int)

Existen opciones para extraer únicamente los valores de los atributos más comunes, estos son los siguientes.

Autor:

root@hal9000:~# modinfo -a vboxdrv
Oracle Corporation

Descripción

root@hal9000:~# modinfo -d vboxdrv
Oracle VM VirtualBox Support Driver

Licencia:

root@hal9000:~# modinfo -l vboxdrv
GPL

Parámetros:

root@hal9000:~# modinfo -p vboxdrv
force_async_tsc:force the asynchronous TSC mode (int)

Ruta al archivo:

root@hal9000:~# modinfo -n vboxdrv
/lib/modules/4.19.0-6-amd64/misc/vboxdrv.ko

Estas opciones resulta útiles al momento de desarrollar scripts o programas que necesiten recuperar información específica de módulos, por ejemplo:

root@hal9000:~# file $(modinfo -n vboxdrv)
/lib/modules/4.19.0-6-amd64/misc/vboxdrv.ko: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=ab2ad1ea6b12e912bb975894580c37b840083437, with debug_info, not stripped

Otros campos pueden ser obtenidos con la opción -F, pasando el nombre del campo (tal como aparece en la primera columna de la salida por defecto) como parámetro:

root@hal9000:~# modinfo -F version vboxdrv
6.0.14 r133895 (0x00290008)

Los nombres de campos no son sensibles a mayúsculas.

Cabe destacar que un atributo puede no estar disponible en todos los módulos y a veces pueden haber varios campos "parm", "alias" y "depends" (repetidos).

Referencias

  • man lsmod
  • man modinfo
  • man modprobe


Tal vez pueda interesarte


Compartí este artículo