2012-10-07 32 views
5

Tengo un par de años de experiencia en programación. Ahora decidí trabajar para el desarrollo del módulo de kernel de Linux. Sin embargo, ni siquiera puedo comenzar. He compilado este código en ubuntu. Sin embargoCómo codificar un módulo kernel de Linux?

#include <linux/module.h> 
int init_module(void){ printk("<1> hellp"); return 0;} 
void cleanup_module(void){ printk("<1> bye");} 

, el insmod no funciona el mensaje de error es "formato de módulo no válido". después de googlear pensé que podría ser un problema con la compatibilidad de la versión. Y no hay una buena manera de resolverlo. Entonces, ¿algún desarrollador real de módulos kernel puede darme algún consejo? ¿Qué entorno debo preparar antes de comenzar a aprender?

Gracias!

Respuesta

10

Te faltan las macros module_init() y module_exit() y algunas #defines cruciales. Necesitamos más información, así como sus opciones make/gcc. Puede estar informando sobre el "formato de módulo no válido" porque está compilando en 32 bits cuando su kernel es de 64 bits, así que asegúrese de estar utilizando el indicador de compilación y enlace -64.

Un gran tutorial de hello world para Kernel Modules se encuentra aquí: http://archive.is/KNkEE (el original link al artículo está roto).

Bienvenido a la escritura de módulos kernel. Son muy divertidos en comparación con escribir controladores de Windows (he hecho ambas cosas). La interfaz del módulo de kernel de Linux es mucho más fácil de usar y hay muchos controladores base que puede delegar y hacer el trabajo más rápido.

+0

* "Te faltan las macros __init y __exit, ..." * - El uso de '' __init' y __exit' no son necesarios; solo especifican secciones de texto que se pueden liberar después de que se haya completado el arranque. Lo que se requiere para un módulo de controlador son declaraciones para dos puntos de entrada utilizando 'module_init()' y 'module_exit()'. – sawdust

1

Un blog completo y simplificado sobre kernels de Linux, programación de módulos y escritura de controladores de dispositivos simples para dispositivos integrados.

xploredevicedrivers.blogspot.in

Cuestiones relacionadas