Gestión del kernel: uname, módulos (lsmod, modprobe, rmmod, depmod)

Introducción

El kernel de Linux es modular: su funcionalidad base es fija, pero puede ampliarse dinámicamente con módulos — piezas de código que se cargan y descargan en tiempo de ejecución sin necesidad de reiniciar. Esto permite, por ejemplo, activar drivers de hardware solo cuando se necesitan.

uname — Información del kernel

Muestra información sobre el kernel en ejecución.


$ uname -r          # versión del kernel
6.1.0-20-amd64

$ uname -a          # toda la información
Linux servidor 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux

$ uname -m          # arquitectura (x86_64, aarch64...)
$ uname -s          # nombre del sistema operativo (Linux)
$ uname -n          # nombre del host
          

También se puede consultar la versión del kernel en:


$ cat /proc/version
Linux version 6.1.0-20-amd64 (debian-kernel@lists.debian.org) (gcc-12 ...)
          

lsmod — Listar módulos cargados

Muestra todos los módulos del kernel cargados actualmente en memoria. Lee el contenido de /proc/modules.


$ lsmod
Module                  Size  Used by
snd_hda_intel         118784  0
snd_hda_codec         196608  1 snd_hda_intel
e1000e                319488  0
usbhid                 73728  0
          
  • Module → nombre del módulo
  • Size → tamaño en bytes
  • Used by → número de usos y qué otros módulos dependen de él

Para buscar un módulo concreto:


$ lsmod | grep bluetooth
          

modinfo — Información de un módulo

Muestra metadatos de un módulo: descripción, autor, parámetros configurables y dependencias.


$ modinfo e1000e
filename:       /lib/modules/6.1.0-20-amd64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
description:    Intel(R) PRO/1000 Network Driver
author:         Intel Corporation
license:        GPL v2
depends:        ptp
parm:           debug:Debug level (0=none,...,16=all) (int)
          

modprobe — Cargar y descargar módulos con dependencias

Es la herramienta recomendada para gestionar módulos porque resuelve automáticamente las dependencias: si el módulo A necesita el módulo B, modprobe carga ambos.

Cargar un módulo:


# modprobe bluetooth         # carga bluetooth y sus dependencias
# modprobe -v e1000e         # modo verbose: muestra qué carga
          

Descargar un módulo:


# modprobe -r bluetooth      # descarga bluetooth y dependencias no usadas
          

Pasar parámetros al cargar:


# modprobe usbhid quirks=0x04b4:0x0306:0x40
          

Configuración permanente de parámetros:

Para que los parámetros persistan, crear un fichero en /etc/modprobe.d/:


# echo "options snd_hda_intel power_save=1" > /etc/modprobe.d/audio.conf
          

Lista negra (blacklist) — impedir que un módulo se cargue:


# echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nouveau.conf
          

rmmod — Descargar un módulo sin resolver dependencias

Descarga un módulo del kernel, pero no gestiona dependencias automáticamente. Fallará si el módulo está siendo usado por otro módulo o por un proceso. Preferir modprobe -r.


# rmmod e1000e
# rmmod -f e1000e      # forzar (peligroso)
          

depmod — Regenerar el mapa de dependencias

Analiza todos los módulos disponibles y genera el fichero modules.dep con el mapa de dependencias. modprobe consulta este fichero. Se ejecuta automáticamente al instalar un nuevo kernel o al compilar un módulo.


# depmod                         # regenera para el kernel en ejecución
# depmod -a                      # mismo que el anterior
# depmod 6.1.0-20-amd64          # para una versión específica de kernel
          

El fichero generado se guarda en /lib/modules/$(uname -r)/modules.dep.

Carga automática de módulos

Para cargar módulos automáticamente en cada arranque, añadirlos a /etc/modules:


$ cat /etc/modules
# Módulos que se cargarán en el arranque
loop
lp
          

Algunas distribuciones usan /etc/modules-load.d/*.conf (systemd) para lo mismo: cada fichero contiene un módulo por línea.

Resumen: lsmod para ver, modprobe para cargar/descargar, modinfo para inspeccionar, depmod para regenerar dependencias.

Niveles de ejecución y targets de systemd

Índice de la sección

Índice del curso