MBS位于卷的0扇区,主要由6部分组成,转跳指令,OEM代号,保留区,BPB(BIOS Parameter Block,BIOS参数块),引导程序,结束标志。图2是一个完整的exFAT文件系统的MBS。
表1 exFAT的主/备份启动扇区结构
字节偏移 | 长度(字节) | 描述或取值 | 字节偏移 | 长度(字节) | 描述或取值 |
0x00 | 3 | 转跳代码 | 0x68 | 2 | 文件系统版本* |
0x03 | 8 | OEM代号 | 0x6A | 2 | 卷标志** |
0x0B | 53 | 保留区 | 0x6C | 1 | 每扇区字节数描述 |
0x40 | 8 | 起始扇区号 | 0x6D | 1 | 每簇扇区数描述 |
0x48 | 8 | 卷总扇区数 | 0x6E | 1 | FAT数 |
0x50 | 4 | FAT表起始扇区号 | 0x6F | 1 | 驱动器类型 |
0x54 | 4 | FAT表总扇区数 | 0x70 | 1 | 卷使用率 |
0x58 | 4 | 首簇起始扇区号 | 0x71 | 7 | 保留 |
0x5C | 4 | 卷内总簇数 | 0x78 | 390 | 启动代码 |
0x60 | 4 | 根目录首簇号 | 0x1FE | 2 | 0xAA55 |
0x64 | 4 | 卷序列号 | 其它 | 保留 |
注:1 当扇区字节数大于512时,剩余部分保留不用
2 卷大小最小为1MB,最大为264-1个扇区
*文件系统版本:VV.MM,exFAT这个版本为01.00(存储为0x0001)
**卷标志:
位置 | 取值及描述 |
bit0(活动FAT) | 0-FAT1 1-FAT2 |
bit1(卷脏) | 0-干净 1-卷脏 |
bit2(媒介失效) | 0-正常 1-失败 |
bit3(清零) | 无意义 |
bit4-bit15 保留 |
下面对这些参数分为几个部分作详细分析:
- 0x00~0x02:转跳指令
转跳指令本身占用两个字节,它将程序执行流程转跳到引导程序处。exFAT的转跳指令一般为“0xEB7690”。
- 0x03~0x0A:OEM代号
这部分是一个8字节的ASCII区域,其内容由创建该文件系统的OEM厂商具体安排。如果位数不足8位,则以空格(0x20)补齐。微软的Windows系统将此处设置为“EXFAT”。
- 0x0B~0x3F:保留区
MBS的0x0B-0x3F处是传统的FAT文件系统(例如FAT32等)BPB所占的空间,exFAT文件系统不使用这些字节。可以防止误挂载exFAT卷而产生风险。
以下是BPB参数,它记录了文件系统的重要信息:
- 0x40~0x47:起始扇区号
起始扇区号指本卷所在磁盘上的扇区号,对于主分区和扩展分区都是从MBR(磁盘的0扇区,包含磁盘的启动代码和分区表信息)到MBS的扇区数。
- 0x48~0x4F:卷总扇区数
卷总扇区数,由8个字节描述,也就是64位。所以能管理的扇区数为264。
- 0x50~0x53:FAT表起始扇区号
该取值是相对于文件系统起始扇区号扇区而言,也就是从MBS到FAT表之间的扇区数。
- 0x54~0x57:FAT扇区数
指FAT表包含的扇区数。此版本的exFAT只有一份FAT表。
- 0x58~0x5B:首簇起始扇区号
这个值用来描述文件系统的第一簇在磁盘上的扇区号。与传统的FAT文件系统一样,exFAT文件系统的第一个簇也是2号簇。
- 0x5C~0x5F:卷内的总簇数
卷内的总簇数指从卷内第一个簇开始到卷尾所包含簇的总数。
- 0x60~0x63:根目录首簇号
在格式化exFAT文件系统时,格式化程序会在簇集中指定一个簇作为exFAT的根目录,并把簇号记录在BPB中。
- 0x64~0x67:卷序列号
卷序列号是格式化程序在创建文件系统时随机生成的4字节的值。
- 0x68~0x69:文件系统版本
VV.MM这一版本就是0x0100,在磁盘上存储为了0x0001。
- 0x6A~0x6B:卷标志
Bit0描述了哪个是活动FAT,取值0指FAT1为活动FAT,取值1则FAT2为活动FAT。
Bit1描述了卷是不是脏,取值0指卷是干净的,取值为1指卷脏启动时要SCANDISK。
Bit2描述了媒介是否失效,取值0指卷正常,取值1指报告卷已失效。
Bit3描述了是否清零。其它位(4~15)保留不用。
- 0x6C~0x6C:每扇区字节数描述
这个字节用来描述每个扇区包含的字节数,描述方法为,假设此处取值为N,则每扇区所包含的字节数就为2N。这个值的取值范围为9~12,也就是说每扇区字节容量取值最小29=512字节,最大212=4096字节。本例中此值为“9”,则每扇区包含29=512字节。
- 0x6D~0x6D:每簇扇区数描述
这个字节用来描述每个簇包含的扇区数,描述方法为,假设此处取值为N,则每簇所包含的扇区数为2N。每簇扇区容量取值最小20=1个扇区即512字节,最大32MB,扇区字节数取值与每簇扇区数取值的和最大不超过25。本例中此值为“6”,则每簇包含26=64个扇区。
- 0x6E~0x6E:FAT数
这个值是1或2,只有在TexFAT环境(第7章介绍)中才使用2个FAT表。在exFAT中只使用一个FAT表。
- 0x6F~0x6F:磁盘类型(磁介质描述符)见表2。
表2 磁介质描述符
十六进制 | 介质描述 |
0xF8 | 硬盘 |
0xF9 | 双面5.25英寸软盘(15扇区高密度)或双面3.5英寸软盘 |
0xFA | 双面3.5英寸软盘或RAM虚拟盘 |
0xFC | 单面5.25英寸软盘(9扇区高密度)或双面8英寸软盘 |
0xFD | 双面5.25英寸软盘(9扇区高密度) |
0xFE | 单面8英寸软盘(单或双密度)或单面5.25英寸软盘(8扇区低密度) |
0xFF | 双面5.25英寸软盘(8扇区低密度) |
- 0x70~0x70:簇集使用率
簇集的使用率,把这个值换成十进制就是当前的簇集使用了百分之多少。
- 0x71~0x77:保留
以下是引导程序和其它部分:
- 0x78~0x1FD:引导程序
exFAT的引导程序占用390字节(0x78~0x1FD)。存放引导代码。
- 0x1FE~0x1FF结束标志
exFAT的MBS结束标志与传统的FAT结束标志一样,为“0xAA55”,在磁盘上存储为“0x55AA”。
- 扩展数据
如果每扇区字节数大于512,则扇区剩下的部分保留不用。
评论前必须登录!
注册