Linux添加一个内核模块

本文介绍Linux内核模块的动态加载与删除过程,包括使用__init和__exit修饰符的函数,以及如何通过insmod和rmmod命令操作模块。讲解了Makefile配置和模块编译方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内核模块:动态加载或删除不会影响内核正常运行的代码
#include <linux/init.h>
#include <linux/module.h>

static __init int hello_init(void)  //__init修饰的函数,执行结束后,函数的内存空间会被释放 
{
    printk("hello kernel!!!\n");
    return 0;
}

static __exit void hello_exit(void)  //__exit 标记出口
{
    printk("bye kernel!!!\n");
}

moudle_init(hello_init);  //模块入口,模块加载时,内核会自动执行module_init修饰的函数
module_exit(hello_exit);  //模块出口,模块删除时,内核会自动执行module_exit修饰的函数
MODULE_LICENSE("GPL");

动态编译方法:
将hello.c拷贝到内核源码目录drivers/char,
在drivers/char/Makefile最后一行增加 obj-m += hello.o
编译内核,在drivers/char就会生成hello.ko文件,将hello.ko拷贝到nfs目录(根文件系统目录)

在minicom终端(linux正常启动):
insmod hello.ko  //动态加载hello.ko 文件到内核,内核会自动执行module_init修饰的函数
rmmod  hello     //动态删除hello模块,内核会自动执行module_exit修饰的函数
lsmod   查看被加载的内核模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值