今天我将 VM 14.10 升级到了 15.04。由于它是虚拟机(通过 VirtualBox),因此我需要安装客户机附加组件。但是,安装失败,提示(在/var/log/vboxadd-install.log
):
错误!无法找到内核 3.16.0-31-generic 的内核头文件。
因此,我尝试以通常的方式安装它并得到:
软件包 linux-headers-3.16.0-31-generic 不可用,但另一个软件包引用了它。这可能意味着该软件包缺失、已被淘汰或只能从其他来源获得[.]
安装了,它应该提供正确的标题,但我感到很困惑。如果过时,linux-headers-generic
我预料到会出现这种错误。但是……确实产生了:3.16.0-31
dpkg -l | grep generic
...
ii linux-headers-3.19.0-17-通用...
...
啊哈!所以看起来客户添加正在尝试使用过时的内核。也许他们使用了uname
。所以我尝试了一下uname -r
,得到了:
3.16.0-31-通用
我的猜测是,客户添加功能正在用来uname
获取所需的内核头版本,但uname
无论出于什么原因,它都会给出错误的值。 问:如果我的分析正确,我该如何修复?如果不正确,问题出在哪里?
编辑:环顾四周后,似乎这意味着正在运行的内核实际上是3.16.0-31
,而3.19.0-17
仅仅是已安装我sudo update-grub
确认了 3.19 内核是第 0 个元素,/boot/grub/menu.lst
并重新启动了,但似乎没有任何改变。
编辑:虽然/boot/grub/menu.lst
是正确的(第 0 个条目是 3.19),但在重新启动并按住Shift以获取手动菜单时,我不是查看3.19内核,最上面的条目是3.16内核。
答案1
看起来从 14.10 升级到 15.04 的过程存在错误。内核无法正确安装。可以通过运行以下命令修复此问题:
sudo apt-get install linux-generic
这将拉取 linux-image-generic 和 linux-headers-generic。
这些元包始终指向最新的内核映像和标头。
这不是第一个提出此类问题的问题。
答案2
修复了我的问题:
uname -r
3.13.0-30-generic
sudo apt-get update
sudo apt-get dist-upgrade
reboot
uname -r
3.13.0-30-generic
??
sudo apt-get install linux-image-generic
sudo reboot
uname -r
3.19.0-18-generic
其次是:
sudo /etc/init.d/vboxdrv setup