造冰箱的大熊猫@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添加数字签名。

[1] 维基百科:UEFI

VirtualbBox:UEFI环境下安装VirtualBox的更多相关文章

  1. 有些新电脑采用“UEFI”作为固件。由于UEFI不支持DOS,所以在UEFI环境下安装的WIN10等系统也就无法使用基于DOS的一键GHOST

    有些新电脑采用“UEFI”作为固件.由于UEFI不支持DOS,所以在UEFI环境下安装的WIN10等系统也就无法使用基于DOS的一键GHOST

  2. 【转】windows环境下安装win8.1+Mac OS X 10.10双系统教程

    先要感谢远景论坛里的各位大神们的帖子  没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区的 ...

  3. 在 windows 环境下安装 redislive

    这是一篇在 windows 环境下安装 redislive 的教程! 项目地址:https://github.com/nkrode/RedisLive 配置文档:http://www.nkrode.c ...

  4. windows环境下安装win8.1+Mac OS X 10.10双系统教程

    首先要感谢远景论坛里的各位大神们的帖子  没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区 ...

  5. 在 xampp 环境下安装 laravel

    网上搜了很多教程,很多都是采用命令行安装的.但是对于web前端来说,根本就不知道在干吗! 于是,打算写一篇文章,来教后面的人如何在 XAMPP 环境下安装 laravel. 初步认识 XAMPP(Ap ...

  6. Linux环境下安装Tigase XMPP Server

    Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...

  7. 【Oracle】在WIN NT 64位环境下安装win64_11gR2_database。并用PL/SQL连接

    因为现在大多数服务器环境均为64位环境,而且有一部分使用的windows server的环境,在此做了一番小研究,如何在64位环境下安装oracle11g_64bit服务端 (1)首先www.orac ...

  8. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

  9. DICOM:Ubuntu14环境下安装dcm4chee+oviyam2.1

    背景: 之前博文DICOM:开源DICOM服务框架DCM4CHEE安装中曾介绍过在Windows7环境下安装部署dcm4chee.近期公司项目需要与部署到Linux系统的远端基于dcm4chee框架的 ...

随机推荐

  1. phpstudy 最新版linux 面板 web防火墙后门防护功能教程

    phpstudy linux 面板针对服务器和网站做了全面的安全防护措施,尽可能的防范网站被入侵,留置后门风险,本篇文章着重介绍phpstudy linux 面板其中的一项安全功能 [网站防火墙]之[ ...

  2. centos服务器之间相互挂载(samba)

    前提:假设A服务器ip为:192.168.1.101 ,B服务器ip为:192.168.1.102现在要求把A服务器的/mnt/test 路径下的文件夹 共享到B服务器的/home/ceshi 下. ...

  3. Codeforces 1236B. Alice and the List of Presents

    传送门 显然每种礼物是互相独立的,一个礼物的分配不会影响另一个礼物 对于某个礼物 $x$ , 对于每个盒子来说,要么选要么不选,那么可以看成长度为 $m$ 的二进制序列 这个序列第 $i$ 位的数就代 ...

  4. 啥叫K8s?啥是k8s?

    •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什么是 ...

  5. SharePoint 创建母版页

    一.前言 文章成体系,如果有不明白的地方请查看前面的文章. 二.目录 1.创建HTML页面 2.将HTML文件转换为SharePoint母版页 3.在 SPD中修改母版页“PlaceHolderMai ...

  6. Struts的相关基础

    为什么要用struts? 1.该框架基予mvc的开发设计模式上的,所以拥有mvc的全部优点,他在M.V.C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,有mvc的一系列优点:层次分明, ...

  7. 关键词提取算法TF-IDF与TextRank

    一.前言 随着互联网的发展,数据的海量增长使得文本信息的分析与处理需求日益突显,而文本处理工作中关键词提取是基础工作之一. TF-IDF与TextRank是经典的关键词提取算法,需要掌握. 二.TF- ...

  8. Datasnap 获取客户端IP

    uses Data.DBXTransport; //ServerContainer procedure TServerContainer.DSServer1Connect(DSConnectEvent ...

  9. JavaMaven【四、坐标&构件】

    maven的依赖都是使用坐标找到对应的构件来进行的 坐标 即groupId+artifactId+version 上图第一个红框是本项目的坐标 第二个红框是依赖的项目的坐标 构件 坐标对应的jar包 ...

  10. Windows defender怎么才能彻底关闭?

    据不久前的一项测试表明,Windows系统自带的Windows defender软件在所有参与测试的杀毒安全软件中对win10的运行速度影响最大. 而Win10系统的Windows defender会 ...