一个模块在一个内核中编译后,是没办法在另外一个不同的内核中使用,除非内核中开启了CONFIG_MODVERSIONS这个配置
UEFI中开启SecureBoot这是一个安全标准,可以确保设备仅使用原始设备制造商信任的软件启动,一些linux发行版中默认开启了SecureBoot,对于这样的版本内核模块必须要用security key来签名
模块参数
module_param
MODULE_PARM_DESC
MODULE_FORCE_UNLOAD
forced module unloading,通过rmmod -f xxx.ko,强制卸载模块
vermagic
version magic strings are stored in the module object in the form of a static string, starting with vermagic:. Version data are inserted in your module when it is linked against the kernel/module.o file
内核通过vermagic来识别ko的版本,通常来说linux内核会拒绝不同版本的内核模块
root@tianqian:~/code/linux-modules# modinfo hello-1.ko
filename: /root/code/linux-modules/hello-1.ko
license: GPL
srcversion: BD5B750371AAA3261064E51
depends:
retpoline: Y
name: hello_1
vermagic: 5.15.0-40-generic SMP mod_unload modversions