我目前正在尝试运行我的Hello World内核模块,但我有点挣扎,我不知道为什么 .

首先

uname -r

2.6.32-358.23.2.el6.x86_64

我的Hello.c

#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);

MODULE_LICENSE("GPL");

我的Makefile

obj-m += hello.o
all:
    make -C /lib/modules/`uname -r`/build M=`pwd` modules
clean:
    make -C /lib/modules/`uname -r`/build M=`pwd` clean

运行时出现错误消息

$ sudo insmod ./hello.ko
insmod: error inserting './hello.ko': -1 Invalid module format

dmesg输出

hello: no symbol version for module_layout

文件夹中的文件

hello.c  hello.ko  hello.ko.unsigned  hello.mod.c  hello.mod.o  hello.o  include  Makefile  modules.order  Module.symvers

插入此模块并完成我的进一步工作需要什么?