创建测试目录
cpp
mkdir -p ~/develop/kernel/hello-1
cd ~/develop/kernel/hello-1
创建MakeFile文件和内核.c文件
cpp
nano Makefile
nano hello-1.c
编写内容
cpp
/*
* hello-1.c - The simplest kernel module.
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/printk.h> /* Needed for pr_info() */
int init_module(void)
{
pr_info("Hello world 1.\n");
/* A non 0 return means init_module failed; module can't be loaded. */
return 0;
}
void cleanup_module(void)
{
pr_info("Goodbye world 1.\n");
}
MODULE_LICENSE("GPL")
cpp
obj-m += hello-1.o
PWD := $(CURDIR)
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
make运行程序生成.ko .o文件等
查看内核模块信息
cpp
modinfo hello-1.ko
加载内核模块(执行内核内容:打印Hello world 1.)
cpp
sudo insmod hello-1.ko
卸载内核模块
cpp
sudo rmmod hello_1
查看内核的日志打印信息
cpp
dmesg | tail
文章参考:Linux 内核模块编程指南