Fedora 31:在 VirtualBox 中“请安装与当前内核匹配的 Linux 内核“头”文件,以便为系统添加新硬件支持”

Fedora 31:在 VirtualBox 中“请安装与当前内核匹配的 Linux 内核“头”文件,以便为系统添加新硬件支持”

我正在使用 Fedora 31,并使用网站上的 RPM(VirtualBox-6.1-6.1.14_140239_fedora31-1.x86_64.rpm)安装了 VirtualBox,这应该是最新版本。

启动它时出现以下错误:

$ virtualbox
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (5.8.11-100.fc31.x86_64) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.

从内核版本来看,一切似乎都很好。

$ uname -a
Linux localhost.localdomain 5.8.11-100.fc31.x86_64 #1 SMP Wed Sep 23 15:15:42 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

当我尝试启动虚拟机时,我会得到:

**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.

但模块无法安装:

$ sudo /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 Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.

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.

大多数页面涉及安装类似以下内容的内容:sudo dnf install -y kernel-devel kernel-devel-$(uname -r) 但由于找不到包,因此出现错误。

我检查了一些VirtualBox 论坛,处理 Fedora。他们还建议安装标头,只是使用略有不同的命令。要么找不到它,要么它已经安装了:

Das Paket kernel-headers-5.8.11-100.fc31.x86_64 ist bereits installiert.
No match for argument: kernel-devel-5.8.11-100.fc31.x86_64
Fehler: Es konnte kein Treffer gefunden werden.: kernel-devel-5.8.11-100.fc31.x86_64

在大多数 Ubuntu 论坛上,似乎只需使用 apt-get 命令即可快速解决此问题。有时有人声称软件包已过时,但由于 Fedora 的更新频率比 Ubuntu 更高,我想知道这背后的问题是什么。

答案1

我找到了一篇文章来帮助您安装访客附加功能。

https://www.tecmint.com/install-virtualbox-guest-additions-in-fedora/

安装 VirtualBox 客户机附加组件的第一步是安装内核头文件。这包括安装 dkms 包(动态内核模块支持)以及其他构建工具(如图所示)。

$ sudo dnf 安装 dkms 内核开发 gcc bzip2 make curl

成功安装内核头文件后,您需要确认 Linux 内核的版本并确保它与刚刚安装的内核头文件的版本相匹配。

要检查 Linux 内核的版本,请运行该命令。

$ uname -r 或 $ hostnamectl | grep -i kernel

要检查内核开发工具(kernel-devel)的版本,请执行。

$ sudo rpm -qa 内核开发

验证 Linux 内核头文件 验证 Linux 内核头文件

如果两者(内核版本和kernel-devel)的版本不匹配,如上图所示,请使用命令更新内核。

$ sudo dnf 更新内核-*

完成内核更新后,重新启动系统,然后再次验证内核版本。

$ uname -r

这对你有用。非常感谢,@John

答案2

本指南对我帮助很大。VirtualBox 在我的 Fedora 34 上运行得很顺畅。VirtualBox 安装指南底部还有一个 Guest Additions 安装指南。

相关内容