编写内核模块hello_world

1、准备环境
#mkdir ~/src/lkm_example
#cd ~/src/lkm_example
2、创建文件 lkm_example.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE(“GPL”);
MODULE_AUTHOR(“Robert W. Oliver II”);
MODULE_DESCRIPTION(“A simple example Linux module.”);
MODULE_VERSION(“0.01”);
static int __init lkm_example_init(void) {
 printk(KERN_INFO “Hello, World!\n”);
 return 0;
}
static void __exit lkm_example_exit(void) {
 printk(KERN_INFO “Goodbye, World!\n”);
}
module_init(lkm_example_init);
module_exit(lkm_example_exit);
3、编写Makefile
obj-m += lkm_example.o
all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
4、添加模块测试
#insmod lkm_example.ko
5、查看:
printk 函数不会输出在控制台而是输出在内核日志。为了看到日志,我们运行一下命令
# dmesg
6、检查模块是否被加载
#lsmod | grep “lkm_example”
7、移除该模块
#rmmod lkm_example
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页