背景
通过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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。