66814红足1一世 66814红足1一世 66814红足1一世

MBR分区结构、DPT分区表、EBR扩展启动

Master Boot Record(缩写:MBR),也称为主引导扇区,是电脑开机访问硬盘时必须读取的第一个扇区。它在硬盘上的三维地址是(0柱面)。,0 个磁头,1 个扇区)。在深入讨论主引导扇区的内部结构时,开头的 446 字节内容有时被称为“主引导记录”(MBR),后面是四个 16 字节的“磁盘分区表”(DPT) . ) 和一个 2 字节的结束标志 (55AA)。因此,在使用术语“主引导记录”(MBR)时结构分区图,需要根据具体情况来确定是指整个主引导扇区还是主引导扇区的前446字节。如下:

image

对应我电脑的第一个扇区:

image

启动代码

主引导记录以第一阶段引导代码开始。硬盘引导程序的主要作用是在系统硬件完成自检后,检查分区表是否正确,并将控制权移交给硬盘上的引导程序(如GNU GRUB)。它不依赖于任何操作系统,启动代码也可以更改,实现多系统启动。

硬盘分区表

硬盘分区表占用主引导扇区的64字节(偏移量01BEH-偏移量01FDH),可以描述四个分区的信息,每个分区的信息占用16字节。每个字节的定义请参考硬盘分区结构信息。

image

热烫分区图和排杠图_爱碧网 图界第二分区_结构分区图

从主引导记录的结构可以知道,它只包含一个64字节的硬盘分区表。由于每个分区信息需要16个字节,对于使用MBR型分区结构的硬盘,最多只能识别4个主分区。所以对于这种分区结构的硬盘,不可能得到超过4个主分区。这就是需要引入扩展分区的地方。扩展分区也是主分区的一种,但它与主分区的区别在于理论上可以划分为无限多个逻辑分区。

扩展分区中逻辑驱动器的引导记录是链式的。每个逻辑分区都有一个类似于 MBR 结构的扩展引导记录 (EBR)。分区表中的第一个条目指向逻辑分区本身的引导扇区,第二个条目指向下一个逻辑驱动器的 EBR。不使用第 3 项和第 4 项。

默认情况下,Windows系统一般只为系统划分一个主分区,其余划分为扩展分区。这里有几点需要注意:

现在我们来分析主引导扇区中的DPT:

80 01 01 00 07 FE FF FF 3F 00 00 00 00 34 80 0C

80:表示该分区为活动分区

01 01 00:起始磁头/起始扇区和起始柱面

07:文件系统标志位07表示NTFS文件系统

热烫分区图和排杠图_爱碧网 图界第二分区_结构分区图

FE FF FF : 端头/端扇区和端柱面

00 00 00 3F : 分区开头的相对扇区号

0C 80 34 00:分区的扇区总数

后三项的分析方法同上。

每个分区的第 1 到第 3 个字节是分区的起始地址。第一个字节是起始头号(面号);第二个字节的低6位为起始扇区号,高2位为起始柱面号的高2位;第三个字节是起始扇区号。起始柱面号的低 8 位。因此,分区的起始柱面号用 10 位二进制数表示,最大值为 2^10 = 1024。由于逻辑柱面号从 0 开始,所以显示的最大柱面号为 1023。同理, 6位二进制数表示的扇区号不会超过2^6 – 1 = 63;用 8 位二进制数表示的头数不会超过 2^8 – 1 = 255。每个分区的第 5 到第 7 个字节代表分区的结束地址,每个字节的解释与第 1 到第 3 个字节的解释相同。这里我们假设一个极端情况:如果第5到第7个字节的所有二进制位都设置为1,则得到柱面号、磁头号和扇区号所能表示的最大值,从而得到最大绝对扇区区号是:

1024 × 256 × 63 = 16,515,072

该扇区之前的所有物理扇区中包含的字节数为:

16,515,072 × 512Bytes ≈ 8.46GB。

热烫分区图和排杠图_爱碧网 图界第二分区_结构分区图

