使用sudo执行insmod仍无法插入内核模块的问题求助
解决insmod插入内核模块提示"Operation not permitted"的问题
常见原因及修复步骤
Secure Boot 启用导致模块签名验证失败
多数现代系统默认开启Secure Boot,会拦截未签名的内核模块。两种处理方式:- 重启进入BIOS/UEFI,找到Secure Boot选项关闭,保存后重启再试
insmod。 - 若不想关闭Secure Boot,需给模块添加合法签名——用
mokutil和openssl生成签名密钥,导入系统MOK列表,再用内核自带的sign-file工具给模块签名。
- 重启进入BIOS/UEFI,找到Secure Boot选项关闭,保存后重启再试
内核版本与模块编译版本不兼容
确认当前运行内核和编译模块用的内核源码/头文件版本完全一致:- 执行
uname -r查看当前内核版本。 - 核对编译模块时指定的内核目录版本,不一致的话,用当前内核的源码/头文件重新编译模块。
- 执行
SELinux 限制
启用SELinux的系统可能会阻止模块加载:- 临时关闭:执行
sudo setenforce 0,然后重试insmod。 - 若临时关闭有效,可修改
/etc/selinux/config,把SELINUX=enforcing改成SELINUX=permissive,重启后永久生效(调试阶段临时关闭更方便)。
- 临时关闭:执行
模块代码存在错误
即便随内核编译,模块代码问题也可能导致加载失败:- 查看系统日志:执行
dmesg | tail -20或者journalctl -k -f,获取加载失败的详细报错信息,根据提示修复代码后重新编译。
- 查看系统日志:执行
内容的提问来源于stack exchange,提问作者dev_eng
相关产品推荐
相关产品推荐

