首先在自己的目录下写源码
用VI这个工具
文件命名为hello.c
//
//hello.c
//
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int hello_init(void) {
printk(KERN_WARNING "Module init: Hello world!\n");
return 0;
}
static void hello_exit(void) {
printk(KERN_WARNING "Module exit: bye-bye\n");
}
module_init(hello_init);
module_exit(hello_exit);
最后两行指定了模块加载和卸载时执行的函数,加载时执行hello_init,卸载时执行hello_exit。
写一个Makefile,内容如下(文件名也为Makefile)
obj-m = hello.o
default:
$(MAKE) -C/usr/src/kernels/2.6.18-238.el5-i686 M=$(PWD) modules
clean:
$(MAKE) -C/usr/src/kernels/2.6.18-238.el5-i686 M=$(PWD) clean
第一个路径则是要去编译的内核版本的路径 M后面的路径则是hello.c的目录
在当前目录下,编译

可从当前目录下看到生成的文件

会生成一个内核模块hello.ko。这就是我们编译好的内核模块,接下来加载它,并查看结果。
输入命令
insmod hello.ko
输入命令
dmesg
看系统日志(最后一行)
输入命令
lsmod | grep hello
也可查看
输入命令
rmmod hello 卸载模块
再次输入命令
dmesg
看系统日志

本文详细介绍如何使用C语言编写简单的Linux内核模块,包括创建、编译及加载模块的过程。通过具体步骤演示如何实现模块的初始化和退出功能,并提供Makefile配置示例。
8442

被折叠的 条评论
为什么被折叠?