可见为什么硬盘的容量设计有8.4GB的文件。分区表的每个分区的第1~3字节和第5~7字节的数据结构已经不能满足大于8.46GB的大容量硬盘。需要。考虑到向后兼容的需要,业界从 DOS 时代开始就没有提议对这种方式定义的硬盘分区表进行修改。否则,所涉及的变化过于广泛,会导致硬件和软件的开发出现故障,几乎不可能被业界使用。并被用户接受。硬盘制造商通过定义新的 INT 13 服务扩展标准来解决这个问题。新的 INT 13 服务扩展标准不再使用操作系统' s寄存器传输硬盘的寻址参数,但使用存储在操作系统内存中的地址包。地址包存储64位LBA地址。如果硬盘支持LBA寻址,则低28位直接传给ATA接口。如果不是,操作系统会先将LBA地址转换为CHS地址,然后再传给ATA接口。. 这样,基于ATA总线的CHS寻址最大容量为136.9 GB,LBA寻址最大容量为137.4 GB。新的硬盘传输规范 ATA 133 规范将可用寄存器空间从 28 位增加到 48 位,以支持更大的硬盘。如果硬盘支持LBA寻址,则低28位直接传给ATA接口。如果不是,操作系统会先将LBA地址转换为CHS地址,然后再传给ATA接口。. 这样,基于ATA总线的CHS寻址最大容量为136.9 GB,LBA寻址最大容量为137.4 GB。新的硬盘传输规范 ATA 133 规范将可用寄存器空间从 28 位增加到 48 位,以支持更大的硬盘。如果硬盘支持LBA寻址,则低28位直接传给ATA接口。如果不是,操作系统会先将LBA地址转换为CHS地址,然后再传给ATA接口。. 这样,基于ATA总线的CHS寻址最大容量为136.9 GB,LBA寻址最大容量为137.4 GB。新的硬盘传输规范 ATA 133 规范将可用寄存器空间从 28 位增加到 48 位,以支持更大的硬盘。LBA寻址的最大容量为137.4 GB。新的硬盘传输规范 ATA 133 规范将可用寄存器空间从 28 位增加到 48 位,以支持更大的硬盘。LBA寻址的最大容量为137.4 GB。新的硬盘传输规范 ATA 133 规范将可用寄存器空间从 28 位增加到 48 位,以支持更大的硬盘。

分区表中每个分区的第8~11个字节表示该分区的起始相对扇区号(即扇区之前扇区的绝对数),高位在右结构分区图,低位在剩下; 第12~15字节表示分区实际占用的扇区数,高位在右,低位在左;分区表等数据结构的表达方式与机器中数据的实际存储方式顺序一致,即低位在前,高位在后。因此,十六进制转十进制时,需要将字段中的十六进制数翻转并以字节为单位进行调整,4个字节最多可以表示2^32个扇区,即2TB=2048GB。

系统进行分区时,每个分区不允许跨越柱面,即以柱面为单位,也就是通常所说的分区粒度。在不超过8.4GB的分区上,C/H/S的表示方式和扇区数的表示方式所表示的分区大小是一致的。超过8.4GB的/H/S/C一般用FEH/FFH/FFH填充,是C/H/S所能代表的最大值;有时它也填充有圆柱到 1024 模数。但这些字节是什么并不重要。

从上面可以看出,我电脑的DPT只有一个主分区和一个扩展分区。

主分区以 63 个扇区开始,大小为 209728512 个扇区。大约 100GB 是我的 C 盘的大小。

扩展分区从 209728575 个扇区开始,大小为 415408770 个扇区。大约 198GB 是我身后的两个磁盘的大小。

扩展分区中的每个逻辑驱动器都存在类似于 MBR 的扩展引导记录 (EBR)。

扩展引导记录包括扩展分区表和扇区结束标记55AA。逻辑驱动器中的引导扇区通常位于相关扇区 32 或 63。如果磁盘上没有扩展分区,则将没有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一个条目指向自己的引导扇区;第二个条目指向下一个逻辑驱动器的 EBR,如果不存在其他逻辑驱动器,则不使用第二个条目,并将其记录为一系列零。如果有额外的逻辑驱动器,则第二个逻辑驱动器的扩展分区表的第一个条目将指向它自己的引导扇区,第二个逻辑驱动器的扩展分区表的第二个条目将指向它的 EBR下一个逻辑驱动器。

爱碧网 图界第二分区_结构分区图_热烫分区图和排杠图

扩展分区表项中的相对扇区数是从扩展分区的起始扇区到逻辑驱动器中第一个扇区的扇区数;占用扇区数是指组成逻辑驱动器的扇区数。

有时磁盘末尾还有剩余空间。由于分区是以1个柱面的容量为分区粒度的,所以如果磁盘总空间不是柱面的整数,那么1个柱面不够用的剩余空间就是剩余空间。,这部分空间不参与分区,所以一般不可用。

我们来到扩展分区的 EBR。

image

扩展分区第一项:起始相对63个扇区,大小为207640062个扇区。我的 D 盘大小大约 99G。

扩展分区的第二个条目(指向下一个逻辑驱动器的 EBR)以相对的 207640125 扇区和 207768645 扇区的大小开始。对于我最后一个平底锅的大小。

然后来到指向的逻辑驱动器的 EBR。

image

结构分区图_热烫分区图和排杠图_爱碧网 图界第二分区

只有一项:起始相对是63个扇区,大小是207768582个扇区。我的E盘大约99G大小。

当然,最后还有一些空间。625142448-625137345 剩余空间超过2M。

image

WinHex和我们分析的一样。

image

所以你也可以自己写一个程序来分析。

最后附上几种常见的分区类型。

image

这篇文章的链接: