永久解决“GRUB 先前安装到不再存在的磁盘”

Mel*_*ius 7 upgrade grub2 disk-management

我有一个 Ubuntu 16.04 虚拟机(本地,无云),它是作为另一台计算机的克隆创建的。每次使用 升级 GRUB 软件包时apt upgrade,我都会收到以下消息:1

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

然后它要求选择一个安装设备

我能够成功完成 GRUB 升级,但在下一次 GRUB 升级期间再次出现该消息,尽管磁盘在升级之间没有改变。

如何将 GRUB 配置“重置”为当前配置,使其不再询问?

查过类似的问题

我并不想沉默升级的消息为类似的问题(https://serverfault.com/questions/662624/how-to-avoid-grub-errors-after-runing-apt-get-upgrade-ubunut我如何恰当-get -y dist-upgrade 没有 grub 配置提示?)建议。我想解决这个关于 GRUB 升级的特殊问题。

从命令最upvoted答案上ServerFault类似的问题无法在我的情况下应用,我没有提到的文件/boot/grub/menu.lstupdate-grub-legacy-ec2我的机器上。

我的配置

我尝试运行oldfred 建议的命令:

$ sudo debconf-show grub-pc
  grub-pc/install_devices_failed_upgrade: true
  grub-pc/mixed_legacy_and_grub2: true
  grub-pc/install_devices_failed: false
  grub-pc/hidden_timeout: false
  grub2/update_nvram: true
  grub-pc/timeout: 5
  grub-pc/install_devices_empty: false
* grub-pc/install_devices_disks_changed: /dev/disk/by-id/ata-VBOX_HARDDISK_VBd7a628c1-923a4727
  grub2/kfreebsd_cmdline:
* grub2/linux_cmdline: consoleblank=0
  grub2/kfreebsd_cmdline_default: quiet splash
  grub-pc/disk_description:
  grub-pc/postrm_purge_boot_grub: false
  grub-pc/partition_description:
* grub-pc/install_devices: /dev/disk/by-id/ata-VBOX_HARDDISK_VBd7a628c1-923a4727
  grub-pc/chainload_from_menu.lst: true
  grub2/force_efi_extra_removable: false
  grub-pc/kopt_extracted: false
* grub2/linux_cmdline_default:
  grub2/device_map_regenerated:
Run Code Online (Sandbox Code Playgroud)

似乎匹配

$ sudo lshw -C Disk | grep serial
       serial: VBd7a628c1-923a4727
Run Code Online (Sandbox Code Playgroud)

grub-probe -t device /boot/grub返回克隆主机的根设备的名称。我尝试了建议的命令,sudo dpkg-reconfigure grub-pc但它没有更新sudo grub-probe -t device /boot/grub. 如何解决这个问题?


1我收到本地化版本的消息,粘贴的英文版本是从https://samrueby.com/2014/09/02/updating-grub-in-ubuntu-amazon-ec2-instance/复制的。

小智 0

如果我是你,我会完全重新安装 grub,检查磁盘的 UUID。但是您应该在 Linux 实例之外执行此操作,即在 USB 密钥上运行实时发行版,然后将分区安装到实时文件系统上,然后重新安装 GRUB。

看看这里: https: //help.ubuntu.com/community/Grub2/Installing


小智 -1

我在运行 Ubuntu 20.04.1 的系统上收到相同的错误消息。就我而言,/boot/efi 位于其自己的分区上。以下过程解决了该问题: 在卸载 /boot/efi之前。 apt-get update

umount /boot/efi
apt-get upgrade
mount /boot/efi
Run Code Online (Sandbox Code Playgroud)