Fedora 22 中的 kmod-VirtualBox 版本不匹配

Faw*_*wix 2 linux fedora virtualbox

遵循本指南后,我安装了 VirtualBox 5 并在 Fedora 中工作了大约 5-6 周,没有任何问题。

然而,在我dnf update昨天跑了之后,它停止了工作。

VirtualBox 本身启动,但是当我尝试启动 VM 时,我得到的是:

虚拟机“MyVM”在启动期间意外终止,退出代码为 1 (0x1)。

结果代码:NS_ERROR_FAILURE (0x80004005)
组件:机器
接口:IMachine

有一些关于向下钻取的进一步说明:

未安装内核驱动程序 (rc= -1908)
VirtualBox Linux 内核驱动程序 (kvboxdvr) 未加载...

所以这是我到目前为止没有运气的尝试: 1.
检查我安装的内容:

$ dnf list installed | grep kmod-VirtualBox*
akmod-VirtualBox.x86_64                    4.3.30-1.fc22                @rpmfusion-free-updates
kmod-VirtualBox-4.1.10-200.fc22.x86_64.x86_64
kmod-VirtualBox-4.1.7-200.fc22.x86_64.x86_64
Run Code Online (Sandbox Code Playgroud)

2.检查repo中可用的内容:

$ dnf provides kmod-VirtualBox
Last metadata expiration check performed 0:03:30 ago on Sun Oct 18 10:37:47 2015.
kmod-VirtualBox-4.3.30-1.fc22.x86_64 : Metapackage which tracks in VirtualBox kernel module for newest kernel
Repo        : rpmfusion-free-updates

kmod-VirtualBox-4.3.28-1.fc22.x86_64 : Metapackage which tracks in VirtualBox kernel module for newest kernel
Repo        : rpmfusion-free
Run Code Online (Sandbox Code Playgroud)

3.尝试安装更新的kmod:

$ sudo dnf install --allowerasing kmod-VirtualBox-4.3.30-1.fc22.x86_64
Last metadata expiration check performed 1:43:30 ago on Sun Oct 18 09:05:58 2015.
Error: nothing provides kernel-uname-r = 4.0.8-300.fc22.x86_64 needed by kmod-VirtualBox-4.0.8-300.fc22.x86_64-4.3.30-1.fc22.x86_64
Run Code Online (Sandbox Code Playgroud)

4.运行 uname 以检查当前版本:

$ uname -r
4.2.3-200.fc22.x86_64
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,我都会收到同样的错误,即没有提供过时的内核。据我了解它不应该。

我跑了dnf clean alldnf clean metadata但没有帮助。我也已经运行了dnf update virtualbox,它告诉我安装了最新版本。任何想法如何解决这个问题?

注意:我也试过跑步,dnf update kmod-VirtualBox但没有任何反应,它告诉我诸如“无事可做”之类的信息。

bas*_*ic6 7

这种情况不时发生,因为当前的 kmod 包有时还没有在存储库中。

您不必完全重新安装 VirtualBox,但可能需要卸载 kmod 软件包:

# dnf remove kmod-VirtualBox-*
Run Code Online (Sandbox Code Playgroud)

但是,您不想卸载 akmod 包,因为这是您的替代方案。如果您安装所需的 akmod 包(并且没有预先构建的 kmod 包),您的系统将在必要时构建 VirtualBox 内核模块(在内核更新之后),因此这应该始终有效 - 与预构建的 kmod 包不同,后者是' 不总是可用。

安装/更新构建所需的 akmod 包和内核头文件:

# dnf install akmod-VirtualBox kernel-devel
Run Code Online (Sandbox Code Playgroud)

您可以手动启动构建过程:

# akmods
Run Code Online (Sandbox Code Playgroud)

您可能必须强制重建(见下文):

# akmods --force
Run Code Online (Sandbox Code Playgroud)

模块服务不应再打印任何错误消息:

# systemctl restart systemd-modules-load
Run Code Online (Sandbox Code Playgroud)

VirtualBox 现在应该能够启动 vms,即使在内核更新之后也是如此。

如果仍然安装了旧的 kmod 软件包,构建过程可能会失败。在这种情况下,将它们一一卸载并akmods重新运行。

更新
即使在 Fedora 25 上,这个问题仍然相关。请注意,akmods 可能必须使用--force如上所示的选项运行,尤其是在手动运行构建时。如果你忘记了这个选项,它可能只是显示一个警告而不做任何事情(错误 4485):

Ignoring VirtualBox-kmod as it failed earlier              [WARNING]
Run Code Online (Sandbox Code Playgroud)

这也可能是为什么 VirtualBox 在内核更新和随后重新启动后有时不会启动任何 VM(“未安装内核驱动程序”)的原因,即使所有必需的包都已安装。有时,akmods 工具会抱怨之前的构建尝试不成功,只是显示警告而不是开始新的构建。如果在重新启动期间发生这种情况,当 VirtualBox 模块应该自动重建时,您稍后会在系统日志中找到此警告,并且您必须使用该--force选项手动运行 akmods ,以便它实际启动构建过程应该在重新启动期间运行。请参阅错误 4485