MBR 小结

在介绍exfat文件系统之前,首先介绍一下MBRMBR作为传统的DOS系统的引导扇区,其中可能存储有bootloadercode,但是如果用于linux这样的系统,这部分是不许要的,因此,一般是0.

0-0x88

主引导程序

引导程序

0x89– 0x1bd

出错信息数据区

数据区

0x1be– 0x1cd

分区116字节)

分区1

0x1ce– 0x1dd

分区216字节)

分区2

0x1de– 0x1ed

分区316字节)

分区3

0x1ee– 0x1fd

分区416字节)

分区4

0x1fe

0x55

结束标志

0x1ff

0xaa

结束标志

Table1



table1,可以看到从0x1be开始,是分区表的信息,最后两个字节是结束标志,对于Linux系统来说,真正要用到的是分区表这部分的信息。

字节偏移

内容

0

引导标志,0x80(活动分区),0x00(非活动分区)

123

分区起始的磁头号,扇区号,柱面号

磁头号:1

扇区号:第2字节的低6bit.

柱面号:第2字节高2bit+3字节


4

分区类型:

00H :未指定

06HFAT16

0BHFAT32

05H:扩展分区

07HNTFS

0FH:(LBA)扩展分区

83Hlinux分区

567

分区的结束磁头号,扇区号,柱面号

磁头号: 第5字节

扇区号:第6字节的低6bit

柱面号:第6字节的高2bit+7字节

891011

本分区之前已经使用的扇区数,即分区的开始地址

12131415

分区的总的扇区数。


对于固态硬盘来说,扇区,磁头等物理上是不存在的,所以我们主要关注分区的开始地址和分区的长度。


下面是一个SD卡,大小是16G,通过fdisk分成两个分区


1


从图1知,分区1的起始地址是10000,长度是10000000– 10000 + 1 = 9990001


分区2的起始地址是10000001,长度是31116287– 10000001 + 1 = 21116287.


下图是我通过一个小应用解析的MBR的数据内容,主要开分区表的信息。


2












3


4

综合图2,图3,图4可获取如下信息:

分区1的起始地址是2710H,即十进制的10000,长度是986f71H,即十进制9990001

分区2的起始地址是989681H,即十进制10000001,长度是0142357fh,即十进制21116287.

这些数据和以上我们计算的完全吻合。

对于SD卡,MMCSSD等,由于物理地址是线性的,因此没有磁头,柱面等概念,因此这些数据一般来说,没有意义。


Exfat文件系统。


Exfat文件系统是微软发布的一个类FAT的文件系统规范,支持大于4G的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章