花了很长时间才解决了这个问题。在两个发行版(Ubuntu和Arch)上都遇到了vBox的问题。
我已经安装并编译了dkms和所有模块到我的内核中,但是当我尝试运行vBox虚拟机时,仍然收到一个与模块相关的错误消息。
如果你的vBox GUI可以正常启动,但是在尝试运行虚拟机时出现一个告诉你安装VBoxDrv内核模块的错误,那么你的问题与将模块安装到内核中无关,而是与在modprobe中“激活它们”有关,而模块安装脚本未能执行此操作。
要手动加载一个模块(例如,在你的情况下是vboxdrv),打开终端提示符并输入以下命令:
sudo modprobe vboxdrv
如果您的虚拟机在此之后运行而没有出现错误消息,那么您可以通过进入
/etc/modules-load.d/
并创建一个
.conf
文件(例如
vbox.conf
)来永久激活vboxdrv模块。在
.conf
文件中,添加您想要添加的vbox内核模块的名称,例如:
vboxdrv
。
保存并重新启动。
您还可以添加这些可选模块:
vboxnetadp
、
vboxnetflt
和
vboxpci
。
根据Vbox的维基页面:
当您打算使用“Host-only networking”功能时,需要同时安装
vboxnetadp
和
vboxnetflt
。具体来说,vboxnetadp用于在VirtualBox全局首选项中创建主机接口,而vboxnetflt用于使用该网络接口启动虚拟机。
当您的虚拟机需要通过主机上的PCI设备时,需要安装vboxpci。
注意:如果在更新模块时,VirtualBox内核模块已加载到内核中,则需要手动重新加载它们以使用新的更新版本。要执行此操作,请以root身份运行vboxreload命令。
modprobe -a vboxdrv
来解决此问题。 - Yogesh Aggarwal