Create a simple kernel module
编写模块代码
创建一个文件夹,命名为hello
,并在该文件夹下创建一个名为hello.c
的文件,输入以下代码:
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple Hello World module");
static int __init hello_init(void)
{
printk(KERN_INFO "Hello, world!\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_INFO "Goodbye, world!\n");
}
module_init(hello_init);
module_exit(hello_exit);
编写Makefile
obj-m += hello.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
编译
在终端中进入hello
文件夹,输入以下命令编译内核模块:
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
编译成功后,会生成一个名为hello.ko
的内核模块文件。
使用模块
加载内核模块,输入以下命令:
sudo insmod hello.ko
查看内核日志,输入以下命令:
dmesg
卸载内核模块,输入以下命令:
sudo rmmod hello
这个简单的内核模块会在加载时打印Hello, world!
,在卸载时打印Goodbye, world!
。可以根据自己的需求修改代码并重新编译运行。