MBR(主引导记录)并没有一个由国际标准组织发布的、独立的、名为“MBR规范”的官方协议文档。
它的格式是一个事实上的工业标准(De Facto Standard),其定义来源于早期IBM PC硬件和微软DOS操作系统的历史实现,并通过对现有系统的逆向工程和广泛兼容性实践而得以巩固。
以下是追溯MBR格式的权威来源和核心文档:
一、核心历史来源
1. IBM PC Technical Reference (1983)
- 文档:IBM Personal Computer AT Technical Reference手册。
- 内容:这是最原始的来源,定义了BIOS INT 13h中断调用(用于磁盘访问)和磁盘的CHS(柱面-磁头-扇区)寻址模式。MBR的结构,特别是分区表中CHS字段的格式,是为了兼容这些BIOS调用而设计的。
- 地位:这是MBR概念的硬件基础。
2. Microsoft MS-DOS / PC-DOS
- 实现:微软的DOS操作系统是MBR格式的主要推动者和实现者。它的
FDISK
工具是创建MBR分区表的事实标准工具。 - 定义方式:MBR的格式通过微软的操作系统和工具的行为而被定义下来。其他操作系统(如DR-DOS)和后来的软件都必须与之兼容。
二、现代权威参考
虽然缺乏单一官方规范,但以下资源被公认为最权威的参考:
1. UEFI Forum - ESP Specification
- 文档:https://uefi.org/specifications (其中包含对传统MBR的明确描述)
- 相关部分:UEFI规范为了保持向后兼容,明确描述了MBR的结构,包括分区表格式和
0x55AA
结束标志。这是目前能找到的最“官方”的书面定义之一。
2. Microsoft Documentation
文档:https://learn.microsoft.com/en-us/windows/win32/fileio/master-boot-record
注:目前已经无法访问。内容:微软官方开发者文档对MBR结构进行了清晰的描述,包括分区表条目的详细布局。这对于Windows开发者是权威参考。
3. Linux Kernel Source & Documentation
- 来源:Linux内核的
fs/partitions/msdos.c
等文件。 - 内容:Linux系统为了读写MBR磁盘,实现了对MBR的解析。其源代码和内核文档是理解MBR格式的极佳实践参考。
4. 维基百科 - Master Boot Record
- 页面:https://en.wikipedia.org/wiki/Master_boot_record
- 内容:该页面综合了所有历史和技术来源,提供了MBR结构的详细字节级偏移说明,并持续更新和维护,是快速查询的绝佳资源。
三、MBR结构总结(基于以上来源)
根据这些权威来源,MBR的标准结构如下表所示:
偏移(十六进制) | 长度(字节) | 名称与描述 | 示例/备注 |
---|---|---|---|
0x000 - 0x1BD |
446 | 主引导代码(Bootstrap Code) | 可执行的机器指令,用于加载活动分区的VBR。 |
0x1BE - 0x1FD |
64 | 分区表(Disk Partition Table, DPT) | 包含4个条目,每个16字节。 |
0x1FE - 0x1FF |
2 | 引导签名(Boot Signature) 我喜欢把它叫做:结束标志 |
必须为0x55 0xAA ,否则BIOS认为磁盘无效。 |
四、总结
- 没有单一官方协议:MBR格式没有像RFC或ISO标准那样的独立官方文档。
- 事实标准:其规范由历史实践(IBM BIOS + MS-DOS) 和现代权威来源(UEFI规范、微软/Linux文档) 共同定义。
- 最佳实践:
- 如需开发,请参考 Microsoft Docs 和 Linux内核实现。
- 如需快速查询,维基百科 提供了极佳的总结。
- 如需最正式的背景,UEFI规范 是值得引用的文件。