Kernel之模块版本检查

本文详细解析了在加载第三方驱动时遇到的模块版本检查问题,介绍了内核的check_modinfo函数如何通过对比vermagic进行验证,并提供了查看vermagic和modinfo的方法。了解这一技术细节有助于顺利加载和管理模块。

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

Kernel之模块版本检查 | DD'NotesKernel之模块版本检查背景通过insmod或modprobe加载核外驱动ko时,特别是第三方驱动,经常会遇到模块版本检查报错,类似: version magic '5.4.96-xx SMP preempt mod_unload aarch64' should be '5.4.96-yy SMP preempt mod_unload aarch64' 那我们就来https://notes.z-dd.online/2022/03/27/Kernel%E4%B9%8B%E6%A8%A1%E5%9D%97%E7%89%88%E6%9C%AC%E6%A3%80%E6%9F%A5/

背景

通过insmod或modprobe加载核外驱动ko时,特别是第三方驱动,经常会遇到模块版本检查报错,类似:

version magic '5.4.96-xx SMP preempt mod_unload aarch64' should be '5.4.96-yy SMP preempt mod_unload aarch64'

那我们就来看看模块版本检查的大致过程

Kernel: v5.4.96
vermagic: version magic

过程分析
内核相关源码:kernel/module.c
逻辑过程比较简单
check_modinfo() -> same_magic()
check_modinfo() 函数首先获取模块相关的modinfo,即modmagic,然后会和内核的vermagic做对比,即same_magic()函数

可以通过cat /proc/version 来查看linux 系统的 vermagic ,对于module, 可以通过modinfo xxx 的方式来查看module的 vermagic

check_modinfo()

....


作者: Shell
链接: https://notes.z-dd.online/2022/03/27/Kernel%E4%B9%8B%E6%A8%A1%E5%9D%97%E7%89%88%E6%9C%AC%E6%A3%80%E6%9F%A5/
来源: DD'Notes
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值