美文网首页
解决Ubuntu虚拟机启动modprobe vboxdrv问题(

解决Ubuntu虚拟机启动modprobe vboxdrv问题(

作者: 真不懂事 | 来源:发表于2019-05-08 09:12 被阅读0次

      我用的是Ubuntu 16.04系统,想使用virtualbox创建虚拟机时,报错无法创建一个虚拟机任务,理由是"vboxdrv"未加载,尝试重新加载问题如下所示:

    $ sudo modprobe vboxdrv
    modprobe: ERROR: could not insert 'vboxdrv': Required key not available
    

    参考解决办法
      谷歌之后,根据链接网页描述,发现是在升级内核版本之后,从内核版本4.4.0-20开始,强制要求 unsigned 内核模块在启用安全启动的情况下运行。因此我们无法加载一个未签署的模块"vboxdrv"。
    解决方式有两种,一种是禁用安全启动,这种方法简单,但不推荐使用,需要在引导菜单禁用secure-boot。

    第二种方法是签署这些模块。
    具体步骤如下:
    创建签名秘钥:

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"
    

    签署模块

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    

    确认模块已签名

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    

    运行该命令之后显示"匹配到二进制文件"

    最后,将密钥注册到安全启动

    sudo mokutil --import MOK.der
    

    以上步骤完成后,重新启动并按照说明注册MOK(机器所有者密钥)。网上好多方法到这之后就没有了,理论上可以解决问题。

    但我在这里遇到了问题,重启系统之后没有带图示例中显示的蓝屏界面,参考这篇文章ubuntu系统UEFI SecureBoot,我安装了shim-signed包。在安装完之后,需要输两次密码,该密码是注册MOK要使用的密码。
    安装需要的包

    sudo apt-get install shim-signed
    

    使用以下命令将现有密钥注册到填充程序

    sudo update-secureboot-policy --enroll-key
    

    虽然问题解决了,但是我不明白的是这个注册MOK是上面那条命令起作用了还是最后安装的包起作用了。有没有明白的大佬给我科普一下。

    参考(侵删):
    https://wiki.ubuntu.com/UEFI/SecureBoot
    https://sourceware.org/systemtap/wiki/SecureBoot
    https://chubuntu.com/questions/726/could-not-load-vboxdrv-after-upgrade-to-ubuntu-16-04-and-i-want-to-keep-secur.html

    相关文章

      网友评论

          本文标题:解决Ubuntu虚拟机启动modprobe vboxdrv问题(

          本文链接:https://www.haomeiwen.com/subject/uwppoqtx.html