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 all,dnf clean metadata但没有帮助。我也已经运行了dnf update virtualbox,它告诉我安装了最新版本。任何想法如何解决这个问题?
注意:我也试过跑步,dnf update kmod-VirtualBox但没有任何反应,它告诉我诸如“无事可做”之类的信息。
这种情况不时发生,因为当前的 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。