我正在尝试在 Ubuntu 16.04 上安装 VirtualBox,同时保持安全启动。当我通过 Synaptic 安装它时,我被要求删除 SecureBoot,我说No。
我遵循以下说明: 升级到 Ubuntu 16.04 后无法加载“vboxdrv”(我想保持安全启动) 和 https://stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail/ 两者都是几乎相同(我将 MOK 文件保留在 /root 目录中,就像在第二个链接中一样)。一切似乎都正常,我重新启动,再次输入密码,重新启动。都好
但是当我尝试使用 VirtualBox 时,它仍然无法正常工作。如果我从终端运行它,我会得到:
WARNING: The character device /dev/vboxdrv does not exist.
Please install the virtualbox-dkms package and the appropriate
headers, most likely linux-headers-generic.
You will not be able to start VMs until this problem is fixed.
Run Code Online (Sandbox Code Playgroud)
但是这两个软件包已经安装并且是最新的。
另一篇文章的最佳答案中的评论说virtualbox-dkms在遵循这些说明之前重新安装。我试过了,结果一样。
我在这里尝试了答案:
VirtualBox 的安装问题
这再次提示我询问是否要禁用安全启动,我说No,然后回到第一个。
如果我跑modprobe我得到:
modprobe: ERROR: could not insert 'vboxdrv': Required key not …
我正在使用 GRUB2、SecureBoot 和 Kernel Signing,我想我在安全启动中发现了一个可能的错误,但我想先检查一下我对这些过程的理解。
我知道启用安全启动后,只能启动使用固件中加载的密钥签名的二进制文件,因此必须对所有引导加载程序进行签名。在典型的情况下是 shim 和 GRUB。
如果引导失败或者您有一些密钥要导入或删除,Shim 应该启动 MoakManager,如果一切正常,它应该启动 GRUB,它是真正的引导加载程序。
问题是我刚刚生成了一个自定义版本的 GRUB grub-mkstandalone,我用它用 OpenSSl 创建的新密钥进行了签名;我尚未在固件中导入的密钥,并且 shim 能够在没有来自安全启动的任何报告的情况下启动它。
我检查了密钥,mokutil --list-enrolled它只报告了规范证书。
所以,回顾一下:
在我的 EFI 分区中,我有:
grubx64.efi.在引导时,SHIM 可以午餐 GRUB,而 GRUB 可以成功引导 Ubuntu。
如果某些 Secure Boot 只检查第一个引导加载程序的标志,而其他加载程序负责验证它们自己以及它们预加载和用户最终加载的模块,那么这里的安全问题就非常高。
我会做更多的测试,但也许我应该打开一个错误票。
有任何想法吗?