关于 insmod时出现 ERROR:Required key not available 的解决

我在尝试以编译模块的方式添加系统调用时,执行sudo insmod module.ko命令,遇到如下问题:

insmod: ERROR: could not insert module module.ko: Required key not available

我所使用的系统为 Ubuntu 18.04,Linux Kernel 为 4.15.0-32-generic
出现此问题的原因是,Ubuntu Kernel 使用 EFI_SECURE_BOOT_SIG_ENFORCE 内核配置,这样会阻止内核载入第三方模块。
解决方法如下:
在终端执行如下指令:

sudo apt install mokutil
sudo mokutil --disable-validation

执行后,终端会让你设置8-16位密码(之后要用,不要忘记哦~)
接下来,重启电脑,会出现蓝屏(不要紧张,按下任意键进入选择界面 :-)),选项如下:
- Continue boot
- Change Secure Boot state
- Enroll key from disk
- Enroll hash from disk
选择Change Secure Boot state,接下来会让你输入之前的密码。
我的系统很调皮,没有让我直接输入密码,而是要求 Enter password character 7,意思是输入密码的第7位(这点要注意!)。
接下来进入Disable Secure Boot选择界面,选择 yes(不要直接按下Enter,这样就前功尽弃,只能从头再来了!)。
然后下个界面又回到最开始的界面,选择reboot,重新进入系统,赶紧测试下模块能不能安装进内核吧~

以上的解决方法应该对Ubuntu的最近几个distribution都适用(我没有测试过,不成功轻锤 :-))

参考文献
[1] https://askubuntu.com/questions/762254/why-do-i-get-required-key-not-available-when-install-3rd-party-kernel-modules

你可能感兴趣的:(关于 insmod时出现 ERROR:Required key not available 的解决)