Kernel module (Español)
Los módulos del kernel son fragmentos de código que se pueden cargar y descargar en el kernel según se requiera. Extienden la funcionalidad del kernel sin necesidad de reiniciar el sistema.
Para crear un módulo del kernel, puede leer La guía de programación del módulo del kernel de Linux. Un módulo se puede configurar como integrado o cargable. Para cargar o eliminar dinámicamente un módulo, debe configurarse como un módulo cargable en la configuración del kernel (por lo tanto, la línea relacionada con el módulo mostrará la letra M
).
Obtener información
Los módulos se almacenan en /usr/lib/modules/versión_kernel
. Puede utilizar la orden uname -r
para obtener la versión actual de su kernel.
_
) o guiones (-
); sin embargo, esos símbolos son intercambiables cuando se utiliza la orden modprobe
y en los archivos de configuración en /etc/modprobe.d/
.Para mostrar qué módulos del kernel están cargados actualmente:
$ lsmod
Para mostrar información sobre un módulo:
$ modinfo nombre_módulo
Para enumerar las opciones que se establecen para un módulo cargado:
$ systool -v -m nombre_módulo
Para visualizar la configuración completa de todos los módulos:
$ modprobe -c | less
Para mostrar la configuración de un módulo en particular:
$ modprobe -c | grep nombre_módulo
Para listar las dependencias de un módulo (o alias), incluido el propio módulo:
$ modprobe --show-depends nombre_módulo
Carga automática de módulos
Hoy en día, udev maneja automáticamente la carga de todos los módulos necesarios, por lo que si no necesita utilizar ningún módulo fuera del árbol del kernel, no es necesario colocar módulos que deben cargarse en el arranque en ningún archivo de configuración. Sin embargo, hay casos en los que es posible que desee cargar un módulo adicional durante el proceso de arranque, o incluir en la lista negra otro para que su computadora funcione correctamente.
systemd
Los módulos del kernel se pueden enumerar explícitamente en archivos bajo para que systemd los cargue durante el arranque. Cada archivo de configuración se nombra del tipo . Los archivos de configuración simplemente contienen una lista de nombres de módulos del kernel para cargar, uno en cada línea. Las líneas vacías y las líneas cuyo primer carácter que no sea un espacio en blanco sea o se ignoran.
/etc/modules-load.d/virtio-net.conf
# Cargue virtio_net.ko en el arranque virtio_net
Véase modules-load.d(5) para más detalles.
Carga anticipada del módulo
Es posible que la imagen initramfs no contenga los módulos del kernel solicitados en , también puede que carezca de los archivos que se han configurado en esa carpeta. La carga anticipada del módulo depende del generador initramfs utilizado:
- : véase Mkinitcpio#MODULES
- : véase Dracut#Early kernel module loading
- : véase Booster#Early module loading
Manejo manual de módulos
Los módulos del kernel son manejados por herramientas proporcionadas por el paquete . Puede utilizar estas herramientas manualmente.
Para cargar un módulo:
# modprobe nombre_módulo
Para cargar un módulo por nombre de archivo (es decir, uno que no está instalado en ):
# insmod nombre_archivo [argumentos]
Para descargar un módulo:
# modprobe -r nombre_módulo
O alternativamente:
# rmmod nombre_módulo
Configurar las opciones del módulo
Para pasar un parámetro a un módulo del kernel, puede pasarlo manualmente con modprobe o asegurarse de que ciertos parámetros siempre se apliquen utilizando un archivo de configuración de modprobe o usando la línea de órdenes del kernel.
Manualmente en tiempo de carga utilizando modprobe
La forma básica de pasar parámetros a un módulo es utilizando la orden modprobe. Los parámetros se especifican en la línea de órdenes utilizando asignaciones simples de :
# modprobe nombre_módulo nombre_parámetro=valor_parámetro
Utilizando archivos en /etc/modprobe.d/
Los archivos en el directorio se pueden utilizar para pasar la configuración del módulo a udev, que usará modprobe
para administrar la carga de los módulos durante el arranque del sistema. Los archivos de configuración en este directorio pueden tener cualquier nombre, dado que terminan con la extensión .conf. La sintaxis es:
Por ejemplo:
Utilizando la línea de órdenes del kernel
Si el módulo está integrado en el kernel, también puede pasar opciones al módulo mediante la línea de órdenes del kernel. Para todos los cargadores de arranque comunes, la siguiente sintaxis es correcta:
nombre_módulo.nombre_parámetro=valor_parámetro
Por ejemplo:
thinkpad_acpi.fan_control=1
Simplemente añada esto a la línea del kernel de su cargador de arranque, como se describe en Parámetros del kernel.
Aliasing
Los alias son nombres alternativos para un módulo. Por ejemplo: alias mimod nombre_módulo_realmente_largo
significa que puede utilizar en lugar de . También puede utilizar comodines al estilo del intérprete de órdenes, por lo que significa que tiene el mismo efecto. Para crear un alias:
Algunos módulos tienen alias que se utilizan para cargarlos automáticamente cuando una aplicación los necesita. Desactivar estos alias puede evitar la carga automática, pero aún permitirá que los módulos se carguen manualmente.
/etc/modprobe.d/modprobe.conf
# Prevent Bluetooth autoload alias net-pf-31 off
Lista negra
La lista negra, en el contexto de los módulos del kernel, es un mecanismo para evitar que se cargue el módulo del kernel. Esto podría ser útil si, por ejemplo, no se necesita el hardware asociado, o si cargar ese módulo causa problemas: por ejemplo, puede haber dos módulos del kernel que intentan controlar la misma pieza de hardware, y cargarlos juntos daría como resultado un conflicto.
Algunos módulos se cargan como parte de initramfs. imprimirá todos los módulos detectados automáticamente: para evitar que initramfs cargue algunos de esos módulos, inclúyalos en la lista negra en un archivo .conf en y será añadido por el hook de durante la generación de la imagen. Ejecutar mostrará una lista de todos los módulos extraídos por varios hooks (por ejemplo, hook de , hook de block
, etc.). Recuerde añadir ese archivo .conf a la matriz (array) en si no tiene el hook de en su (por ejemplo, se ha desviado de la configuración predeterminada), y una vez que haya incluido en la lista negra los módulos regenere el initramfs, y reinicie después.
Utilizar archivos en /etc/modprobe.d/
Cree un archivo .conf dentro de y añada una línea para cada módulo que desee incluir en la lista negra, utilizando la palabra clave . Si, por ejemplo, desea evitar que se cargue el módulo pcspkr
para evitar sonidos a través del altavoz de la computadora:
Utilizar la línea de órdenes del kernel
También puede incluir módulos en la lista negra desde el gestor de arranque.
Simplemente añada a la línea del kernel de su gestor de arranque, como se describe en Parámetros del kernel.
Solución de problemas
Los módulos no cargan
En caso de que un módulo específico no se cargue y el registro de arranque (accesible ejecutando como superusuario root) diga que el módulo está en la lista negra, pero el directorio {{ic|/etc/modprobe.d/} } no muestra una entrada correspondiente, compruebe otro directorio fuente de modprobe en /usr/lib/modprobe.d/
para ver las entradas en la lista negra.
Un módulo no se cargará si la cadena "vermagic" contenida dentro del módulo del kernel no coincide con el valor del kernel que se está ejecutando actualmente. Si se sabe que el módulo es compatible con el kernel en ejecución actual, la verificación "vermagic" se puede ignorar con .
Véase también
- Desactivar el pitido del altavoz del PC
- Escribir un controlador WMI - una introducción a LWM