NTFS源码阅读引导(2) -- NTFS Partition Boot Sector
来源:
硬盘分区后(拥有了 GPT 或 MBR 分区表), 一个卷(分区)就可以被格式化为对应的文件系统. 当卷被格式化为 NTFS 时, 格式化工具会使用卷的前 16 个 sector 作为 $Boot
元数据文件的存放区域(16*512 = 8192 Byte). 其中第一个 sector (512 字节), 即 NTFS boot sector, 包含启动代码和文件系统基础信息, 而剩余的 15 个 sector 可以作为初始化程序加载器(代码)的存放位置.
同时, 为了保证文件系统可靠 性, 卷的最后一个 sector 会存放 boot sector 的备份.
Boot Sector 的结构如下所示:
Byte Offset | Field Length | Field Name |
---|---|---|
0x00 | 3 bytes | Jump Instruction |
0x03 | LONGLONG(8 bytes) | OEM ID |
0x0B | 25 bytes | BPB |
0x24 | 48 bytes | Extended BPB |
0x54 | 426 bytes | Bootstrap Code |
0x01FE | WORD(2 bytes) | End of Sector Marker |
其中关于如何实现系统启动的部分暂时不管(Bootstrap Code). OEM ID 固定为 NTFS(又称为 Magic), 而 NTFS 基础信息存放在 BPB 及 Extended BPB 中. 详细结构可以参考文章开头链接.
开发时, 透过 Boot Sector 构建出整个磁盘的基础信息是一个非常重要的步骤(形成一个 Volume 的表示结构).