MBR组织

D .*_*ark 2 filesystems mbr disk

MBR 分区表中偏移量为 8 字节的字段旨在存储分区开头的 LBA 地址。当没有足够的 CHS 坐标时,引入 LBA 寻址以寻址较大的磁盘。但是在引入 MBR 支持时,这种磁盘还不存在。因此问题是:偏移量为 8 和 12 字节的字段最初包含什么?它们是为进一步的结构开发保留的还是有其他目的?

我也对 LBA-48 的实施感兴趣。MBR中分配了32位用于存储LBA地址,那么32位如何存储48位地址?

osg*_*sgx 6

两篇维基百科文章提供了有用的详细信息:https : //en.wikipedia.org/wiki/Master_boot_recordhttps://en.wikipedia.org/wiki/Logical_block_addressing。其他有用的来源是Starman 的“两个 MBR 的许多版本的所有详细信息”

在 MBR 中有“分区表条目”;对于 LBA 兼容的条目,它们同时具有 CHS(3 字节)和 LBA(4 字节)地址。CHS 给出两个地址,一个用于分区的第一个扇区,另一个用于分区的最后一个扇区。LBA 地址是该分区第一个扇区的 LBA 地址和扇区总数。所以这两种类型的地址都不是字节而是扇区,维基百科说扇区大小过去被认为固定在 512 (29) 字节”。

使用 4 个字节,我们可以将最大 2 TB 的磁盘大小编码为 4294967295(2 到 32 次方减 1)乘以每个扇区 512 个字节(2147483647.5 KB)。

LBA-48 不能存储在官方支持的 MBR 分区条目中,因为 48 位是 6 个字节,而 MBR(和第 5 个逻辑分区的EBR)只有 4 个字节来存储 LBA 开始和结束扇区地址。LBA-48 与GUID GPT 一起使用- https://en.wikipedia.org/wiki/Logical_block_addressing#LBA48

当前的 48 位 LBA 方案是在 2003 年根据 ATA-6 标准引入的,[4] 将寻址限制提高到 2^48 × 512 字节,也就是 128 PiB 或大约 144.1PB。... 但是,常见的 DOS 样式主引导记录 (MBR) 分区表仅支持最大 2 TiB 的磁盘分区。对于较大的分区,这需要由另一种方案替换,例如 GUID 分区表 (GPT),它与当前的 INT 13h 扩展具有相同的 64 位限制。

(在一些类似 wiki 的随机站点中提出了 LBA48 不兼容的 MBR 格式,但它不适用于大多数期望正确经典 MBR 的操作系统。)

正如维基百科所说 LBA 于 1996 年引入“在 Windows 95B 和 DOS 7.10 中,以支持大于 8 GB 的磁盘” 。1999 年获得了相关的 IBM 专利(可能在 2019 年 10 月到期):硬盘驱动器的地址偏移功能,US6415383

关于 MBR 的前 LBA 时代知之甚少,但在DOS 2.0分区表有 64 字节的总大小,其中 4 个分区和每个分区 16 字节。它是在 DOS2 中用 MBR 解析代码编码的大小:

汇编代码的审查

062C 83C610       ADD  SI,+10            ; Checking the next entry...
                                         ; (10h = 16 bytes per entry)
Run Code Online (Sandbox Code Playgroud)

即使是星人的MBR资源有原因没有信息,为什么16个字节被分配给每个分区表项。

我发现了 AST Research 早在 1990-1992 年的专利,用于多访问硬盘分区的系统,US5136711A,它在图像 2(图 3)中给出了分区表布局,听起来很像 LBA:

分区标识符段133、134、135和136中的每一个包括构成分区表140(图3)的16字节的磁盘空间,分区表140(图3)包含对应磁盘分区的标识信息。

分区表 140 在图像中定义为:

  • 141 开机指示灯,
  • 142头号,
  • 144扇区号,
  • 缸数,
  • 148 系统指示灯,
  • 150人头数,
  • 152扇区号,
  • 缸数,
  • 154 引导扇区地址,
  • 156 扇区号

并且在 AST 1992 专利分区表的文本中描述为:

分区表140包括引导指示符字节141以识别对应的分区段P4是可引导分区还是不可引导分区。在给定时间只能引导 P4、P3、P2 和 P1 中的一个分区。分区表还包括物理起始头号字节142、物理起始柱面和物理起始扇区段144、标识操作系统类型的系统指示符字节148、物理结束头号字节150、物理结束柱面和物理结束扇区段152、引导扇区地址段154和扇区号段156,其指示分区P4中的扇区数,如本领域公知的。

因此,在我的假设中,字段 +8 可能用于指向分区的引导扇区(它可能不在第一个扇区中?),而 +12 可能用于检查分区大小计算。但在DOS2 代码中,并没有实际读取 +8 和 +12 字段。它们可能只保留在 IBM MBR 中,并在 AST 专利中重用,用于某些 LBA 类用途。

1991 年的 PCMag(PC Mag 10 Sep 1991,第 410 页)还说 4 字节字段已经用于类似 LBA 的扇区地址:

分区表中的每条记录为16个字节,其中起始扇区和扇区数各4个。此外,为分区字节保留了一个字节。

与 1992 年 Mark Minasi 的书“硬盘生存指南”相同,至少对于最后一个 +12 字段(分区大小),第 279 页(谷歌书籍中有一些片段):

获取此编号以修复引导记录很简单:它位于 MBR 中。每个分区表条目的最后四个字节是分区长度,单位为 secotrs。