为什么以及何时快速格式化为 FAT32 会将不同的结构写入 USB 闪存驱动器上的第 0 扇区?

为什么以及何时快速格式化为 FAT32 会将不同的结构写入 USB 闪存驱动器上的第 0 扇区?

介绍:为了一个研究项目,我正在尝试将引导加载程序写入 USB 闪存驱动器。经过一些实验,我成功做到了这一点。我想知道如何重现这一点。

我做了什么:最近我买了一个新的 USB 闪存盘,并在 HxD(Windows 的十六进制编辑器)中打开了物理磁盘。它已经格式化为 FAT32,但扇区 0 的结构完全不同比本网页上描述的要多

在此网页上,可以清楚地看到有两个字符串:MSDOS5.0FAT32。它们都不存在于扇区 0 中。

在尝试以默认方式将 Windows 中的驱动器快速格式化为 FAT32 后,扇区 0 的结构仍然与上面描述的结构不同。当我使用 Windows 版 mkisofs 并使用 PowerISO 将 ISO 写入 USB 闪存驱动器后再次尝试快速格式化时,扇区 0 的结构最终变为上面描述的结构。

我的问题:为什么会这样?我该如何在新的 USB 闪存驱动器上重现这种情况?

编辑:我需要该部门具有与我的项目网页上描述相同的结构。

答案1

我正在尝试将引导加载程序写入 USB 设备。

“USB 设备”含糊不清。有 USB 视频和音频设备以及各种存储设备。“USB 驱动器”可能是指 USB 闪存驱动器,而不是 USB HDD(其第一个扇区始终为 MBR,而不是文件系统引导扇区)。

它已被格式化为 FAT32,但扇区 0 的结构与此网页上描述的完全不同

闪存驱动器似乎有一个带有分区表(在扇区 0 中)的 MBR(主引导记录),并且 FAT 文件系统位于主分区中。
正如该网页所提到的,这些是引导扇区的扇区转储,它们安装在文件系统的第一个扇区中,而文件系统通常位于分区中(或软盘的第一个扇区)。

我怎样才能在新的 USB 驱动器上重现这一现象?

我可以通过以下方式在 USB 闪存驱动器的 0 扇区中安装文件系统引导扇区

  1. 将扇区零中的任何 MBR 清零。在 Linux 系统上,
    sudo dd if=/dev/zero of=/dev/sdX count=64
    这可能是关键步骤,特别是如果已经有 MBR 时。我不知道如何在 Windows 上执行此步骤。

  2. 使用 Windows 格式化 USB 闪存驱动器(无论如何,Windows 都会坚持要求您先格式化它才能使用它)。我使用 Win7 对驱动器进行“快速格式化”,以获得以下结果。

USB 闪存驱动器上生成的扇区 0 与您想要的类似(即,它不是 MBR 并且没有分区表)。 在此处输入图片描述

附录

我不确定我是否正确理解了 MBR 和文件系统引导扇区之间的区别

主引导记录 (MBR) 安装在 PC 分区大容量存储设备的第一个扇区中。扇区的末尾是分区表,它将设备划分为较小的逻辑设备。一个分区将被标记为“活动”,MBR 中的引导代码将加载并执行该“活动”分区的第一个扇区。

可启动分区的第一个扇区(或软盘的第一个扇区)包含引导加载程序。安装在该分区中的文件系统将在第一个扇区中具有适当的代码,以便在安装操作系统时继续启动过程。
当没有安装操作系统或要加载的下一个引导程序(例如 BOOTMGR)时,引导加载程序会输出文本,表明这不是可启动设备/分区(例如“移除磁盘或其他媒体。磁盘错误。按任意键重新启动。”)

换句话说,您希望 USB 闪存驱动器类似于超大容量软盘,而不是(分区的)硬盘。
请注意文件系统限制,例如,最便携的文件系统 FAT32 限制为 32GB。

仅供参考,我意识到 USB 闪存驱动器和 SD 卡存在这种怪癖,因为省略了 MBR 和分区表,导致此类存储介质在某些 Linux 嵌入式设备(需要分区)上无法读取。关于为嵌入式 Linux 初始化可启动 VFAT 媒体的教程通常会指定 Linux 上的分区和格式设置,以便避免这是 Windows 的怪癖。

相关内容