El kernel de Linux se carga en la memoria mediante el cargador de arranque. Los módulos del núcleo se cargan y descargan dinámicamente según se requiera. Proporcionan controladores de dispositivos para permitir que el núcleo acceda a nuevo hardware, compatibilidad con diferentes tipos de sistemas de archivos y, en general, amplían la funcionalidad del núcleo.
Lista de los módulos del kernel cargados
Para enumerar qué módulos del kernel están actualmente cargados en el kernel, use el lsmod dominio. Este comando produce una salida al leer el /proc/modules expediente. Ejemplo:
# lsmod Module Size Used by ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw xfs 985426 2 libcrc32c 12644 1 xfs ...
El Usado por La columna proporciona el número total de procesos que utilizan el módulo y los otros módulos de los que depende, seguido de una lista de esos módulos dependientes.
paquete kmod
El comando lsmod y otros archivos y utilidades del módulo del kernel como modinfo, modprobe, depmod, insmod y rmmod son proporcionados por el paquete kmod:
# rpm -qf /sbin/lsmod kmod-20-9.el7.x86_64
Para enumerar todos los archivos proporcionados por el paquete kmod, ingrese:
# rpm -ql kmod /etc/depmod.d /etc/depmod.d/dist.conf /etc/modprobe.d /usr/bin/kmod /usr/lib/modprobe.d /usr/sbin/depmod /usr/sbin/insmod /usr/sbin/lsmod /usr/sbin/modinfo /usr/sbin/modprobe /usr/sbin/rmmod /usr/sbin/weak-modules /usr/share/bash-completion/completions/kmod /usr/share/doc/kmod-20 /usr/share/doc/kmod-20/COPYING /usr/share/doc/kmod-20/NEWS /usr/share/doc/kmod-20/README /usr/share/doc/kmod-20/TODO /usr/share/man/man5/depmod.d.5.gz /usr/share/man/man5/modprobe.conf.5.gz /usr/share/man/man5/modprobe.d.5.gz /usr/share/man/man5/modules.dep.5.gz /usr/share/man/man5/modules.dep.bin.5.gz /usr/share/man/man8/depmod.8.gz /usr/share/man/man8/insmod.8.gz /usr/share/man/man8/kmod.8.gz /usr/share/man/man8/lsmod.8.gz /usr/share/man/man8/modinfo.8.gz /usr/share/man/man8/modprobe.8.gz /usr/share/man/man8/rmmod.8.gz
Detalles del módulo de listado
El comando modinfo muestra información detallada sobre un módulo de kernel específico. Por ejemplo, para mostrar información sobre el módulo kernel de iptables, ingrese:
# modinfo ip_tables filename: /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko description: IPv4 packet filter author: Netfilter Core Team [[email protected]] license: GPL rhelversion: 7.3 srcversion: EDBAB32FC38D6942C83A4B1 depends: intree: Y vermagic: 3.10.0-514.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: D4:88:63:A7:C1:6F:CC:27:41:23:E6:29:8F:74:F0:57:AF:19:FC:54 sig_hashalgo: sha256
aquí ,
nombre de archivo :La ruta absoluta del archivo de objeto del núcleo
descripción :La breve descripción del módulo
alias :Los nombres de alias internos para el módulo, si los hay
depende :una lista separada por comas de los módulos de los que depende este módulo, si corresponde
parm :El nombre del parámetro y una breve descripción
Los módulos se cargan desde /lib/modules/[kernel_version]/kernel directorio. Por ejemplo, para mostrar la ruta absoluta del archivo de objeto del núcleo ip_tables,:
# modinfo -n ip_tables /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko
Cargar y descargar módulos del kernel
Cargando módulos
Los módulos del kernel se cargan mediante el comando modprobe. El administrador de dispositivos para el kernel de Linux, udev, usa modprobe para cargar controladores para hardware detectado automáticamente. Por ejemplo, para cargar el módulo del kernel ip_tables:
# modprobe ip_tables
Para verificar que el módulo se ha cargado:
# lsmod | grep ip_tables ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw
Los módulos dependientes se cargan primero. Utilice modprobe –v (detallado) para ver la resolución de dependencia al cargar un módulo del kernel. Por ejemplo:
# modprobe -v nfs insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/fscache/fscache.ko insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/nfs/nfs.koNota :modprobe usa el comando insmod para cargar los módulos en el kernel. Sin embargo, no use insmod porque este comando no resuelve las dependencias.
Descarga de módulos
Descargue los módulos del kernel usando modprobe –r dominio. También puede utilizar la opción detallada. Por ejemplo, para descargar el módulo kernel nfs, ingrese:
# modprobe -rv nfs rmmod nfs rmmod fscacheNota :El comando modprobe –r usa rmmod para descargar los módulos. Pero al igual que insmod, no se recomienda usar rmmod directamente para descargar módulos del kernel.
Los módulos se descargan en el orden inverso, descargando primero el módulo del núcleo nfs.ko, seguido de los módulos de los que dependía. Los módulos que utiliza un proceso o los módulos que necesitan otros módulos cargados no se descargan.
Parámetros del módulo del núcleo
Así como el kernel puede aceptar parámetros de tiempo de arranque para modificar el comportamiento del kernel, los módulos del kernel también pueden aceptar parámetros para modificar su comportamiento. La sintaxis para pasar parámetros a un módulo del kernel con modprobe es:
# modprobe [module_name] [parameter=value]
Se pueden pasar múltiples pares de parámetro=valor separando los pares con espacios. Asegúrese de que el módulo no se haya cargado previamente, porque modprobe no recarga el módulo.
Directorio de configuración para modprobe
El directorio de configuración de modprobe es /etc/modprobe.d. Cree archivos *.conf en /etc/modprobe.d para:
– Especifique opciones
– Cree alias
– Anule el comportamiento normal de modprobe
– Incluya en la lista negra los módulos del kernel
El formato de estos archivos .conf es un comando por línea. Los comandos válidos para usar en estos archivos incluyen los siguientes:
alias, options, install, remove, blacklist
Alias
Utilice la sintaxis alias alias_name module_name para crear nombres alternativos para los módulos del núcleo. También puede usar comodines de shell en nombres de alias. Ejemplo:
alias usbdevfs usbcore
Opciones
Utilice las opciones de sintaxis nombre_módulo para agregar opciones a nombre_módulo. Ejemplo:
options b43 nohwcrypt=1 qos=0
Instalar
Utilice la sintaxis install module_name comando(s) para decirle a modprobe que ejecute comandos de shell en lugar de insertar el módulo en el kernel. Ejemplo:
install net-pf-6 /bin/true
Eliminar
Esto es similar al comando de instalación, excepto que se invoca cuando se ejecuta “modprobe –r”. Use la sintaxis remove module_name comando(s) para decirle a “modprobe –r” que ejecute comandos de shell en lugar de descargar el módulo del kernel.
Lista negra
Use la sintaxis blacklist module_name para decirle a modprobe que ignore los alias internos de un módulo. Los alias internos son los que se ven cuando se usa el comando modinfo [nombre_del_módulo]. La palabra clave de la lista negra generalmente se usa cuando el hardware asociado no es necesario, o cuando dos o más módulos admiten los mismos dispositivos, o cuando un módulo afirma incorrectamente que admite un dispositivo.
Consulte la página de manual de modprobe.d para obtener más información.
# man modprobe.d