Linux-内核模块编程

实验环境
VMware Workstation Pro下Linux Red Hat
内核版本:2.6.32

1.使用vim进行程序编写
(1)编写hello.c
这里写图片描述

包含两个必要的头文件linux/init.h包含模块初始化和清除、linux/modele.h包含模块加载的函数

“MODULE_LICENSE(“GPL”)”是进行模块许可证声明,内核模块应遵循 GPL 兼容许可权。

定义了两个函数,hello_init和hello_exit进行文字输出,在文字输出的时候使用了printk函数,这是linux内核函数,它与标准C的printf的不同就在于它可以通过设置优先级来决定输出信息的位置。

最后通过两个宏指令来注册调用。

(2)编写Makefile
这里写图片描述

通过hello.o来生成目标文件obj,其中-m表示这是一个模块

如果要编译内核,需要使用内核的Makefile文件,其路径是“/lib/modules/(版本号)/build”,其中的版本号使用“uname -r”指令动态获取。然后通过pwd记录当前的路径,以便返回到当前程序的目录。

2.运行程序验证结果
这里写图片描述

使用make命令,编译内核成功

这里写图片描述

使用ll命令查看当前文件夹中的文件,可以看到hello.ko,这是我们要加载的文件。使用insmod命令对模块进行加载。但是现在并没有看到对应的输出命令。

这里写图片描述

使用lsmod命令查看模块,可以看到我们的模块hello已经加载进去了,只是没有输出对应的信息。

这里写图片描述

使用dmesg命令检测内核环缓冲,可以看到模块的输出。

这里写图片描述

使用rmmod命令将模块卸载,并查看模块,验证该模块真的被卸载掉了。

这里写图片描述

最后再使用dmesg查看模块卸载的输出信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值