0xAA55 发表于 2014-1-29 13:29:29

【操作系统】FAT文件系统(FAT12,FAT16,FAT32)DBR扇区结构的详细说明

FAT12、FAT16的DBR相同(以下称为FAT)。FAT32的DBR不一样。

FAT格式:
_________________________________________________________________________________
|偏移  意义      |大小  |解释                      |
|0x00: JMP指令     |3字节 |SHORT跳转的话,是一个JMP一个NOP。       |
|0x03: OEM标识     |8字节 |比如MSDOS5.0等字符串。             |
|0x0B: 每个扇区的字节数|2字节 |如:0x0200。                  |
|0x0D: 每个簇的扇区数 |1字节 |如:0x01。                   |
|0x0E: 保留扇区数   |2字节 |从分区开始到第一个FAT之前的扇区数。      |
|_______________________|_______|_______________________________________________|
|0x10: FAT的数量    |1字节 |一般为2                    |
|0x11: 根目录最大项数 |2字节 |根目录文件(夹)个数上限。           |
|0x13: 分区总扇区数  |2字节 |这个分区的总大小。               |
|0x15: 介质类型    |1字节 |介质类型,如“软盘”“硬盘”。         |
|0x16: 每FAT扇区数   |2字节 |单个FAT占用的扇区数。             |
|0x18: 每磁道扇区数  |2字节 |每个磁道的扇区数。               |
|0x1A: 磁头数     |2字节 |磁头的总数。                  |
|0x1C: 隐藏扇区数   |4字节 |DBR前面的扇区数,也就是分区前的扇区数。    |
|_______________________|_______|_______________________________________________|
|0x20: 保留不用    |4字节 |FAT32的分区总扇区数。             |
|0x24: 驱动器数    |1字节 |驱动器的数量。                 |
|0x25: 当前磁头    |1字节 |当前使用的磁头。                |
|_______________________|_______|_______________________________________________|
|0x26: 磁盘扩展参数块 |24字节 |磁盘扩展参数块。                |
|0x3E: 引导指令    |*   |引导指令。                   |
|0x1FE: 可引导标识   |2字节 |0xAA55                     |
|_______________________|_______|_______________________________________________|




FAT32格式:
_________________________________________________________________________________
|偏移  意义      |大小  |解释                      |
|0x00: JMP指令     |3字节 |SHORT跳转的话,是一个JMP一个NOP。       |
|0x03: OEM标识     |8字节 |比如MSDOS5.0等字符串。             |
|0x0B: 每个扇区的字节数|2字节 |如:0x0200。                  |
|0x0D: 每个簇的扇区数 |1字节 |如:0x01。                   |
|0x0E: 保留扇区数   |2字节 |从分区开始到第一个FAT之前的扇区数。      |
|_______________________|_______|_______________________________________________|
|0x10: FAT的数量    |1字节 |一般为2。                   |
|0x11: 保留不用    |4字节 |FAT12、16的根目录项数、分区总扇区数,此处为0。 |
|0x15: 介质类型    |1字节 |介质类型,如“软盘”“硬盘”。         |
|0x16: 保留不用    |2字节 |FAT12、16的每FAT扇区数,此处为0。       |
|0x18: 每磁道扇区数  |2字节 |每个磁道的扇区数。               |
|0x1A: 磁头数     |2字节 |磁头的总数。                  |
|0x1C: 隐藏扇区数   |4字节 |DBR前面的扇区数,也就是分区前的扇区数。    |
|_______________________|_______|_______________________________________________|
|0x20: 分区总扇区数  |4字节 |分区总扇区数。                 |
|0x24: 单个FAT扇区数  |4字节 |单个FAT占用的扇区数。             |
|0x28: FAT是否非镜像  |2字节 |FAT是否镜像。0:镜像(两FAT一致)1:非镜像   |
|0x2A: 版本号     |2字节 |可以为0。                   |
|0x2C: 根目录起始簇  |4字节 |根目录的起始位置。FAT32的根目录不固定     |
|_______________________|_______|_______________________________________________|
|0x30: FSInfo的扇区号 |2字节 |以扇区为单位。                 |
|0x32: DBR备份的扇区号 |2字节 |以扇区为单位,另一个DBR的备份。        |
|0x34: 保留未用    |12字节 |全为0。                    |
|_______________________|_______|_______________________________________________|
|0x40: BIOS的设备ID  |2字节 |也就是用INT 0x13访问此驱动器的时候指定的ID号。 |
|0x42: 磁盘扩展参数块 |24字节 |磁盘扩展参数块。                |
|0x5A: 引导指令    |*   |引导指令。                   |
|0x1FE: 可引导标识   |2字节 |0xAA55                     |
|_______________________|_______|_______________________________________________|




磁盘扩展参数块格式:
_________________________________________________________________________________
|偏移  意义      |大小  |解释                      |
|0x00: 扩展参数块标识 |1字节 |值为0x29                    |
|0x01: 分区ID     |4字节 |随机数,用于区分硬盘。             |
|0x05: 卷标      |11字节 |卷标,也就是驱动器的“名字”、“标签”     |
|0x10: 文件系统类型  |8字节 |值为“FAT12”、“FAT16”、“FAT32”      |
|_______________________|_______|_______________________________________________|




FSInfo扇区格式:
_________________________________________________________________________________
|偏移  意义      |大小  |解释                      |
|0x00: FSInfo标识   |4字节 |值为“RRaA”,0x41615252。           |
|0x04: 保留不用    |480字节|全为0。                    |
|0x1E4: FSInfo标识2   |4字节 |值为“rrAa”,0x61417272。           |
|0x1E8: 空闲簇数    |4字节 |统计目前空闲可用的簇数,计算磁盘剩余容量可用。 |
|0x1EC: 下一可用簇号  |4字节 |下一个可用的簇号。               |
|0x1F0: 保留不用    |14字节 |全为0。                    |
|0x1FE: 可引导标识   |2字节 |0xAA55                     |
|_______________________|_______|_______________________________________________|

参考资料:
http://www.0xaa55.com/thread-5-1-1.html
页: [1]
查看完整版本: 【操作系统】FAT文件系统(FAT12,FAT16,FAT32)DBR扇区结构的详细说明