在 MBR 分区表中,每个分区条目都包含一个单字节标识符,用于描述分区中包含的文件系统类型。FAT 系列文件系统已发布多个这样的 ID,每个 FAT 条目的宽度对应一个 ID。但奇怪的是,除了 FAT12 和扩展引导记录类型之外,每个 FAT 变体还具有用于文件系统“LBA”变体的附加 ID:
ID(非LBA) | ID(本地地址) | 文件系统 |
---|---|---|
0x01 |
没有任何 | FAT12 |
0x04 ,0x06 |
0x0e |
FAT16 |
0x0b |
0x0c |
FAT32 |
0x0f |
0x05 |
扩展引导记录 |
现代操作系统通常能够自行确定驱动器的寻址方式。即使在 LBA 寻址还很年轻并且磁盘通过 BIOS 访问的时候,也应该能够简单地探测适当的中断 13h 调用是否可用,如果不存在则返回到 CHS 版本。因此,额外的分区 ID 似乎是多余的。
那么这些额外的分区 ID 有什么意义呢?它们会以某种方式影响磁盘格式、文件系统驱动程序或引导代码吗?
答案1
它们的作用是停止使用(旧的)操作系统不要使用 LBA I/O尝试访问这些分区并失败。分区类型控制哪些操作系统尝试查看分区中的内容。使用 LBA I/O 的操作系统知道查看具有较新分区类型的分区。操作系统不会将分区视为应忽略的内容。
同样的情况也发生在无法处理大于 16MiB 和 32MiB 的分区的(旧)操作系统上。
进一步阅读
- 乔纳森·德·博因·波拉德(2006年)。”分区类型如何(不)暗示文件系统类型“。 如何确定卷的文件系统类型. 常见问题答案。
答案2
@JdeBP 的回答是正确的,但不完整。分区类型 ID 的主要目的确实是向无法正确访问分区的旧操作系统(主要指旧版本的 DOS)隐藏分区。有时这是因为磁盘驱动程序的任意大小限制;在其他情况下,这是因为 FAT 磁盘格式本身发生了变化(更宽的 FAT 条目,BPB 结构发生变化)。
完整表格(改编自知识库 Q69912)应如下所示:
类型 | DOS 版本 | 文件系统 | 寻址 | 大小限制 |
---|---|---|---|---|
0x01 |
≥2.0 | 脂肪≤12 | 中枢性高血压 | ≤ 16 MiB(32768 个扇区) |
0x04 |
≥ 3.0 | 脂肪≤16 | 中枢性高血压 | ≤ 32 MiB(65536 个扇区) |
0x05 |
≥3.30 | 乙烯-丙烯腈 | 中枢性高血压 | (≤8032.5MiB***) |
0x06 |
≥4.0 | 脂肪≤16 | 中枢性高血压 | (≤8032.5MiB***) |
0x0b |
≥ 7.10** | 脂肪≤32 | 中枢性高血压 | (≤8032.5MiB***) |
0x0c |
≥ 7.10** | 脂肪≤32 | 左心室射血分数 | (≤ 2 TiB***) |
0x0e |
≥ 7.0 * | 脂肪≤16 | 左心室射血分数 | (≤~2 GiB****) |
0x0f |
≥ 7.0 * | 乙烯-丙烯腈 | 左心室射血分数 | (≤ 2 GiB *****) |
如下读:如果全部最后三列中的约束得到满足(整个分区可以用给定的方案寻址,分区不大于并且 FAT 版本不晚于指定版本),然后一个可能使用第一列中的类型 ID 来将分区暴露给第二列中的 DOS 版本。相反则没有暗示:扇区数少于 32768 的 CHS 寻址 FAT12 分区很可能被标识为0x0c
;但这样做用处不大。
所有 DOS 版本都受到簇大小不能大于 64 个扇区 = 32768 字节的限制。如果这个假设不成立,那么最好的类型可能是0x07
。
DOS 7.0 及更高版本以另一种方式使用分区类型 ID:选择使用哪个 BIOS 服务来访问驱动器。顾名思义,CHS 寻址分区通过旧的 INT 0x13 服务(AH=0x02、AH=0x03)访问,而 LBA 寻址分区通过 INT 0x13 扩展(AH=0x42、AH=0x43)访问。CHS 驱动程序还存在某些怪癖和限制,但这些都不适用于 LBA 驱动程序:
- 如果 CHS 寻址分区从扇区 (0, 0, 1) 开始,即,它与 MBR 扇区重叠,则 DOS 会识别它,但无法访问它。
- CHS 寻址的扩展引导记录(类型
0x05
)必须与柱面边界对齐;否则 DOS 将错误计算分区的位置。 - CHS 寻址的扩展引导记录不得包含 LBA 寻址的逻辑驱动器。
- 对于包含在 CHS 寻址 EBR 中的逻辑驱动器,存储在 BIOS 参数块(所谓的“隐藏扇区”字段)中的分区偏移量是相对于其包含的扩展引导记录计算的,而不是磁盘绝对偏移量。
* DOS 版本首次与 Windows 95 (4.0.950) 一起发布
** DOS 版本首先随 Windows 95 OSR2 (4.0.1111) 一起发布
*** 分区表(以及 BPB 等数据结构)的寻址方案所施加的限制:CHS 最多可以寻址 1024 × 255 × 63 个扇区,LBA 可以寻址 2 32 个扇区。(知识库文章声称限制为 1024 × 255 × 64,但这可能是错误的。)
**** 最大簇大小为 64 个扇区,因此存在限制;每扇区 512 字节 × 每簇 64 个扇区 × 65525 个簇 ≈ FAT 簇区域中的 2 GiB。理论上,即使存在此限制,也可以通过较大的保留扇区区域或根目录区域来突破此限制,但其他大小限制可能仍然存在。
***** 此限制的来源尚不清楚;也许是虚假的。