virtualbox 在 ubuntu 中不能正常启动的解决办法

问题描述:

vboxdrv.sh: failed: modprobe vboxdrv failed. Please use ‘dmesg’ to find out why

解决步骤

1. 安装 virtualbox

2. 设置 RSA

1
2
3
4
5
6
$ sudo -i
# mkdir /root/module-signing
# cd /root/module-signing
# openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=YOUR_NAME/"
[...]
# chmod 600 MOK.priv

3. 导入啥啥啥

1
2
3
# mokutil --import /root/module-signing/MOK.der
input password:
input password again:

4.重启机器。注意,注意观测开机时的提示,需要 press any key。然后选择 enable ...,输入上一步的密码即可

5. 新建一个脚本文件

/root/module-signing/sign-vbox-modules

1
2
3
4
5
6
7
8
#!/bin/bash

for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
echo "Signing $modfile"
/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \
/root/module-signing/MOK.priv \
/root/module-signing/MOK.der "$modfile"
done
1
# chmod 700 /root/module-signing/sign-vbox-modules

6. 启动啥啥啥

1
# modprobe vboxdrv

7. 如果每次内核更新,记得再执行 6 即可

2019年07月03日 补充

如果执行下述指令报错

1
# modprobe vboxdrv

尝试以下方案

1
2
sudo apt update
sudo apt install --reinstall linux-headers-$(uname -r) virtualbox-dkms dkms
1
sudo modprobe vboxdrv

应该就可以了。

And if it doesn’t work you must disable Secure Boot in your BIOS/UEFI settings because Secure Boot prevents unsigned modules from being loaded.

参考文章: