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

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

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

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

VirtualBox 本身会启动,但当我尝试启动虚拟机时,我得到的是:

虚拟机“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

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

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

4.运行 uname 查看当前版本:

$ uname -r
4.2.3-200.fc22.x86_64

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

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

注意:我也尝试过跑步dnf update kmod-VirtualBox,但没有任何反应,它告诉我类似“没什么可做的”。

答案1

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

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

# dnf remove kmod-VirtualBox-*

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

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

# dnf install akmod-VirtualBox kernel-devel

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

# akmods

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

# akmods --force

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

# systemctl restart systemd-modules-load

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

如果仍然安装旧的 kmod 软件包,构建过程可能会失败。这种情况,请一一卸载,然后akmods重新运行。

更新
这个问题仍然相关,即使在 Fedora 25 上也是如此。请注意,akmods 可能必须使用--force上面所示的选项运行,特别是在手动运行构建时。如果您忘记此选项,它可能只是显示警告而不执行任何操作(错误 4485):

Ignoring VirtualBox-kmod as it failed earlier              [WARNING]

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

答案2

所以这是我经过一番折腾之后解决它的方法:

上次dnf update有一个内核更新,就我而言,它使我从版本 4.1 升级到版本 4.2...所以:

1.首先我删除了我正在使用的现在已经过时的 kmod-VirtualBox:

$ 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

$ sudo dnf remove kmod-VirtualBox-4.1.10-200.fc22.x86_64.x86_64
$ sudo dnf remove kmod-VirtualBox-4.1.7-200.fc22.x86_64.x86_64
$ sudo dnf remove akmod-VirtualBox.x86_64

最后一个(akmod)可能不是必需的,但我还是这么做了。

2.我删除了VirtualBox本身,然后重新启动。

$ dnf list installed | grep virtualbox
VirtualBox-5.0.x86_64                      5.0.6_103037_fedora22-1      @virtualbox
$ sudo dnf remove VirtualBox-5.0.x86_64
$ shutdown -r now

3.系统重新启动后,我重新安装了 virtualbox,它安装了正确的 kmod:

$ sudo dnf install VirtualBox-5.0-5.0.6_103037_fedora22-1.x86_64

现在它又开始工作了。

希望这可以帮助遇到同样问题的人,因为我浪费了一整天的时间试图解决这个问题:)


笔记:在重新安装之前,请尝试使用以下命令手动加载 vboxdrv:

$ sudo /etc/init.d/vboxdrv setup

就我而言,无论出于何种原因,司机已经不在了......

$ sudo /etc/init.d/vboxdrv setup
sudo: /etc/init.d/vboxdrv: command not found

……所以我重新安装了一下,问题就解决了。

相关内容