如何解决Android:Insmod 不同意符号 module_layout 的版本
我正在尝试在我的小米红米 Note 9S 上使用 NFS,它使用名为 Resurrection Remix OS 的自定义 ROM。我正在用新编译的内核替换旧内核,内置 NFS。
我使用的是内核源代码 here,这是小米手机的官方内核。我找不到我的自定义 ROM 的确切内核源代码,但无论如何手机都能启动。
起初,我只为 NFS 编译了模块,但是在 insmod
上使用 sunrpc.ko
需要 __audit_inode_child
,因此需要带有 CONFIG_AUDIT_SYSCALL=y
的新内核。我还决定内置所有 NFS 模块。
我对 .config
进行了更改,并编译了整个内核
(除了设备树:CONFIG_BUILD_ARM64_DT_OVERLAY=n
因为编译错误)。
使用来自 arch/arm64/boot/Image
的新内核,我从我的设备中解压 boot.img
并换出内核并启动,/proc/filesystems
中列出了 NFS 支持。
但是,现在 /vendor/lib/modules
中的所有模块都不起作用。这是意料之中的,它们不是针对这个新内核的源代码构建的。
尝试通过使用 insmod
说 disagrees about version of symbol module_layout
插入新编译的模块来解决此问题。
这怎么可能?这些模块与正在运行的内核一起编译(相同的源代码)
解决方法
在创建启动映像时一定出了问题,很可能是复制了错误的内核(我下载并编译了多个内核源)。
我用新编译的内核映像重新打包了 boot.img,不需要加载模块,/vendor/lib/modules
中的每个模块都在启动时加载。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。