VirtualBox 内核驱动程序未安装(rc=1908)

VirtualBox 内核驱动程序未安装(rc=1908)

我正在尝试在 Ubuntu 20.04(主机)上设置 Windows 10(客户机)VM,但在尝试启动它时遇到以下问题。

虚拟机“Windows 10 Pro”在启动过程中意外终止,退出代码为 1 (0x1)。
结果代码:NS_ERROR_FAILURE (0x80004005)
组件:MachineWrap
接口:IMachine {85632c68-b5bb-4316-a900-5eb28d3413df}

无法打开会话

内核驱动程序未安装 (rc=-1908)
VirtualBox Linux 内核驱动程序未加载或未正确设置。请尝试通过以 root 身份执行“/sbin/vboxconfig”重新设置。
如果您的系统启用了 EFI 安全启动,您可能还需要签署内核模块 (vboxdrv、vboxnetflt、vboxnetadp、vboxpci),然后才能加载它们。请参阅 Linux 系统的文档以获取更多信息。
其中:suplibOsInit 什么:3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - 未安装支持驱动程序。在 Linux 上,open 返回 ENOENT。**

kernel_driver_not_installed

在终端中:

$ virtualbox
警告:vboxdrv 内核模块未加载。要么没有模块
         适用于当前内核(5.13.0-051300-generic),或者无法
         加载。请重新编译内核模块并通过

           sudo/sbin/vboxconfig 复制代码

         在解决此问题之前,您将无法启动虚拟机。

当我输入给定的命令时:

$ sudo /sbin/vboxconfig
vboxdrv.sh:停止 VirtualBox 服务。
vboxdrv.sh:启动 VirtualBox 服务。
vboxdrv.sh:构建 VirtualBox 内核模块。
此系统当前尚未设置以构建内核模块。
请安装与当前内核匹配的 Linux 内核“头”文件
用于向系统添加新硬件支持。
包含标头的分发包可能是:
    Linux 标头-通用 Linux 标头-5.13.0-051300-通用
此系统当前尚未设置以构建内核模块。
请安装与当前内核匹配的 Linux 内核“头”文件
用于向系统添加新硬件支持。
包含标头的分发包可能是:
    Linux 标头-通用 Linux 标头-5.13.0-051300-通用

设置 VirtualBox 时出现问题。要重新启动设置过程,请运行
  /sbin/vboxconfig
以 root 身份进行。如果您的系统使用 EFI 安全启动,您可能需要签署
内核模块(vboxdrv、vboxnetflt、vboxnetadp、vboxpci)才可以加载
它们。请参阅 Linux 系统的文档以了解更多信息。

奇怪的是,当我尝试安装该软件包时,得到以下结果:

$ sudo apt-get 安装 linux-headers-$(uname -r)
正在读取软件包列表...完成
构建依赖关系树       
正在读取状态信息...完成
软件包 linux-headers-5.13.0-051300-generic 不可用,但被另一个软件包引用。
这可能意味着包丢失、已被淘汰,或者
只能从其他来源获得

E:软件包‘linux-headers-5.13.0-051300-generic’没有安装候选项
$ apt 列表|grep linux-headers-5.13

警告:apt 没有稳定的 CLI 界面。在脚本中请谨慎使用。

Linux 标头 5.13.0-051300/now 5.13.0-051300.202106272333 全部 [已安装,本地]

我知道那里有两个问题:

  1. 缺少 Linux 标头
  2. 内核模块未签名

这两个问题有关联吗?知道为什么我找不到所需的 linux-headers 以及如何找到它们吗?

我尝试过:

  • 使用命令行重新安装 virtualbox
$ sudo apt 安装 virtualbox
$ sudo apt install --reinstall virtualbox-dkms && sudo apt install libelf-dev

附言:我不希望停用安全启动

感谢您的帮助

答案1

我今天在自己的设置中遇到了完全相同的问题并已修复。

  • 主机操作系统:具有安全启动功能的 Ubuntu 20.04
  • 内核:5.10.0-1034-oem
  • Virtualbox 版本:6.1.22 r144080(Qt5.12.8)

正如本文所提到的博客,该错误与未签名的 Virtualbox 模块有关,这些模块在启用了安全启动的 Linux 主机中不起作用。

阅读博客后,我发现它基本上是创建 RSA 密钥对,然后对内核进行签名。我相信我在安装 Ubuntu 主机系统后已经完成了此操作。因此,我跳过了这些步骤,并尝试在 root 权限下使用以下命令来验证未签名的 Virtualbox 模块是否是问题所在:

root@ubuntu:~# modinfo -n vboxdrv
modinfo: ERROR: Module vboxdrv not found.

在谷歌上搜索了上述错误后,我发现了另一个有用的回答来自 StackExchange,其中展示了如何安装模块:

apt install virtualbox-ext-pack

然后我尝试重新配置模块,但发现缺少一些构建实用程序:

root@ubuntu:~# /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the gcc make perl packages from your distribution.
This system is currently not set up to build kernel modules.
Please install the gcc make perl packages from your distribution.

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.

然后我尝试安装它们并重新运行它:

root@ubuntu:~# apt install gcc make perl
root@ubuntu:~# /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
root@derrick-XPS:~# modinfo -n vboxdrv
/lib/modules/5.10.0-1034-oem/misc/vboxdrv.ko

最后,我能够在 Ubuntu 主机上顺利安装 Windows 10。

希望这能有所帮助。如果没有,请参考博客首先创建 RSA 密钥对。

答案2

我使用 Ubuntu 22。

当我运行时sudo /sbin/vboxconfig,它给出一个错误.. vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong. ..

我用检查了日志文件cat /var/log/vbox-setup.log。我看到了错误/bin/sh: 1: gcc-12: not found ..

我安装了 gcc-12sudo apt install gcc-12

然后,我sudo /sbin/vboxconfig再次运行命令。

如果问题仍未解决,请卸载虚拟盒并重新安装

答案3

我遇到了完全相同的问题 (2023),并找到了一个有效的解决方案。它可以像安装正确的 VirtualBox 版本一样简单。如果你执行“sudo install virtualbox”并认为这(直观地)是正确的,那么它可能是错误的。让我告诉你。

检查内核版本:

uname -r

输出将显示内核版本和“扩展名”。记住该扩展名。例如:

6.5.5-258.lts

或者

6.5.5-258.current

现在看看你可以在“virtualbox”中找到什么:

user@group ~ $ sudo [your package manager] search virtualbox

minikube-dbginfo        - Debug symbols for minikube
minikube                - Kubernetes development environment
virtualbox              - VirtualBox host modules for the linux-lts kernel
virtualbox-common       - Common components for VirtualBox host packages
virtualbox-guest-common - Common components for the VirtualBox guest packages
virtualbox-guest        - VirtualBox guest additions for the linux-lts kernel
virtualbox-dbginfo      - Debug symbols for virtualbox
virtualbox-devel        - Development components for VirtualBox
virtualbox-current      - VirtualBox host modules for the linux-current kernel

由于您想安装 VirtualBox,您可以直接选择安装“virtualbox”;但是,这将安装“.lts”版本。选择与您的内核扩展相匹配的 virtualbox 包。例如:如果“uname -r”命令导致出现“xxx-xxx.current”,则:

sudo [your package manager] install virtualbox-current

帮我修好了。

答案4

lsb_release -a
Description:    Ubuntu 23.10

所以

sudo dpkg --purge --force-all virtualbox-6.1
sudo apt install virtualbox

已安装:

dkms libgsoap-2.8.124 liblzf1 libvncserver1 virtualbox-dkms virtualbox-qt

帮我修复了它

相关内容