如果我将一个可启动 USB 驱动器复制到另一个 USB,它会创建一个重复的可启动驱动器吗?

zar*_*zar 41 usb boot file-transfer bootable-media partitioning

我认为这是一个愚蠢的问题,但用 Google 搜索似乎明甚至不可能将可启动驱动器上的数据复制/粘贴到另一个 USB?但即使我们能够复制它,为什么它不起作用呢?(即创建重复的可启动驱动器)

K7A*_*AAY 61

简单地复制文件不会成为可启动驱动器。不仅是 USB 闪存驱动器上的文件使其可启动,还有分区表配置、有关驱动器内容组织的元数据,这些元数据告诉 PC 是否可启动,以及它是MBR 还是 GPT

正如cyberciti.biz所述

每个磁盘和分区上都有某种签名和元数据/魔法字符串。操作系统用于在系统上配置磁盘或附加驱动程序和安装磁盘的元数据。

但是,您可以使用多种工具克隆闪存驱动器,例如ddEaseUS Todo Backup以及优秀的开源ClonezillaRufus。(感谢Alex关于 dd 和 Rufus 的提醒)。

甚至还有自动复制闪存驱动器的电子设备

  • 实际上你甚至不需要 `dd`:简单的 `cp` 就可以完成这项工作——只要确保在设备节点上使用它而不是文件系统内容。 (16认同)

phu*_*clv 22

复制只处理格式化分区内的文件。您将无法执行启动过程所需的特殊操作,例如设置启动标志、编写启动加载程序,有时甚至无法将普通文件复制到分区中的正确位置(读取:扇区)并设置文件的属性/权限。除非您很幸运地拥有这些东西,因为之前创建了启动盘、将启动加载程序写入 MBR 的格式化工具等,否则您需要执行更多步骤来使磁盘可启动


特别是在BIOS 模式下启动时,BIOS 会查找第一个扇区( MBR ) 以查看是否存在有效的启动签名 0xAA55。如果是,则加载该扇区并将控制权转移到 MBR 中的引导加载程序。MBR中描述了分区配置,因此不能说谎的分区里面,是不是你可以用普通工具复制。

此外,由于 MBR 太小而无用,大多数现代引导加载程序将引导过程分为多个阶段,MBR 中的引导代码加载其下一阶段。进一步的内部阶段通常再次放置在分区之外的区域中。有些人可能会把它放在EBR 中,但 grub 通常将它的第二阶段放在第一个分区和 MBR 之间的空白区域,称为 post-MBR 间隙。这就是为什么如果分区没有正确对齐,grub 就没有空间放置其引导代码,从而导致嵌入错误

许多引导加载程序如LILO或旧的 Windows/DOS 引导加载程序也在MBR 中硬编码信息,如下一阶段或系统文件的位置。它们不是通过读取分区数据来工作,而是读取一些硬编码的扇区,因为解析文件系统需要太多的代码,而这些代码很难被压缩到像 MBR 或 post-MBR 间隙这样的微小空间中。即使grub 也支持这种硬编码,尽管它很脆弱,因此不推荐。这意味着某些系统文件必须在扇区方面的确切位置,您也无法通过普通副本实现。这就是您看到“不可移动的系统文件”的原因 在运行 Windows 碎片整理程序或缩小文件系统时,这有时实际上并不正确,因为 Windows 太害怕移动这些文件,即使现代引导加载程序更大、更智能并且不关心这些事情。

毕竟,您还需要将引导分区设置为活动分区,以便引导加载程序知道要引导的内容。这必须通过分区工具或手动十六进制编辑来完成,因为它也放在分区区域之外。


UEFI 中,事情要容易得多。它了解 FAT 文件系统(以及更多非标准实现上的文件系统),因此引导文件存储在EFI 系统分区中,即 ESP。UEFI 在 ESP 中加载 *.efi 应用程序,然后加载操作系统。

UEFI 固件支持从可移动存储设备(如 USB 闪存驱动器)启动。为此,需要使用 FAT12、FAT16 或 FAT32 文件系统格式化可移动设备,而需要根据标准 ESP 文件层次结构存储引导加载程序,或者通过提供引导加载程序到系统的完整路径引导管理器。

所以基本上你只需要将 *.efi 文件复制到 ESP 并将系统文件放在正确的文件夹中。但是,仍然存在一个小问题,因为包含 *.efi 文件的 FAT 分区必须在分区外的MBR 或 GPT 表中标记为 ESP,这是无法通过像上面那样复制来完成的。特别是分区类型必须从MBR 中的0Ch/0Bh/whatever更改为 EFh以及 GPT 中的C12A7328-F81F-11D2-BA4B-00A0C93EC93B,因为 ESP 实际上不是 FAT12/16/32 而是基于FAT 文件系统系列


还有很多其他的分区方案,比如 BSD 磁盘标签或 APM,需要进行不同的修改才能启动。或者 USB 记忆棒可能已经在没有分区表的情况下进行了格式化(AFAIK Windows 默认执行此操作),因此使其可启动会有所不同。但同样的限制适用:您需要修改非分区区域!!!