Este post busca ser una guia básica para crear módulos del kernel, entre el código fuente se encuentran tres modulos, se expone la forma de comunicar varios módulos, ademas también como crear un punto de entrada en el sistema de archivos virtual "proc" para poder establecer comunicación con los módulos desde espacio de usuario, los módulos dependen entre si de la siguiente forma, el modulo C no depende de nadie, el modulo B depende de C y el modulo A depende de B, asi que el primer modulo en ser insertado al kernel usando "insmod" es el modulo C , luego el modulo B y por ultimo el modulo A , el modulo A es el unico que incluye codigo para crear un archivo virtual en proc, este archivo se llama rudyMA
#include <linux/module.h> #include <linux/kernel.h> void rudy_procesar_modulo_c(char *mensaje) { printk(KERN_INFO "RUDY_MODULO_C %s", mensaje); } int init_module(void) { printk(KERN_INFO "RUDY_MODULO_C INIT\n"); return 0; } void cleanup_module(void) { printk(KERN_INFO "RUDY_MODULO_C CLEANUP\n"); } MODULE_LICENSE("GPL"); EXPORT_SYMBOL(rudy_procesar_modulo_c);
forma de probar los modulos
primero es necesario insertar los módulos al kernel
para esto usamos el comando insmod seguido del modulo que deseamos insertar por ejemplo
insmod moduloC.ko
esto debe cargar el modulo, y mostrar algunos mensajes de depuración en el log del sistema, para ver estos mensajes podemos usar el comando "dmesg"
luego con "lsmod" podemos ver la lista de módulos que están cargados actualmente, y con rmmod descargar modulos. ( para usar rmmod hay que ser super usuario , igual que para usar insmod etc )
una vez cargados todos los módulos en el orden correcto podemos verificar su funcionamiento de la siguiente forma
echo "hola" > /proc/rudyMA
y
cat /proc/rudyMA
seguido de dmesg para ver los mensajes de depuración
para compilar los módulos, es necesario tener instalado el código fuente de nuestro kernel, y modificar los archivos Makefile apropiadamente con la carpeta correcta a nuestro código fuente, cumpliendo esto es suficiente con ejecutar "make" para regenerar los archivos .ko de cada modulo.
Descargar Código Fuente
Comentarios
Publicar un comentario