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