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


37

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


2
您所说的“复制/粘贴”是什么意思?显然,您必须复制实际上使其成为可引导驱动器的部件(例如,引导加载程序等),但没有理由不起作用。
约尔格W¯¯米塔格

Answers:


56

简单地复制文件将无法启动驱动器。不仅使USB闪存驱动器可启动,而且分区表配置,有关驱动器内容组织的元数据会告诉PC是否可启动,以及它是否是MBR或GPT

正如cyberciti.biz所述

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

但是,您可以使用许多工具克隆闪存驱动器,例如ddEaseUS Todo Backup以及出色的开源ClonezillaRufus。(感谢Alex提醒您注意dd和Rufus)。

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


15
实际上,您甚至不需要dd:简单cp就可以完成工作-只需确保在设备节点上使用它而不是文件系统内容即可。
罗斯兰

嗯,这令人惊讶。或者可能不是。但至少对我来说。
约尔格W¯¯米塔格

1
假设目标位置不是源位置,则'cat <source> destination'将正常工作。
ysdx

@JoL您尚未看到Jörg的(现在已删除)评论。我的是对他的断言的答复,该断言cp只是复制设备节点。为避免混淆,我现在也删除了我的评论。
罗斯兰

21

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


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

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

许多引导加载程序(如LILO或旧的Windows / DOS引导加载程序)还在MBR中提供硬代码信息,例如下一阶段或系统文件的位置。它们不能通过读取分区数据来工作,而只能读取一些硬编码扇区,因为它们将花费太多代码来解析文件系统,而很难将其压缩到MBR或MBR后间隙之类的狭小空间中。甚至grub也支持这种硬编码。这意味着某些系统文件必须位于逐个扇区的确切位置,而普通副本也无法做到这一点。这就是您看到“不可移动的系统文件”的原因 在运行Windows碎片整理程序或缩小文件系统时,有时实际上并不正确,因为只是Windows害怕移动这些文件,即使现代的引导加载程序要聪明得多,也不在乎这些事情。

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


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

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

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


而且还有许多其他分区方案(例如BSD磁盘标签或APM)需要进行不同的修改才能启动。否则,USB记忆棒可能已经完全格式化而没有分区表(默认情况下,AFAIK Windows会这样做),因此使其可启动会有所不同。但是有同样的限制:您需要修改非分区区域


1
这是正确的答案。
玛格丽特·布鲁姆

是最彻底的答案,是的,但是我不认为这比公认的答案更正确。IMO可以用简单的方式回答简单的问题。
伊恩·肯普

@IanKemp可接受的答案的问题并不在于它是否简单(很好),而是技术上充其量是不明确的:)
Margaret Bloom

如果您将USB记忆棒卷标记为活动-使用Windows cmd行“ diskpart”实用程序或任何第三方分区管理器-通过复制Windows vista / 7/8/10 ISO映像的内容,该记忆棒将成为Windows引导棒;引导时没有ramdrive东西或没有进一步的安装。因此,很明显,在将操纵杆标记为活动后,您只需要在操纵杆上放置一个小的启动映像文件(我猜是Windows上的bootmgr和bootmgr.efi);无需复杂的工具。我希望在Linux上有一个简单的命令行过程,比Windows容易。
Red.Wave

3

传统上,BIOS引导需要一个特殊的不可见标记。这里有几个例子

  • 如果MBR分区(“硬盘”),则在分区表内
  • 如果是软盘/超级软盘(“ ZIP驱动器”),则基本上将整个驱动器格式化为没有分区表,然后在前几个字节内
  • 如果是CD,那么El Torito

在这种情况下,您不能简单地复制文件。由于缺少这些特殊标记,因此生成的驱动器将无法启动。

但是,UEFI引导是一种特殊,更智能的解决方案,它专门解决了这些问题。与往常一样,我建议阅读此博客文章,以简化UEFI入门。请特别注意后备启动部分。这也在这里进行了更详细的讨论。

您需要做的就是在固件将搜索的分区中特定路径中的文件。为获得最佳兼容性1,是的,这应该是GPT分区磁盘中标记为EFI系统分区的FAT32格式的分区。但是,大多数固件也会在MBR分区和未分区(超级软盘)磁盘上搜索(单个)分区。

这意味着UEFI引导真正需要的只是一个包含后备引导项的FAT32 1格式的单个分区。在x86_64架构上,这意味着您只需要一个\EFI\BOOT\BOOTx64.EFI文件。您可以将一个闪存驱动器复制到另一个闪存驱动器(包括该文件),然后一切正常。


该标准需要1个 FAT32和GPT。MBR和superfloppy不是,AFAIK,但是对它们的支持在台式机硬件中非常普遍。笔记本电脑更深奥一些;平板电脑值得一提,而Mac EFI是独一无二的。

2 UEFI标准需要FAT32支持。某些固件也可能支持NTFS(尽管远远不能保证),您实际上可以在FAT32 ESP中嵌入NTFS驱动程序。


0

这取决于您所说的“复制”。

复制并粘贴到操作系统的GUI中?不,那是行不通的-可启动USB所需的某些文件将被视为“隐藏” /不可见且无法复制。

有类型的副本工作。这通常称为“映像”新USB,以区别于“复制”其内容。最常用的方法是使用命令行工具,但是如果需要,可以使用图形选项。

那应该足以使您的搜索步入正轨!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.