如何避免运行 apt-get upgrade 后出现 GRUB 错误 - Ubuntu

如何避免运行 apt-get upgrade 后出现 GRUB 错误 - Ubuntu

我在 EC2 上运行 ubuntu 14.04。

运行后apt-get upgrade,屏幕提示我重新安装 GRUB 引导加载程序

GRUB 引导加载程序之前安装在不再存在的磁盘上,或者由于某种原因其唯一标识符已更改。确保安装的 GRUB 核心映像与 GRUB 模块和 grub.cfg 保持同步非常重要。请再次检查以确保 GRUB 已写入适当的引导设备。

  • 我怎么知道我应该选择哪个设备?

  • 如果我的机器上安装了一些额外的 EBS,我也应该选择它们吗?

  • 我可以在升级过程中避免这个提示,或者为命令提供一些默认值吗?

以下提示是

/boot/grub/menu.lst 有新版本可用,但当前安装的版本已被本地修改。

  1. 安装软件包维护者的版本
  2. 保留当前安装的本地版本
  3. 显示版本之间的差异
  4. 并排显示版本之间的差异
  5. 显示可用版本之间的三种差异
  6. 在可用版本之间进行三向合并(实验性)
  7. 启动一个新的 shell 来检查情况

这里有同样的问题:

  • 我怎么知道我应该选择哪一个?

  • 我可以在升级过程中避免这个提示,或者为命令提供一些默认值吗?

答案1

目前有一个针对此问题的错误位于此处并且它也存在于 12.02 LTS 中看到这里。Anders Hall 在错误报告底部列出的步骤适用于 14.04 LTS 64 位 (HVM) AMI(US-EAST-1 中的 ami-d05e75b8):

$ sudo apt-get update
$ sudo rm /boot/grub/menu.lst
$ sudo update-grub-legacy-ec2 -y
$ sudo apt-get dist-upgrade -qq --force-yes
$ sudo reboot

重启后,14.04.2 LTS 升级到 14.04.3 LTS 并sudo apt-get update && sudo apt-get upgrade返回 0 个新软件包。

答案2

尽管我从未对 menu.lst 文件进行任何自定义更改,但我自己也遇到过几次这种情况。我不知道为什么会发生这种情况,但我选择比较该文件,发现更改的主要是注释和对新版本内核的引用。有一个未决问题在 apt 错误跟踪器中了解此问题。

只要您没有对旧版本进行任何手动更改,就可以使用新版本覆盖旧版本(选项 1)。为了安全起见,我建议您在更新之前创建实例的备份 AMI。

相关内容