我正在尝试"制作"并将"/drivers/md/raid0.ko"模块加载到我的 Linux 内核中,但我收到此错误。
# modprobe raid0 --force-vermagic
modprobe: ERROR: could not insert 'raid0': Exec format error
德梅斯格
[Dec 2 15:10] raid0: version magic '5.0.0 SMP mod_unload ' should be '5.0.0-36-generic SMP mod_unload '
我的内核版本是
# uname -a
Linux ubuntu1 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
我尝试加载的代码取自链接 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.0.tar.xz
因此,其中的版本是 5.0.0,没有 EXTRAVERSION -36
我尝试了很多事情,但失败了。
- 在构建模块之前,使用命令
make EXTRAVERSION=-1 modules_prepare
设置外版本 - 加载内核时使用
--force-vermagic
,但失败。 - 在构建内核之前,从
/usr/lib/modules/$(uname -r)/build/Makefile
快速复制生成文件。
我已经使用make SUBDIRS=drivers/md modules
和make M=drivers/md
进行构建,但两者的结果相同。
需要帮助!
强制 modprobe 忽略魔术 str
使用 --强制-Vermagicoptin
每个模块都包含一个包含重要信息的小字符串, 例如内核和编译器版本。如果模块加载失败 内核抱怨"版本魔术"不匹配,你 可以使用此选项将其删除。当然,这张支票是为了 您的保护,因此此使用选项很危险。这适用于 插入的任何模块:命令行上的模块(或别名( 以及它所基于的任何模块
在这种情况下,modprob 忽略魔术 str