当前位置: 首页>>技术教程>>正文


在AWS服务器上升级Ubuntu时,“可用新版本的/boot/grub/menu.lst”

, ,

问题描述

我只是尝试在AWS EC2 Ubuntu 13.10服务器上执行sudo do_release_upgrade以升级到14.04。一切顺利,直到收到以下消息:

A new version of /boot/grub/menu.lst is available, but the version installed  currently has been locally modified.    What would you like to do about menu.lst?            * install the package maintainer's version    * keep the local version currently installed    * show the differences between the versions    * show a side-by-side difference between the versions    * show a 3-way difference between available versions    * do a 3-way merge between available versions (experimental)    * start a new shell to examine the situation    <Ok> 

我当然没有修改menu.lst,所以我假设本地修改是Amazon所做的。我要点击“保留当前安装的本地版本”选项,并希望取得最好的效果。

但是,为什么我会收到此消息,这是处理消息的正确方法吗?

最佳回答

此问题可能是由一系列不同的问题引起的,因此没有一个解决方案。这些步骤应适用于EC2。

资源:

此问题是由Grub旧配置中的本地和远程更改冲突引起的。 Grub旧版和Grub2使用不同的配置位置:

  • Grub遗留物:/boot/grub/menu.lst

  • Grub2:/boot/grub/grub.cfg

原因:

您可能正在使用Amazon EBS-Backed AMI。实例从预构建的基础映像(快照)构建其根文件系统。 grub配置写在快照中,但是未正确清除UCF注册表。这意味着您有一个快照,认为menu.lst配置已在本地修改。可以在这里找到更多信息:https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685

为什么在这里解释ubuntu为什么将UCF用于grub:https://askubuntu.com/a/147079

解决方案:

一种有效的通用解决方案是删除menu.list并重新配置它。这样可以确保ucf注册表项和配置文件解析为同一哈希。

#Remove the menu.lst config.

sudo rm /boot/grub/menu.lst
# Generate a new configuration file. 
sudo update-grub-legacy-ec2 -y

#Upgrade the configuration
sudo apt-get dist-upgrade -qq --force-yes

第二种解决方案是修改UCF配置以自动接受维护者更改

unset UCF_FORCE_CONFFOLD
export UCF_FORCE_CONFFNEW=YES
ucf --purge /var/run/grub/menu.lst
sudo apt-get dist-upgrade -qq --force-yes

免责声明:

这个问题非常广泛,用例将影响所需的解决方案。如果可能,强烈建议升级到grub2。可以在不修改系统文件的情况下配置Grub2。

在ubuntu跟踪器中还提供了许多不同的解决方案并打开了问题报告。我希望链接到所有这些人,但没有代表。

祝好运 :)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10748.html,未经允许,请勿转载。