再把分区引导扇区刨一刨
分区引导扇区
=跳转指令(3B)
+硬盘分区类型(8B)
+BPB(25B)+扩展BPB(54B)
+分区引导代码(420B)
+结束符(0x55 0xAA)
对于这里面我们需要关注的是BPB和扩展BPB。
BPB
字节数 | 内容 |
---|---|
2 | 扇区字节数:一般是512,我也见过4096的 |
1 |
每簇扇区数:在Windows的格式化对话框中,可以选8~64KB。 如果是自己实现的话,理论上可以是1、2、4、8、16、32、64、128扇区。 |
2 | 保留扇区数:从分区开头开始的若干个扇区,包含分区引导扇区 |
1 | FAT表个数:一般是2个,两个是一样的内容,用于校验 |
2 | 根目录最大目录项数,FAT32不用 |
2 | 分区容量小鱼32MB时的扇区数,忽略吧,一般不会这么小 |
1 | 介质类型:略 |
2 | 每个FAT表扇区数,FAT32不用 |
2 | 每磁道扇区数:略 |
2 | 磁头数:略 |
4 | 分区前已用扇区数:略 |
4 | 磁盘总扇区数:顾名思义 |
扩展BPB
字节数 | 内容 |
---|---|
4 | 一个FAT表占用扇区数 |
2 | FAT工作方式:略 |
2 | 版本号:略 |
4 | 根目录入口簇号:一般为2。0和1号簇只在概念上存在,没有实际空间。在FAT表中,0和1号项不代表任何簇的管理信息,所以真正有空间的簇是从2号开始的,里面存的是根目录的信息。 |
2 | 文件系统信息扇区:略 |
2 | 备份引导扇区的扇区:顾名思义 |
12 | 保留,没用 |
1 | 物理磁盘号:略 |
1 | 保留,没用 |
1 | 扩展引导标志:保留,没用 |
4 | 磁盘序列号:顾名思义 |
11 | 卷标:字符 |
8 | 文件系统格式:字符 |
对于上面两个表,目前只关注粗体部分就好。因为表中粗体字信息,已经可以把分区内容安排得明明白白了。当然,还需要几个潜规则:
- 保留扇区后面紧接着的扇区就是FAT表的起始扇区
所以上述表格里没有说FAT表从哪里开始 - 两个FAT表也是以扇区对齐紧挨着的
- 2号簇,是以簇大小对齐,紧跟着FAT表的
安排!