我尝试modprobe wireguard
以 root 身份登录,但失败了:
modprobe: ERROR: could not insert 'wireguard': Operation not permitted
添加详细信息后,我又得到一行:
[root@localhost ben]# insmod /lib/modules/5.2.11-100.fc29.x86_64/extra/wireguard.ko.xz
insmod: ERROR: could not insert module /lib/modules/5.2.11-100.fc29.x86_64/extra/wireguard.ko.xz: Operation not permitted
dkms 运行良好,没有错误。我还禁用了 selinux,但这没有什么区别。我在日志中没有看到任何内容journalctl
。
浏览手册页和谷歌没有发现任何结果。
我确实在以下位置找到了这条有用的线dmesg
:
Lockdown: modprobe: Loading of unsigned module is restricted; see man kernel_lockdown.7
但是该手册页不存在。
我该如何调试这个?有关下一步该去哪里的任何指示吗?
答案1
终于在上面找到了一些东西。它似乎是一个“功能”当启用 UEFI 安全启动(确实如此)时,未签名的代码无法加载到内核中。
要加载模块,请通过 sys-rq 禁用内核锁定:
# echo 1 > /proc/sys/kernel/sysrq
# echo x > /proc/sysrq-trigger
然后modprobe
应该工作:
modprobe wireguard
有关更多信息,请参阅:
答案2
我的 Fedora 31 发行版不接受回显sysrq
. Arch Linux wiki 建议使用Alt++ PrtSc(x
在笔记本电脑上,其中Fn是键盘的一部分)。锁定已成功禁用,并且 WireGuard 已成功加载。我安装了akmod
,所以modprobe wireguard
为我工作作为SysRq+ 的替代品x。 (红帽手册说应该在物理连接的键盘上按下。)
答案3
我通过将“操作系统类型”BIOS 设置从 Windows UEFI 更改为“其他操作系统”,在带有 AMI BIOS 的 Asus ProArt B550 Creator 上运行。不需要神奇的 SysRq。
https://www.techpowerup.com/review/asus-proart-b550-creator/images/bios_55-copy.jpg
答案4
我的问题是加载 Centos 7.x 的操作系统模块覆盖层(不是编译模块),通常已签名......加上安全启动未启用(mokutil 说“此系统不支持 EFI 变量”)。