为什么在内核更新后需要为virtualbox重新加载内核模块?


10

在Ubuntu 12.10中最后一次内核升级后,我不得不手动为Virtualbox重新加载两个内核模块。

modprobe vboxdrvmodprobe vboxnetflt

我对系统了解不足,无法说这是一个错误还是应该是这样,但这很不方便。作为Ubuntu的新用户,找出必须要做的工作相当耗时。

这是一个自动更新,要求我完成后重新启动。重新引导后,虚拟机将无法运行,直到我重新加载模块。

所以我的问题是:这正常吗?它会与其他软件包一起发生,还是仅与Virtualbox一起发生?更新程序是否应该自动执行此操作?我应该提交错误报告吗?如果这样,应该向谁报告?


除非使用某种工具热修补当前正在运行的内核,否则应在内核升级后重新启动。否则,您将使用旧内核。重新启动将负责模块的重新加载。
哈维尔·里维拉

Answers:


2

VirtualBox主机模块是根据计算机上的源代码构建的。一个内核的模块不一定会在另一个内核上工作(或正常工作)。它们通常在内核升级后重新编译。

当您安装新内核版本时,旧内核仍在运行。正如Javier Rivera所说,您必须重新引导才能使用新内核。

因此,如果您的目标是在新内核上运行VirtualBox,需要重新引导;模块将在您执行操作时加载(必要时从源代码中重建)。

但是,如果您的目标是将旧模块与旧内核一起使用,则可以手动加载它们modprobe(就像过去一样)。

如果您认为是VirtualBox模块在重新启动之前无法为正在运行的内核工作的错误,则可以进行错误报告。如果您使用的是Ubuntu正式提供的VirtualBox版本(而不是Oracle软件来源的版本),则建议针对下游VirtualBox(即针对Ubuntu的VirtualBox)进行报告。请先仔细阅读本指南。此问题中,还有关于错误报告的有用信息。

如果你能生产这种在VirtualBox中的上游版本(尤其是如果它发生在非Ubuntu的系统,但我不认为这是必要的在这里),我建议报告它(或者报告它)上游(第一搜索)。

我建议不要立即接受此答案;也许有人可以更好地解释为什么卸载模块。


2

如果您必须在更新后且在加载新内核模块之前运行“ /etc/init.d/vboxdrv setup”,请确保正确安装和更新了dkms。这是在更新内核后重新启动时重新编译模块的组件,完成后还应该加载模块。那是唯一让我的测试失败的情况。如果不是这种情况,我会接受Eliah的建议并提交错误报告。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.