VirtualbBox:UEFI环境下安装VirtualBox
造冰箱的大熊猫@cnblogs 2018/12/18
1、问题
在一台新计算机上安装VirtualBox,启动虚拟机时出现“Kernel driver not installed (rc=-1908)”错误。按照错误提示执行“sudo modprobe vboxdrv”无法解决问题。降级安装老版本的VirtualBox问题依旧。最后发现这个问题是与计算机使用UEFI导致的。
2、问题产生的原因
首先说明一下虚拟机安装环境:
- 主机:使用UEFI
- 主机的操作系统:Ubuntu 16.04(uname -a:4.15.0-42-generic)
- VirtualBox:v5.1.38_Ubuntu r122592
UEFI[1]定义了计算机固件与操作系统之间的接口,是传统BIOS的替代者。UEFI的功能之一是提供所谓的“Secure Boot”功能。该功能只允许通过数字签名认证的操作系统或驱动被加载。VirtualBox所需的模块“vboxdrv”没有进行数字签名,导致该模块未能被加载,进而导致VirtualBox运行失败。
3、解决方法一
在计算机固件配置中关闭“Secure Boot”功能,VirtualBox就可以正常运行。但是,一旦重新启动“Secure Boot”,问题又会出现。
4、解决方法二
为xboxdvr创建数字签名,并将数字签名添加到UEFI中。具体操作步骤如下:
1)创建数字签名
在命令行中执行以下命令
openssl req -new -x509 -newkey rsa:2048 -keyout FILENAME.priv -outform DER -out FILENAME.der -nodes -days 36500 -subj "/CN=KEYNAME/"
执行这个命令,会在当前路径下创建一对数字签名文件FILENAME.priv和FILENAME.der。你可以将FILENAME和KEYNAME设置为任何你喜欢的名字。
2)检查vboxdrv的位置
在命令行中执行以下命令
modinfo vboxdrv
返回如下执行结果(显示内容可能会因为操作系统和硬件的不同而略有不同)
filename: /lib/modules/4.15.0-42-generic/updates/dkms/vboxdrv.ko
version: 5.1.38_Ubuntu r122592 (0x002a0000)
license: GPL
description: Oracle VM VirtualBox Support Driver
author: Oracle Corporation
srcversion: 6598048D64CD6300853C314
depends:
retpoline: Y
name: vboxdrv
vermagic: 4.15.0-42-generic SMP mod_unload
parm: force_async_tsc:force the asynchronous TSC mode (int)
3)对vboxdrv进行数字签名
在命令行中执行一下命令
sudo /usr/src/linux-headers-4.15.0-42-generic/scripts/sign-file sha256 ./FILENAME.priv ./FILENAME.der /lib/modules/4.15.0-42-generic/updates/dkms/vboxdrv.ko
这里,
- linux-headers-4.15.0-42-generic:应当与“uname -a”命令返回的结果相匹配。
- ./FILENAME.priv”、./FILENAME.der:应当与步骤1)中生产的数字签名文件的路径相匹配。这上述例子中,我们假设一对数字签名文件处于命令行当前路径下。
- /lib/modules/4.15.0-42-generic/updates/dkms/vboxdrv.ko:应当与步骤2)返回的“filename”保持一致。
4)将公钥添加至MOK
在命令行中执行以下命令,将vboxdrv的公钥添加到UEFI的MOK(Module Owned Keys)。执行命令过程中,要求用户输入密码,该密码用于步骤5。
sudo mokutil --import FILENAME.der
5)登记公钥
重启计算机,UEFI会检测到MOK中新添加了公钥,并提示用户是否登记新的公钥。用户根据屏幕提示执行即可(选择“Enroll key from disk”?2019/5/9补充,这句话可能写得不准,如果不对选择屏幕上其它选项)。
完成上述步骤后,VirtualBox中的虚拟机就可以正常运行了。
注意:升级内核后,这一问题会再次出现,需要重新对vboxdrv添加数字签名。
VirtualbBox:UEFI环境下安装VirtualBox的更多相关文章
- 有些新电脑采用“UEFI”作为固件。由于UEFI不支持DOS,所以在UEFI环境下安装的WIN10等系统也就无法使用基于DOS的一键GHOST
有些新电脑采用“UEFI”作为固件.由于UEFI不支持DOS,所以在UEFI环境下安装的WIN10等系统也就无法使用基于DOS的一键GHOST
- 【转】windows环境下安装win8.1+Mac OS X 10.10双系统教程
先要感谢远景论坛里的各位大神们的帖子 没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区的 ...
- 在 windows 环境下安装 redislive
这是一篇在 windows 环境下安装 redislive 的教程! 项目地址:https://github.com/nkrode/RedisLive 配置文档:http://www.nkrode.c ...
- windows环境下安装win8.1+Mac OS X 10.10双系统教程
首先要感谢远景论坛里的各位大神们的帖子 没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区 ...
- 在 xampp 环境下安装 laravel
网上搜了很多教程,很多都是采用命令行安装的.但是对于web前端来说,根本就不知道在干吗! 于是,打算写一篇文章,来教后面的人如何在 XAMPP 环境下安装 laravel. 初步认识 XAMPP(Ap ...
- Linux环境下安装Tigase XMPP Server
Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...
- 【Oracle】在WIN NT 64位环境下安装win64_11gR2_database。并用PL/SQL连接
因为现在大多数服务器环境均为64位环境,而且有一部分使用的windows server的环境,在此做了一番小研究,如何在64位环境下安装oracle11g_64bit服务端 (1)首先www.orac ...
- linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)
linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...
- DICOM:Ubuntu14环境下安装dcm4chee+oviyam2.1
背景: 之前博文DICOM:开源DICOM服务框架DCM4CHEE安装中曾介绍过在Windows7环境下安装部署dcm4chee.近期公司项目需要与部署到Linux系统的远端基于dcm4chee框架的 ...
随机推荐
- MYSQL---触发器简单了解
触发器 trigger 1.触发器是指事先为某张表绑定一段代码,当表中某些内容发生改变(增insert.删delete.改update)时,系统自动触发绑定的那段代码并执行.比如 一旦订单表里插入新订 ...
- hype-v上centos7部署高可用kubernetes集群实践
概述 在上一篇中已经实践了 非高可用的bubernetes集群的实践 普通的k8s集群当work node 故障时是高可用的,但是master node故障时将会发生灾难,因为k8s api serv ...
- 在Win10上运行ESXI-Comstomer
在Win10上运行ESXI-Comstomer 来源 https://www.v-front.de/p/esxi-community-packaging-tools.html ESXi-Customi ...
- 09 Python之IO多路复用
四种常见IO模型 阻塞IO(blocking IO).非阻塞IO(nonblocking IO).IO多路复用(IOmultiplexing).异步IO(asynchronous IO) IO发生时涉 ...
- Winfrom 极简版贪吃蛇源码
该源码是我在百度知识库借助前辈的的经验,加上自己的一点小改动写的一个非常简陋的贪吃蛇小程序.如果你们有更好的改动方案,欢迎评论. 进入主题吧! 1.创建一个桌面应运程序,拖一个定时器控件.这样,程序界 ...
- Yii2常用操作
获取添加或修改成功之后的数据id $insert_id = $UserModel->attributes['id']; 执行原生sql $list = Yii::$app->db-> ...
- Tarjan无向图的割点和桥(割边)全网详解&算法笔记&通俗易懂
更好的阅读体验&惊喜&原文链接 感谢@yxc的腿部挂件 大佬,指出本文不够严谨的地方,万分感谢! Tarjan无向图的割点和桥(割边) 导言 在掌握这个算法前,咱们有几个先决条件. [ ...
- java线程基础巩固---线程生产者消费者的综合实战结合Java8语法
基于上一次[http://www.cnblogs.com/webor2006/p/8909558.html]学习的多个生产者与多个消费者模型,此次用另外一个案例来进一步巩固线程之间的调度处理,这里还是 ...
- Jmeter的安装配置
最近我在学习软件测试,然鹅学习最大的成效就是实践,这不刚看完视频之后就开始自己动手了... 首先要下载软件--JMETER: 1).在输入框中输入jmeter,然后找到Apache Jmeter 官 ...
- AIDE入侵检测系统
一.AIDE简介 • AIDE(Advanced Intrusion Detection Environment)• 高级入侵检测环境)是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那 ...