lkm1

Introducción

Un módulo del kernel es un programa que permite cargar o descargarse del kernel en algún momento deseado, sin necesariamente recompilar (el kernel, claro) o reiniciar el sistema y además tiene la intención de mejorar la funcionalidad del mismo.

En términos generales de software, los módulos son mas o menos como complementos para software como WordPress por ejemplo. Los mismos complementos proporcionan medios para extender la funcionalidad del software, sin ellos, los desarrolladores tendrían que construir un sólo software masivo con todas las funcionalidades integradas en paquete. Si se necesitan nuevas funcionalidades, deberían agregarse en nuevas versiones de un soft.

Entonces podemos decir que del mismo modo, sin módulos, el kernel debería construirse con todas las funcionalidades directamente en la imagen del mismo kernel. Esto significaría tener núcleos de mayor tamaño y los administradores de sistemas tendrían que volver a compilar el kernel cada vez que se necesite una nueva funcionalidad.

Un ejemplo simple de un módulo es un controlador de dispositivo, que permite al kernel acceder al componente o dispositivo de hardware conectado a nuestro equipo.

Listar todos los módulos cargados

En GNU/Linux, todos los módulos terminan con la extensión .ko y normalmente se cargan automáticamente, ya que el hardware se detecta al arrancar nuestro sistema. Sin embargo, un administrador de sistemas puede también administrar los módulos usando ciertas órdenes.

Para enumerar todos los módulos cargados, podemos usar el comando lsmod (que su abreviación sería list modules o listar módulos) que lee los contenidos que se encuentran en /proc/modules

ice@snowcrash ~$ lsmod

lsmod.png

Cargar y eliminar los módulos

Para cargar un módulo, podemos usar el comando insmod (insertar módulo) o modprobe, pero explico lo de insmod ahora, luego el otro. Así que aquí tenemos que especificar la ruta completa del módulo. Ahora dejo un ejemplo a continuación:

root@snowcrash ~# insmod /lib/modules/4.17.2-1-ARCH/kernel/drivers/cpufreq/amd_freq_sensitivity.ko.xz

Y para descargar el mismo módulo, usamos la orden rmmod (remove module, eliminar módulo). El siguiente ejemplo mostrará que descarga o elimina el módulo:

root@snowcrash ~# rmmod /lib/modules/4.17.2-1-ARCH/kernel/drivers/cpufreq/amd_freq_sensitivity.ko.xz

Administrar los módulos del kernel con el comando modprobe

modprobe es un comando inteligente para listar, insertar y eliminar módulos del kernel. Busca en el directorio de modulos en /lib/modules/$(uname -r) para tods los módulos y archivos relacionados, pero excluye archivos de configuración alternativos en el directorio /etc/modprobe.d/.

Aclararé lo que hacen las órdenes y muestro para que salgan de las dudas también ésos directorios:

ice@snowcrash ~$ ls /lib/modules
4.17.2-1-ARCH extramodules-4.17-ARCH
ice@snowcrash ~$ ls /lib/modules/4.17.2-1-ARCH/
build modules.alias modules.builtin.bin modules.devname modules.symbols
extramodules modules.alias.bin modules.dep modules.order modules.symbols.bin
kernel modules.builtin modules.dep.bin modules.softdep

Aclaración: Mostré por las dudas un poco más de información, pero luego investigan lo que necesiten ustedes.

la orden uname -r: nos muestra la versión del kernel que estamos usando:

ice@snowcrash ~$ uname -r
4.17.2-1-ARCH

Ahora listaré los módulos excluidos en /etc/modprobe.d/
NOTA: Recuerden por favor que esto cambiará de acuerdo a lo que carguen, versión del kernel, distribución, etc.

ice@snowcrash ~$ ls /etc/modprobe.d/
amdkfd.conf sp5100_tco.conf

Aquí, no se necesita la ruta exacta de un módulo; ésta es la ventaja de usar modprobe sobre los comandos anteriores.

Para insertar un módulo, simplemente colocamos el módulo de la siguiente manera:

root@snowcrash ~# modprobe amd_freq_sensitivity

Para eliminar el módulo usamos la opción -r:

root@snowcrash ~# modprobe -r amd_freq_sensitivity

Aclaración: Bajo modprobe, se realiza la conversión automática de subrayado, por lo que no hay diferencia entre el _ y – al ingresar los nombres de los módulos. De todas maneras por favor usemos el man:

ice@snowcrash ~$ man modprobe

Cómo digo normalmente, éste mini how to, fue “cortita y al pié” en términos futbolísticos ja, para no marearlos y mostrando lo que realmente podemos hacer y de manera sencilla. Espero que les haya servido y por favor compartan así sigo creciendo.

Abrazo de gol!

Anuncios