VirtualBox 6.1 使用错误的 Linux 内核版本模块头文件

VirtualBox 6.1 使用错误的 Linux 内核版本模块头文件

我不知道为什么没有构建正确的内核模块。我升级了内核,然后降级了它。那时 VirtualBox 6.1 停止工作了。要在 Mint/Ubuntu 上安装 Vbox,您需要添加它们的 deb 存储库,然后发出:apt install virtualbox-6.1。执行此操作会卸载以前的版本和相关软件包,例如:

virtualbox
virtualbox-dkms

我当前的内核:5.4.0-53-通用

迪斯托:Linux Mint 19.3 Tricia (Ubuntu 18.04)

升级然后降级内核(6.1 之前可以正常工作)后,我在尝试启动 VM 时收到以下错误:

Kernel driver not installed (rc=-1908)

The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing

'/sbin/vboxconfig'

as root.

If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT. 

所以我运行/sbin/vboxconfig它会产生:

❯ /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
depmod: WARNING: could not open /lib/modules/5.4.65/modules.order: No such file or directory
depmod: WARNING: could not open /lib/modules/5.4.65/modules.builtin: No such file or directory
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
At main.c:281:
- SSL error:02001002:system library:fopen:No such file or directory: ../crypto/bio/bss_file.c:69
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: ../crypto/bio/bss_file.c:76
kmodsign: /lib/modules/5.4.0-53-generic/misc/vboxdrv.ko: No such file or directory
At main.c:281:
- SSL error:02001002:system library:fopen:No such file or directory: ../crypto/bio/bss_file.c:69
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: ../crypto/bio/bss_file.c:76
kmodsign: /lib/modules/5.4.0-53-generic/misc/vboxnetflt.ko: No such file or directory
At main.c:281:
- SSL error:02001002:system library:fopen:No such file or directory: ../crypto/bio/bss_file.c:69
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: ../crypto/bio/bss_file.c:76
kmodsign: /lib/modules/5.4.0-53-generic/misc/vboxnetadp.ko: No such file or directory
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

所以我试着看看它想要什么。 dmesg 里什么也没有。

❯ locate /lib/modules/5.4.65
/lib/modules/5.4.65
/lib/modules/5.4.65/misc
/lib/modules/5.4.65/modules.alias
/lib/modules/5.4.65/modules.alias.bin
/lib/modules/5.4.65/modules.builtin.bin
/lib/modules/5.4.65/modules.dep
/lib/modules/5.4.65/modules.dep.bin
/lib/modules/5.4.65/modules.devname
/lib/modules/5.4.65/modules.softdep
/lib/modules/5.4.65/modules.symbols
/lib/modules/5.4.65/modules.symbols.bin
/lib/modules/5.4.65/misc/vboxdrv.ko
/lib/modules/5.4.65/misc/vboxnetadp.ko
/lib/modules/5.4.65/misc/vboxnetflt.ko

看起来它是为错误的内核构建的。我已经尝试了所有能找到的解决方案。到目前为止,重新启动或清除软件包没有任何帮助。

答案1

根据上面 Brian Turek 的回答,我设法解决了这个问题。我仍然不知道是什么原因导致此类问题,但重新安装内核头并没有解决我的问题。事实上,我现在可以看到这个问题对于多个内核版本来说都存在。

如果两个命令的输出不同,则此问题可能适用于您:

root@:/# uname -r
5.4.0-60-generic

root@:/# cat /usr/src/linux-headers-$(uname -r)/include/config/kernel.release
5.4.78

在这种情况下,可以在文件的模块下找到构建的模块kernel.release

root@:/# ls /lib/modules/5.4.78/misc/vbox*
/lib/modules/5.4.78/misc/vboxdrv.ko
/lib/modules/5.4.78/misc/vboxnetadp.ko
/lib/modules/5.4.78/misc/vboxnetflt.ko

当您将模块移动到当前使用的内核的正确位置时,您可以随后加载它们:

root@:/# mv /lib/modules/5.4.78/misc /lib/modules/5.4.0-60-generic/misc
root@:/# depmod -a
root@:/# modprobe vboxdrv

当然,这只是一个临时的解决方法,直到您安装下一版本的内核为止。

答案2

看一眼https://www.virtualbox.org/ticket/19723

看起来内核头与当前内核不同步(它只是一个托管符号链接)。看起来最简单的解决方案是重新安装与您正在运行的内核相匹配的特定内核头版本。

答案3

我确实遇到过类似的问题。

就我而言:

root@:/# uname -r
5.4.0-81-generic

root@:/# cat /usr/src/linux-headers-$(uname -r)/include/config/kernel.release
5.4.128

重新安装 linux-headers 软件包没有运气。我编辑并更改了/usr/src/linux-headers-$(uname -r)/include/config/kernel.releasefrom5.4.128的值5.4.0-81-genericvboxconfig成功运行,然后 virtualbox 也成功运行。

相关内容