我在运行 virtualbox 时遇到问题,它需要对驱动程序进行签名,否则安装会失败并且无法启动虚拟机。
我读过这是因为主机服务已启用安全启动,我这样做是因为工作需要(我无法禁用它),但也许配置不正确?
因此,以下三件事让我相信这是可行的:
[ -d /sys/firmware/efi ] && echo "Installed in UEFI mode" || echo "Installed in Legacy mode"
Installed in UEFI mode
在 BIOS 中,我还可以看到安全启动已启用。
并且 virtualbox 失败大概是因为它需要对驱动程序进行签名,我从其他问题中了解到必须这样做,因为这是安全启动应该检查的,而且因为我用 dkms 在本地编译驱动程序,所以除了自己签名之外没有其他办法。
但是,当我尝试手动签署驱动程序时,mokutil 给出了此错误:
# mokutil --sb-state
This system does't support Secure Boot
我不明白它检查什么来判断是否未启用或是否真的未启用。我正在使用 Ubuntu 16.10
virtualbox 给出的错误是:
无法为虚拟机 Hortonworks Docker Sandbox 打开会话。
虚拟机“Hortonworks Docker Sandbox”在启动过程中意外终止,退出代码为 1 (0x1)。
结果代码:NS_ERROR_FAILURE (0x80004005) 组件:MachineWrap 接口:IMachine {b2547866-a0a1-4391-8b86-6952d82efaa0}
内核驱动程序未安装(rc=-1908)
VirtualBox Linux 内核驱动程序 (vboxdrv) 未加载,或者 /dev/vboxdrv 存在权限问题。请通过执行以下命令重新安装内核模块
'/sbin/vboxconfig'
以 root 身份运行。
其中:suplibOsInit 内容:3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - 未安装支持驱动程序。在 Linux 上,open 返回 ENOENT。
我尝试清除所有安装程序,然后重新安装,这种方法对某些人似乎有效,我尝试查看是否有一些预签名的驱动程序可用,这样也许我可以降级我正在使用的内核。我不认为这是问题所在。
在 /var/log/vbox-install.log 中你可以反复找到
make KBUILD_VERBOSE=1 SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 CONFIG_MODULE_SIG= -C /lib/modules/4.8.0-39-generic/build -j4 modules make[1]: 警告:submake 中强制 -jN:禁用 jobserver 模式。test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \ echo >&2;
\ echo >&2 " 错误:内核配置无效。"; \ echo >&2 " 缺少 include/generated/autoconf.h 或 include/config/auto.conf。";\ echo >&2 " 在内核 src 上运行‘make oldconfig && make prepare’来修复它。"; \ echo >&2 ;
我对安全启动的状态最感兴趣,因为据我所知,问题开头的陈述应该告诉我我正在使用它,我想确保它正常工作。虽然我可能一开始就没有生成要签名的驱动程序,而且它与安全启动没有任何关系,这不太可能,因为禁用安全启动似乎是每个人都在做的事情来解决这个问题。
答案1
遇到过类似的问题,在 BIOS (UEFI) 设置中Secure Boot Mode
从切换Standard
到Custom
解决了这个问题。在我的 BIOS 中,它是一个与 分开的选项Secure Boot Support
,保留了Enabled
。YBIOSMV。