Ubuntu 18.04安装PCAN驱动时出现modprobe错误求助
解决Ubuntu 18.04中PCAN驱动modprobe "Operation not permitted"错误
首先先明确你遇到的错误信息:
modprobe: ERROR: could not insert 'pcan': Operation not permitted
modprobe: ERROR: ../libkmod/libkmod-module.c:979 command_do() Error running install command for pcan
modprobe: ERROR: could not insert 'pcan': Operation not permitted
我在帮用户排查PCAN驱动问题时,这个错误在Ubuntu 18.04里出现得相当频繁,主要和Secure Boot签名限制或者模块安装不完整有关,下面给你几个可行的解决步骤,按顺序试试:
1. 关闭Secure Boot(最快速的解决方案)
Ubuntu 18.04默认开启Secure Boot,它会阻止未经过官方签名的内核模块加载,这是最常见的原因:
- 重启你的电脑,在开机时按对应按键进入BIOS/UEFI设置(不同品牌按键不同,一般是F2、Del、Esc或者F10)
- 在BIOS菜单里找到Secure Boot选项,将其设置为
Disabled - 保存设置并重启系统,之后再执行
sudo modprobe pcan,应该就能正常加载模块了
2. 给PCAN模块签名(保留Secure Boot的情况下)
如果不想关闭Secure Boot,你可以给pcan模块添加自签名,让系统认可它:
- 首先生成一个自签名密钥对:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=My Module Signing Key/" - 把这个密钥注册到系统的MOK(Machine Owner Key)数据库:
执行后系统会要求你设置一个密码,一定要记牢,之后重启电脑sudo mokutil --import MOK.der - 重启后会进入MOK管理界面,选择Enroll MOK,然后按提示输入之前设置的密码,确认完成密钥注册
- 再次重启后,用生成的密钥给pcan模块签名:
注意:如果你的pcan模块不在sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/extra/pcan.ko/lib/modules/$(uname -r)/extra/路径下,要替换成实际的模块路径 - 最后执行
sudo modprobe pcan测试加载
3. 重新编译安装PCAN驱动
如果上面的方法都不行,可能是驱动编译不完整或者安装过程出错了:
- 进入你下载的PCAN驱动源码目录,先清理旧的编译文件:
make clean - 重新编译驱动:
make - 安装编译好的模块:
sudo make install - 更新系统模块依赖:
sudo depmod -a - 再尝试加载模块:
sudo modprobe pcan
内容的提问来源于stack exchange,提问作者Michael Jacob Mathew




