MBR主磁盘分区的结构分析

0 阅读4分钟

        每块硬盘在使用前都要先进行分区,也就是将硬盘划分为一个个的逻辑区域,每一个分区都有一个确定的起止位置。在起止位置之间的那些连续的扇区都归该分区索引,不同分区的起止位置互不交错。

工具下载:

百度网盘链接: pan.baidu.com/s/1QM5FKMmR… 提取码: 8888

夸克网盘链接:pan.quark.cn/s/2a972c406… 提取码:dTeZ

        MBR 磁盘的分区形式一般有两种,即主分区扩展分区。主分区又称为主 DOS 分区(Primary DOS Partition),也称为主磁盘分区。扩展分区又称为扩展 DOS 分区(Extended DOS Partition)。非 DOS 分区(Non-DOS Partition)是一种特殊的文件系统类型。它是将硬盘中的一块区域单独划分出来供另一个操作系统使用,如 Linux 和 UNIX 等。对主分区的操作系统来讲,非 DOS 分区是一块被划分出去的存储空间。传统 DOS/Windows 系统一般不能直接识别非 DOS 分区的文件系统,无法直接访问其中数据。

分区表的解析

        为了方便用户对磁盘的管理,操作系统引入磁盘分区的概念,即将一块磁盘逻辑划分为几个区域。在分区表的64字节中,以16字节为一个分区表项来描述描述一个分区的结构。

        一块硬盘(MBR)最多可以有 4 个主磁盘分区,被激活的主磁盘分区称为活动分区,活动分区在一块硬盘中只能有一个

        在 MBR 硬盘中,主分区最多 4 个;若需更多分区,必须通过扩展分区包含逻辑分区的方式实现

        使用winhex打开硬盘查看,其MBR及分区表信息如下:

        每个分区表项中对应的各个字节的含义都是一样的。如下是对应的字节含义:

​编辑

        在 MBR 分区表项中,超过一个字节的数据(如起始 LBA、总扇区数)均以小端序存储,即低字节在前、高字节在后,并非高位到低位。

        另外可以通过winhex自带的模板管理工具查看:

​编辑        应用查看分区表信息:

        

单个分区表项(16 字节)重要信息逐字段精讲

0x00 引导标志(1 字节)最重要之一

  • 0x80活动分区(可引导系统)
  • 0x00非活动分区
  • 其他值:非法

重要规则:

  • 一块硬盘只能有 1 个 0x80
  • 扩展分区、逻辑分区绝对不能是 0x80
  • 没有 0x80 → 电脑无法从硬盘启动

0x01~0x03 起始 CHS(磁头 / 扇区 / 柱面)3 字节

老式硬盘寻址方式,现在基本没用。系统完全不看,只看后面的 LBA。

0x04 分区类型(1 字节)最重要之二

决定这个分区是什么系统、什么用途。

  • 0x00:空表项(未使用)
  • 0x07NTFS(Windows 主分区)
  • 0x0B / 0x0C:FAT32
  • 0x05传统扩展分区(CHS)
  • 0x0FLBA 扩展分区(现在都用这个)
  • 0x83Linux 主分区
  • 0x82:Linux swap 交换分区

关键点:

  • 扩展分区类型只能是 05 或 0F
  • 一个 MBR 硬盘最多只能有 1 个扩展分区

0x05~0x07 结束 CHS(3 字节)

同样过时无用,系统不看。

0x08~0x0B 起始 LBA(4 字节)最重要之三

  • LBA = 逻辑扇区号
  • 代表这个分区从第几个扇区开始
  • 4 字节,小端序存储(低字节在前)

意义:

  • 系统100% 依靠这个定位分区开始位置
  • 改错这个值 → 分区直接丢失
  • 扩展分区的 LBA 指向EBR(扩展引导记录)

0x0C~0x0F 总扇区数(4 字节)最重要之四

  • 该分区占用多少个扇区
  • 决定分区大小
  • 同样 小端序

计算公式:分区大小 (GB) = 总扇区数 × 512 字节 ÷ 1024÷1024÷1024

        在主磁盘分区中,每个分区的开始扇区号,都是硬盘的绝对扇区号。