设置:
- 具有热插拔单 SSD 的多台离线计算机(包含操作系统和数据的单 SSD)
- 以 UEFI 模式安装的 Ubuntu 20.04.1(单操作系统,整个磁盘)
问题:迁移到 Ubuntu 20.04 LTS 后,在完全关闭 PC、取出 SSD(包含操作系统)并将其移动到另一台(完全相同的硬件)PC 后,我面临 grub 救援已成为常见事件。这在 16.04 LTS(非 UEFI)中没有发生,我可以正常更换 SSD。
症状:
- 移动 SSD 后(100% 确定正确关闭),我在原始 PC 和新 PC 中都面临 grub 窗口(处于救援模式)(即操作系统已损坏)
- 即使在手动模式下设置 grub (set root=(hd0,gpt2); linux /boot/vm...) 并调用“boot”,也会将我带到行首带有 (initramfs) 的命令行环境它建议在根分区上运行 fsck 因为校验和是错误的!
- fsck 几乎使所有扇区无效,并且分区变得不可用。
建议:
- 我唯一能想到的(虽然不一定是真的)是在 Ubuntu 20.04 中将 LZ4 用于 initramfs。或者它可能是 UEFI 模式的 grub 问题。由于那里的大多数人通常不会在不同的 PC 之间移动他们的操作系统磁盘,这可能是一个罕见的问题。
笔记:
- 我不会对这些磁盘做任何奇怪的事情。由于我的所有 Windows 设置(以及以前的 Ubuntu 16.04 LTS 设置)在这些替换过程中都可以正常工作。
外部驱动器引导应从外部驱动器上的 ESP - efi 系统分区作为驱动器条目引导。Ubuntu 的 Ubiquity 安装程序也会在内部驱动器的 ESP 上为外部驱动器创建一个标准引导条目“ubuntu”,然后如果缺少外部驱动器,您将无法引导默认条目。
如果驱动器被移除,UEFI 会忘记特定的内部 UEFI 引导条目或将其重置。在删除驱动器之前和之后查看 ubuntu 条目。
UEFI 具有使用 /EFI/Boot/bootx64.efi 的后备或硬盘驱动器条目,它应该允许您启动。通常 bootx64.efi 只是 /EFI/ubuntu/shimx64.efi 的副本。一些 UEFI 似乎会自动查找 Windows 条目并重新创建它,但不是任何其他系统。外部驱动器都从与内部驱动器上的回退相同类型的条目启动(与用于 Ubuntu 或 Windows 闪存驱动器安装程序的相同)。
如果您在 BIOS 模式下启动,只需在 UEFI/BIOS 中选择驱动器即可启动。您应该能够对 UEFI 执行相同操作,但选择驱动器,而不是现在不正确的“ubuntu”条目。
UEFI 模式下的驱动器启动将使用 /EFI/Boot/bootx64.efi 中的备用启动项。Windows 使 bootx64.efi 成为 Windows .efi 启动文件的副本,Ubuntu 安装使其成为 shimx64.efi 的副本。所以你应该可以直接启动驱动器。
您需要将默认启动设置为内部驱动器的 ESP 条目。然后必须手动从 UEFI 中选择每个外部驱动器的条目。
您还可以在 grub 中执行配置文件类型条目,以将其他驱动器的 ESP 作为引导条目。或特定的引导条目。
如何添加 GRUB2 菜单项以在 USB 驱动器上引导安装的 Ubuntu?