1. 主页
  2. 文档
  3. exFAT文件系统结构
  4. exFAT文件系统的VBR分析...
  5. 主启动扇区(MBS)参数分析

主启动扇区(MBS)参数分析

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 保留

下面对这些参数分为几个部分作详细分析:

  1. 0x00~0x02:转跳指令

转跳指令本身占用两个字节,它将程序执行流程转跳到引导程序处。exFAT的转跳指令一般为“0xEB7690”。

  1. 0x03~0x0A:OEM代号

这部分是一个8字节的ASCII区域,其内容由创建该文件系统的OEM厂商具体安排。如果位数不足8位,则以空格(0x20)补齐。微软的Windows系统将此处设置为“EXFAT”。

  1. 0x0B~0x3F:保留区

MBS的0x0B-0x3F处是传统的FAT文件系统(例如FAT32等)BPB所占的空间,exFAT文件系统不使用这些字节。可以防止误挂载exFAT卷而产生风险。

以下是BPB参数,它记录了文件系统的重要信息:

  1. 0x40~0x47:起始扇区号

起始扇区号指本卷所在磁盘上的扇区号,对于主分区和扩展分区都是从MBR(磁盘的0扇区,包含磁盘的启动代码和分区表信息)到MBS的扇区数。

  1. 0x48~0x4F:卷总扇区数

卷总扇区数,由8个字节描述,也就是64位。所以能管理的扇区数为264

  1. 0x50~0x53:FAT表起始扇区号

该取值是相对于文件系统起始扇区号扇区而言,也就是从MBS到FAT表之间的扇区数。

  1. 0x54~0x57:FAT扇区数

指FAT表包含的扇区数。此版本的exFAT只有一份FAT表。

  1. 0x58~0x5B:首簇起始扇区号

这个值用来描述文件系统的第一簇在磁盘上的扇区号。与传统的FAT文件系统一样,exFAT文件系统的第一个簇也是2号簇。

  1. 0x5C~0x5F:卷内的总簇数

卷内的总簇数指从卷内第一个簇开始到卷尾所包含簇的总数。

  1. 0x60~0x63:根目录首簇号

在格式化exFAT文件系统时,格式化程序会在簇集中指定一个簇作为exFAT的根目录,并把簇号记录在BPB中。

  1. 0x64~0x67:卷序列号

卷序列号是格式化程序在创建文件系统时随机生成的4字节的值。

  1. 0x68~0x69:文件系统版本

VV.MM这一版本就是0x0100,在磁盘上存储为了0x0001。

  1. 0x6A~0x6B:卷标志

Bit0描述了哪个是活动FAT,取值0指FAT1为活动FAT,取值1则FAT2为活动FAT。

Bit1描述了卷是不是脏,取值0指卷是干净的,取值为1指卷脏启动时要SCANDISK。

Bit2描述了媒介是否失效,取值0指卷正常,取值1指报告卷已失效。

Bit3描述了是否清零。其它位(4~15)保留不用。

  1. 0x6C~0x6C:每扇区字节数描述

这个字节用来描述每个扇区包含的字节数,描述方法为,假设此处取值为N,则每扇区所包含的字节数就为2N。这个值的取值范围为9~12,也就是说每扇区字节容量取值最小29=512字节,最大212=4096字节。本例中此值为“9”,则每扇区包含29=512字节。

  1. 0x6D~0x6D:每簇扇区数描述

这个字节用来描述每个簇包含的扇区数,描述方法为,假设此处取值为N,则每簇所包含的扇区数为2N。每簇扇区容量取值最小20=1个扇区即512字节,最大32MB,扇区字节数取值与每簇扇区数取值的和最大不超过25。本例中此值为“6”,则每簇包含26=64个扇区。

  1. 0x6E~0x6E:FAT数

这个值是1或2,只有在TexFAT环境(第7章介绍)中才使用2个FAT表。在exFAT中只使用一个FAT表。

  1. 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扇区低密度)
  1. 0x70~0x70:簇集使用率

簇集的使用率,把这个值换成十进制就是当前的簇集使用了百分之多少。

  1. 0x71~0x77:保留

以下是引导程序和其它部分:

  1. 0x78~0x1FD:引导程序

exFAT的引导程序占用390字节(0x78~0x1FD)。存放引导代码。

  1. 0x1FE~0x1FF结束标志

exFAT的MBS结束标志与传统的FAT结束标志一样,为“0xAA55”,在磁盘上存储为“0x55AA”。

  1. 扩展数据

如果每扇区字节数大于512,则扇区剩下的部分保留不用。

我们要如何帮助您?

评论 抢沙发

评论前必须登录!