如何将 UEFI 可启动 USB 磁盘克隆到另一个磁盘(可能大小不同)

如何将 UEFI 可启动 USB 磁盘克隆到另一个磁盘(可能大小不同)

如何克隆现有的 UEFI 可启动磁盘,以便副本完全相同?

我尝试创建新的可启动磁盘,使用相同的过程、相同的标签名称以及 GPT 分区的相同 UUID 和 PARTUUID 标签,但在我的笔记本电脑的启动菜单中,它显示了我曾经启动过的每个启动设备,作为单独的条目。

我不能简单地将一个磁盘映像复制到另一个磁盘上,因为 USB 磁盘的大小不同。

如何将一张可启动磁盘上的所有内容克隆到另一张可启动磁盘上?

UEFI 启动使用的标识符存储在哪里?

为什么 UEFI 设计如此愚蠢,以至于我的启动菜单会记住我曾经启动过的每个设备?我怎样才能删除该列表?

答案1

从您所写的内容来看,您错过了最重要的部分:

UEFI 将搜索默认命名的引导加载程序EFI/BOOT/BOOTX64.EFI (不区分大小写)在 EFI 分区上。磁盘必须使用 GPT 分区表进行分区,且 EFI 分区具有类型UUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B。 EFI 格式为 FAT32。

您可以使用简单的分区工具cfdisk来设置分区类型,或者sfdisk如果您感觉特别勇敢的话。用于mkfs.vfat格式化它。 EFI 分区的 UUID 和 PARTUUID 在启动时很少使用,但它们可能会在您的系统中用于/etc/fstab挂载 EFI 分区。

EFI 分区内的其他文件名也是可能的,但对于可启动 USB 来说并不实用,因为您需要手动通知固件有关它们的信息。

我怀疑您只是忘记设置分区类型,或者无意中使用错误的 FS 类型进行格式化。


与传统启动不同,UEFI 可启动设备更容易复制,因为磁盘上没有隐藏的程序代码,它全部位于可安装文件系统的文件中。

唯一的技巧是,与传统引导系统一样,您可能需要保留 UUID 和 PARTUUID,以便 linux 知道要在哪里安装什么。

因此,将磁盘克隆到较小的磁盘上可以非常简单:

  • 对新磁盘进行分区
  • 使用相同的 FS 类型格式化分区
  • 复制文件
  • (重新)设置分区上的 UUID 和 PARTUUID

为什么 UEFI 设计如此愚蠢,以至于我的启动菜单会记住我曾经启动过的每个设备?我怎样才能删除该列表?

这不是 UEFI 规范的一部分,并且似乎是您的特定固件的错误。

相关内容