Virtual box 不再工作,怀疑是内核更新导致的

Pra*_*esh 5 virtualbox kernel drivers

Virtual box 无法启动任何虚拟机,怀疑是因为内核更新

Kernel driver not installed (rc=-1908)
Run Code Online (Sandbox Code Playgroud)

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

modprobe vboxdrv
Run Code Online (Sandbox Code Playgroud)

作为根。

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

当您尝试重新安装 dkms 时

sudo apt-get install --reinstall virtualbox-dkms
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)

制作日志如下:

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'
Run Code Online (Sandbox Code Playgroud)

如果我尝试

sudo modprobe vboxdrv
Run Code Online (Sandbox Code Playgroud)
modprobe: FATAL: Module vboxdrv not found in directory /lib/modules/5.0.0-23-generic
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

Jos*_*tte 2

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

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

  2. 清除虚拟盒:

    $ sudo apt purge virtualbox*
    
    Run Code Online (Sandbox Code Playgroud)
  3. 摆脱旧的 deps 和配置:

    $ sudo apt autoremove
    $ sudo apt autoclean
    
    Run Code Online (Sandbox Code Playgroud)
  4. 安装闪亮的新 VBox

安装 VBox 有两种选择。来自标准存储库(选项 1)或来自 PPA(选项 2)。做其中之一,而不是两者都做。

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

$ sudo apt install virtualbox
Run Code Online (Sandbox Code Playgroud)

选项 2. 从 PPA 安装

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

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

deb https://download.virtualbox.org/virtualbox/debian bionic contrib
Run Code Online (Sandbox Code Playgroud)

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 -
Run Code Online (Sandbox Code Playgroud)

4.2.3. 安装VirtualBox:

sudo apt-get update
sudo apt-get install virtualbox
Run Code Online (Sandbox Code Playgroud)

有关 PPA 安装的更多信息请参见此处

  1. 享受 :)

  • 这不行..!!!仍然有同样的错误..! (2认同)