假设我有一个 128GB 的 USB 驱动器,我想用它做多种事情。我想在上面安装 Ventoy,这样我就可以将 ISO 文件拖放到上面,并轻松安装任何操作系统。除此之外,我还想要一个小型 FAT32 分区,用于需要 FAT32 分区的设备上固件更新等操作。
Ventoy 自动创建两个分区:32MB FAT32 EFI 分区和total_usb_size - 32MB
较大的 exFAT 分区(剩下的)。
根据他们的文档,Ventoy 可以读取驱动器上的所有分区,因此我应该能够缩小该 exFAT 分区并创建一个新的 FAT32 分区。但是,我最担心的是:设备首先从哪个分区读取?有标准吗?
我有很多可以更新固件的设备,例如割草机、3D 打印机和 PC 主板。它们需要 FAT32 分区。但是,它们都没有说明如果我有多个分区会发生什么。如果我像这样进行分区:
是否有可能每个设备都只读取第一个分区而忽略其余分区?或者每个设备可以以不同的方式实现“分区读取”?有没有更好的方法来创建“一个 USB 驱动器来统治它们”?
答案1
这方面没有标准,因为一般来说,设备固件升级没有真正的标准。
但是,分区总是按照某种特定顺序存储,这通常与磁盘顺序相对应(例如,您的“FAT32, 16GB”分区将存储在第一个插槽中),分区工具会尝试保持该顺序。fdisk
如果需要,可以使用 Linux 工具对条目进行排序。
因此,可以合理地假设设备将查看第一个位置在 MBR 分区表中(尤其是当它是大多数“普通” USB 记忆棒将使用的唯一插槽时)。
例外的是,如果你以常规方式更新你的电脑主板(使用当前固件的更新应用程序,并有一个正常工作的显示屏),它可能会检测到全部分区并提供选择,因为更新程序通常只是一个常规的 UEFI 应用程序,它依赖于 UEFI 内核提供的文件访问功能。(此时它已经扫描了所有磁盘以查找任何可启动的内容——这是UEFI 规范所涵盖)。
答案2
如果“设备读取”的意思是“计算机启动”,那么该问题不适用于 EFI 启动。
EFI 分区由存储在磁盘分区表中的标准分区 ID 标识。
EFI BIOS 将扫描磁盘,搜索该分区 ID。一旦找到,它将从此分区启动启动过程。该分区可以位于磁盘上的任何位置,因为在您的布局中,EFI 启动分区位于结尾磁盘。
因此,您可以根据需要添加任意数量的分区 - 启动将始终从 EFI 分区开始。
您可以将引导加载程序存储在 EFI 分区中,该分区将从其被编程使用的任何其他分区继续引导。
对于非计算机设备,没有规则。一切都取决于固件的编程方式。
我遇到过:
- 设备拒绝接受格式、分区表和文件系统不完全一致的磁盘
- 仅读取第一个分区的设备
- 仅理解 FAT32 的设备
- 等等
我认为不可能有一个适合所有情况的 USB 磁盘。例如,您可以有多个分区,使用不同的格式进行格式化,但您可能需要某些设备移动其分区以将其作为第一个分区。
这完全取决于您希望支持的设备及其特性。