每次内核更新后,GRUB 配置文件都会设置为旧的 /root 分区

每次内核更新后,GRUB 配置文件都会设置为旧的 /root 分区

语境

我有一台带有 SATA ( sdb/hd1) 插槽和 m.2 ( sda/hd0) 插槽的笔记本电脑。我在 hd0 插槽上有一个 SSD,带有启动和 EFI 分区,在 hd1 上有一个 HHD,上面有//home和分区。swap

我最近买了一个更大的 SSD 来替换旧的。更换时,我对SSD上的所有分区以及/rootHDD上的分区进行了备份(使用clonezilla);然后我恢复了新驱动器上的所有这些分区。我还将旧/分区保留在硬盘上,以防出现问题。

我在恢复后做了这些更改:

  • 在该文件中,我更改了引用旧分区 ( ) 或其 UUID ( )/boot/grub.cfg的所有行以引用新分区。/root/dev/sdxnUUID=[old partition's uuid]
  • /etc/fstab(在新分区上),我还将旧分区的所有 UUID 更改为新分区。

问题

这些更改使我能够在新 SSD 上正确启动,但每次更新后,文件/boot/grub.cfg都会返回引用旧分区。我猜测仍然有一些负责生成 grub 配置的文件仍然具有旧的分区信息,但我无法找到它。

答案1

在 Debian/Ubuntu 上,/boot/grub/grub.cfg通常由 自动生成,并在每次内核更新时grub-mkconfig调用。update-grub

grub-mkconfig从 获取其配置/etc/default/grub,并使用/etc/grub.d/目录中的脚本来构建/boot/grub/grub.cfg文件。您没有提到检查这些位置,所以您应该这样做。这两个地方都可能包含自定义内容。

在 UEFI 系统上,还包含/boot/efi/EFI/ubuntu/grub.cfg包含目录的文件系统的 UUID /boot/grub(无论是根文件系统还是单独的/boot文件系统)。该文件只是指示grubx64.efi查找该文件系统并从那里读取“真正的”GRUB 配置文件。

相关内容