我当前的 SSD 驱动器似乎出现故障,但我需要安装它才能完成当前的工作,所以我不想立即更换它。
我的计划如下:
通过 USB 连接新的 SSD(使用类似这样的设备https://www.amazon.com/gp/product/B00MVRS38G/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1) 并在该驱动器上创建一个新的安装。 (它可能是 Ubuntu 的某个版本。)
从该 USB 连接启动以设置我的新安装。但是当我需要返回到旧安装时,旧驱动器仍将保持连接,因此我应该能够从该驱动器启动。
当我按照我想要的方式完成新安装时,从内部 SATA 连接中取出旧 SSD,并将其替换为新 SSD。
从谷歌搜索来看,似乎 1. 和 2. 都是标准的,不会造成任何问题。(但如果您预见到任何问题,请纠正我。)
我的问题主要关于 3.——这会产生什么问题吗?
答案1
安装不是问题,问题在于 UEFI 机器上的引导加载程序。传统机器应该没有问题,grub 将根据要求安装到外部驱动器,磁盘可能会移动到内部位置。
安装到外部磁盘时有几个错误您应该注意:
* 1173457 - Ubuntu 安装程序对 USB UEFI 安装使用了错误的引导加载程序位置
* 1229488 - 不支持将 EFI 安装到可移动媒体(不需要的 nvram 将 shimx64.efi 更改为 grubx64.efi,导致启用安全启动的机器无法启动。
为 UEFI 安装做好准备,并在外部 SSD 上放置一个 EFI 分区。无论您在安装期间在 grub 位置输入什么,此外部分区都将被忽略。同样在准备过程中,复制 /EFI/ubuntu/grub.cfg 文件(如 grub.cfg.orig)。此文件使用内部磁盘根目录的 UUID,并将被错误地替换为外部磁盘根目录的 UUID。在安装到外部磁盘后,您必须手动将内部 EFI 文件复制到空的外部 EFI(错误 1173457)。这些文件对于外部设备是正确的,但主机留下了一个存根 /EFI/ubuntu/grub.cfg,它具有外部磁盘根目录的 UUID(用于维护的 grub.cfg 文件)。只要外部磁盘存在,它就会启动,但我建议只需将 grub.cfg.orig 文件复制回 grub.cfg(或将 UUID 编辑回原始文件)。
在外部磁盘的 EFI 上,检查是否有 /EFI/ubuntu/grubx64.efi 和 /EFI/ubuntu/shimx64.efi(当磁盘移至内部位置时,这些将是正常的引导加载程序)。还要检查 /EFI/Boot/bootx64.efi 是否存在并且是 shimx64.efi 的副本。/EFI/Boot/grubx64.efi 也应该存在。当安全启动被禁用时,您可能只使用 grubx64.efi 作为文件 bootx64.efi,但使用 shimx64.efi 作为 bootx64.efi 在任何情况下都应该有效。当外部磁盘在外部机箱中仍然是“可移动”磁盘时,将使用 /EFI/Boot 位置引导加载程序。当选择外部磁盘作为启动设备时,它应该可以启动。
当外部磁盘移至内部位置时,可能会出现启动问题。nvram 可能有一些旧的磁盘标识,因此可能需要新的启动条目(可以使用 efibootmgr 创建新条目)。另一个可能的错误是将 shimx64.efi 启动条目更改为 grubx64.efi,这在启用安全启动的情况下不起作用。也许启动实际上会通过回退机制起作用。当/如果旧的 nvram 条目失败时,可能会尝试 /EFI/Boot 条目。即使成功,我建议您使用 efibootmgr 创建常规 /EFI/ubuntu/shimx64.efi(或 grubx64.efi)条目。
无效分区表可能是在无法使用 GPT 启动的旧机器上使用 GPT,或者安装到设备而不是分区,从而使分区表的位置实际上成为文件系统的一部分。您使用了什么分区,它看起来是什么样的(当在外部机箱中时)。