repoline的问题:insmod一个简单ko,出现错误insmod: ERROR: Invalid module format

本文介绍了在Ubuntu14.04中加载自定义hello驱动时遇到的错误:Invalid module format,并提供了详细的解决方案。错误源于内核版本与使用的内核头文件版本不一致。通过修改特定的宏定义并重新编译驱动,最终成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

错误问题

解决方法:

验证


 

  • 错误问题

在Ubuntu14.04在加载自己的hello写的hello驱动时出现了如下的错误:insmod: ERROR: could not insert module kernel_hello.ko: Invalid module format

通过查看sudo dmesg -c 查看最新的内核打印信息发现如下的出错的原因:缺少retpoline

version magic '4.4.0-142-generic SMP mod_unload modversions

should be '4.4.0-142-generic SMP mod_unload modversions retpoline

这可能是当前内核的版本与编译模块使用的内核头文件版本不一致引起的。

  • 解决方法:

通过修改:/usr/src/linux-headers-4.4.0-142-generic/include/generated$ 路径下的 utsrelease.h添加一段宏定义:#define RETPOLINE 1

重新编译自己的驱动文件。再次使用驱动加载命令insmod,没有抛出错误 。

  • 验证

make

sudo insmod 

sudo dmesg -c(可以清除之前的打印信息

ok!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XiaoCheng'Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值