我从 Ubuntu 15.10 升级到 16.04,从那时起 VirtualBox 5.0.18 不再启动我的 VM。它抱怨未加载“vboxdrv”。所以我尝试加载它并收到以下错误:
$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available
Run Code Online (Sandbox Code Playgroud)
我相信这与我使用的安全启动有关并且我想继续使用它。实际上使用 Ubuntu 15.10 安全启动和 VirtualBox 工作得很好。
我也试过$ sudo apt-get --reinstall install virtualbox-dkms哪个成功构建了内核模块但没有解决这个问题。
知道如何在启用安全启动的同时加载 vboxdrv 吗?
更新 2:我也尝试执行sudo mokutil --disable-validation. 执行此命令时,在下次启动期间,我会收到禁用安全启动、从磁盘添加密钥或哈希的提示。由于我不想禁用安全启动,因此这似乎也不能解决我的问题。此外,我想为并行 Windows 安装保持 UEFI 激活。
注意:如果您不介意禁用安全启动,请参阅为什么在安装 3rd 方内核模块或内核升级后会出现“所需密钥不可用”?反而。
所以我试图在 virtualbox 中运行 Ubuntu,但是在从 .iso 安装 12.10 时,我收到了一个警告,告诉我音频不起作用,然后我按下了下一步并弹出:
Failed to open a session for the virtual machine Tux 3
VT-x features locked or unavailable in MSR
(VERR_VMX_MSR_LOCKED_OR_DISABLED)
Details
Result Code:
E_FAIL (0x80004005)
Component:
Console
Interface:
IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}
Run Code Online (Sandbox Code Playgroud)
然后它不起作用。
我将 8GB 中的 4GB 分配给 Ubuntu,100 GB 动态分配的空间和 12MB 的图形内存。我正在运行带有 Intel i5 3550 处理器的 Asus p8z77 V LX 主板。
在我的 PC 上下载了 12.04.2 并再次尝试。仍然收到相同的消息。
我正在尝试安装 virtualbox 并使其工作,但似乎我不能。在图像中,您可以看到输出。

如果我跑VBoxManage --version我得到:
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.
4.3.10_Ubuntur93012
Run Code Online (Sandbox Code Playgroud)
但是 virtualbox-dkms 已经安装并且是最新版本。所以我尝试重新安装它,我得到了这个:

任何帮助将不胜感激。
编辑:
重新配置后的输出(@M.Tarun 建议):

编辑2:
还按照@Hmayag 的指示安装了源代码,清除了virtualbox 并再次安装,但我遇到了同样的问题。
我已经阅读了一些关于双引导 Ubuntu 和 Windows 8 的指南,但我读过的所有指南都是关于旧版本的 Ubuntu。他们建议禁用安全启动,因为 Ubuntu 安装程序中存在一个错误,该错误会完全删除 Windows 8 引导加载程序。在 Ubuntu 14.04 中是否仍然需要禁用它?安装完成后可以再次启用吗?另外,在相关说明中,我知道安装需要禁用快速启动,但是安装完成后,我也可以重新启用吗?
shim 是一个简单的 EFI 应用程序,它在运行时会尝试打开并执行另一个应用程序。它最初会尝试通过标准 EFI
LoadImage()和StartImage()调用来执行此操作。如果这些失败(例如,因为启用了安全启动并且二进制文件未使用适当的密钥签名),它将根据内置证书验证二进制文件。如果此操作成功并且二进制或签名密钥未列入黑名单,则 shim 将重新定位并执行二进制。
我一直在阅读以了解启用安全启动选项时验证过程是如何发生的:
vmlinuz *-generic 和 *-generic.efi.signed 的区别
我现在可以说程序是这样的:
Shim 首先由机器的固件运行。现在 shim 必须运行引导加载程序。我不明白的是 shim 如何验证二进制文件?例如,上面引用的段落指出 shim 尝试通过标准 EFILoadImage()和StartImage()调用启动另一个应用程序,如果失败,shim 尝试从内置证书验证二进制文件。那么这个内置证书属于 shim 吗?本质上,为什么 shim 被称为 Machine Owner Key Manager (MOK)?因为它有自己的密钥数据库来验证二进制文件。
简单地说,机器的固件在 NVRAM 中有自己的密钥数据库来验证二进制文件,而 shim 有自己的密钥数据库来验证二进制文件?
在验证并执行引导加载程序后,引导加载程序在哪里查找需要引导的已签名内核的密钥,例如从固件的密钥数据库中?
virtualbox ×3
14.04 ×2
secure-boot ×2
uefi ×2
16.04 ×1
boot ×1
bootloader ×1
dkms ×1
dual-boot ×1
grub2 ×1
kernel ×1
windows-8 ×1