虚拟盒不再工作,怀疑是内核更新导致的

虚拟盒不再工作,怀疑是内核更新导致的

虚拟盒无法启动任何虚拟机,怀疑这是由于内核更新造成的

Kernel driver not installed (rc=-1908)

VirtualBox Linux 内核驱动程序 ( vboxdrv) 未加载或 存在权限问题/dev/vboxdrv。请重新安装 virtualbox-dkms 包并通过执行加载内核模块

modprobe vboxdrv

以 root 身份运行。

其中:suplibOsInit 内容:3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - 未安装支持驱动程序。在 Linux 上,open 返回 ENOENT。

当你尝试重新安装 dkms 时

sudo apt-get install --reinstall virtualbox-dkms
Building for 5.0.0-23-generic
Building initial module for 5.0.0-23-generic
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/virtualbox-dkms.0.crash'
Error! Bad return status for module build on kernel: 5.0.0-23-generic (x86_64)
Consult /var/lib/dkms/virtualbox/5.2.18/build/make.log for more information.

Make日志如下:

DKMS make.log for virtualbox-5.2.18 for kernel 5.0.0-23-generic (x86_64)
Sun Aug  4 08:04:13 IST 2019
make: Entering directory '/usr/src/linux-headers-5.0.0-23-generic'
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/linux/SUPDrv-linux.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/SUPDrv.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/SUPDrvGip.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/SUPDrvSem.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/SUPDrvTracer.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/SUPLibAll.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/alloc-r0drv.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/initterm-r0drv.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/memobj-r0drv.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/mpnotification-r0drv.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/powernotification-r0drv.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/assert-r0drv-linux.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/alloc-r0drv-linux.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/initterm-r0drv-linux.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.o
  CC [M]  /var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o
/var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.c: In function ‘VBoxHost_RTR0MemUserIsValidAddr’:
/var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.c:69:55: error: macro "access_ok" passed 3 arguments, but takes just 2
     bool fRc = access_ok(VERIFY_READ, (void *)R3Ptr, 1);
                                                       ^
/var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.c:69:16: error: ‘access_ok’ undeclared (first use in this function)
     bool fRc = access_ok(VERIFY_READ, (void *)R3Ptr, 1);
                ^~~~~~~~~
/var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.c:69:16: note: each undeclared identifier is reported only once for each function it appears in
scripts/Makefile.build:284: recipe for target '/var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o' failed
make[2]: *** [/var/lib/dkms/virtualbox/5.2.18/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o] Error 1
make[2]: *** Waiting for unfinished jobs....
scripts/Makefile.build:515: recipe for target '/var/lib/dkms/virtualbox/5.2.18/build/vboxdrv' failed
make[1]: *** [/var/lib/dkms/virtualbox/5.2.18/build/vboxdrv] Error 2
Makefile:1606: recipe for target '_module_/var/lib/dkms/virtualbox/5.2.18/build' failed
make: *** [_module_/var/lib/dkms/virtualbox/5.2.18/build] Error 2
make: Leaving directory '/usr/src/linux-headers-5.0.0-23-generic'

如果我尝试

sudo modprobe vboxdrv
modprobe: FATAL: Module vboxdrv not found in directory /lib/modules/5.0.0-23-generic

知道如何修复这个问题吗?

答案1

您需要清除并重新安装 VirtualBox。

  1. 将您的虚拟机备份到安全的地方。

  2. 清除 Virtualbox:

    $ sudo apt purge virtualbox*
    
  3. 摆脱旧的依赖和配置:

    $ sudo apt autoremove
    $ sudo apt autoclean
    
  4. 安装崭新的 VBox

安装 VBox 有两种方式。从标准存储库 (选项1)或来自 PPA(选项 2)。只做其中一项,不要同时做两项。

选项 1. 您可以直接从标准存储库安装,如下所示:

$ sudo apt install virtualbox

选项 2. 从 PPA 安装

如果您想要最新版本的 VBox 和任何潜在的闭源驱动程序,请按照以下步骤从 PPA 安装。

4.2.1.将以下行添加到您的 /etc/apt/sources.list:

deb https://download.virtualbox.org/virtualbox/debian bionic contrib

4.2.2.下载 Oracle 公钥:

$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

4.2.3.安装 VirtualBox:

sudo apt-get update
sudo apt-get install virtualbox

有关 PPA 安装的更多信息这里

  1. 享受 :)

答案2

我知道这是一个老话题,但我在 Ubuntu 22.04 中遇到了同样的问题,据我所知,这是由于安全启动造成的。

我尝试通过终端排除运行 virtualbox 的故障,然后收到一条消息,建议我运行

sudo/sbin/vboxconfig 复制代码

它帮助我通过引导过程对内核驱动程序进行签名(再次,如果我做对了的话)。

到目前为止一切运行良好,我希望这能有所帮助。

如果我写错了或者不清楚请告诉我:)

相关内容