所以我在 Debian Buster 10 系统上安装了虚拟盒我遇到了一个错误,告诉我手动加载一些内核模块。
sudo ./vboxconfig
[sudo] password for user:
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: You must sign these kernel modules before using VirtualBox:
vboxdrv vboxnetflt vboxnetadp
See the documenatation for your Linux distribution..
vboxdrv.sh: Building VirtualBox kernel modules
所以我只需要一些帮助来加载 vboxdrv、vboxnetflt 和 vboxnetadp 内核模块来完成我的虚拟盒安装,但我不太确定这是如何完成的。我使用的是启用了安全启动的 UEFI 系统。
答案1
签署模块涉及三个步骤:
- 创建一个机器所有者密钥
- 注册它
- 用它签署内核模块
前两个步骤只需完成一次,最后一个步骤需要在每次构建模块时重做。
创建 MOK:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -days 36500 -subj "/CN=My Name/" -nodes
替换My Name
成合适的东西。 (以下说明假设您以 root 身份在 root 的主目录中运行此程序。/root
)
要注册它:
mokutil --import MOK.der
这将提示输入密码,该密码是仅在下次启动时使用的临时密码。重启系统,即可进入UEFI MOK管理工具;看这个带有屏幕截图的便捷指南并按照说明注册您的密钥。
这将再次重新启动,然后您将能够检查您的密钥是否已加载:
dmesg | grep cert
要使用密钥对模块进行签名,请转到包含模块的目录,然后运行
/usr/lib/linux-kbuild-4.19/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der vboxdrv.ko
vboxdrv.ko
酌情替换“4.19” 。