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óduloSize→ tamaño en bytesUsed 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.