单独编译后无法加载内核模块



我正在尝试"制作"并将"/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

我尝试了很多事情,但失败了。

  1. 在构建模块之前,使用命令make EXTRAVERSION=-1 modules_prepare设置外版本
  2. 加载内核时使用--force-vermagic,但失败。
  3. 在构建内核之前,从/usr/lib/modules/$(uname -r)/build/Makefile快速复制生成文件。

我已经使用make SUBDIRS=drivers/md modulesmake M=drivers/md进行构建,但两者的结果相同。

需要帮助!

强制 modprobe 忽略魔术 str

使用 --强制-Vermagicoptin

每个模块都包含一个包含重要信息的小字符串, 例如内核和编译器版本。如果模块加载失败 内核抱怨"版本魔术"不匹配,你 可以使用此选项将其删除。当然,这张支票是为了 您的保护,因此此使用选项很危险。这适用于 插入的任何模块:命令行上的模块(或别名( 以及它所基于的任何模块

在这种情况下,modprob 忽略魔术 str

最新更新