Доброго времени суток ЛОР. Пытаюсь разобратся в написании модулей для ядра.
Начал с по традиции с hello world. Сам код:
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world\n");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr.\n");
}
module_init(hello_start);
module_exit(hello_end);
Makefile:
obj-m += testmodule.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clear
выполняю make:
make -C /lib/modules/2.6.35-ARCH/build M=/home/shk/dev/testmodule modules
make[1]: Entering directory `/usr/src/linux-2.6.35-ARCH'
Building modules, stage 2.
MODPOST 1 modules
WARNING: "module_layout" [/home/shk/dev/testmodule/testmodule.ko] undefined!
make[1]: Leaving directory `/usr/src/linux-2.6.35-ARCH'
Далее по инструкции: insmod testmodule.ko
Появляется ошибка:insmod: error inserting 'testmodule.ko': -1 Invalid module format
В чем проблема? Как исправить?
Всем спасибо.