【问题标题】:MBR organizationMBR组织
【发布时间】:2020-05-02 19:12:32
【问题描述】:

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

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

【问题讨论】:

标签: filesystems disk mbr


【解决方案1】:

两篇维基百科文章提供了有用的详细信息:https://en.wikipedia.org/wiki/Master_boot_recordhttps://en.wikipedia.org/wiki/Logical_block_addressing。其他有用的来源是The Starman's "All the Details of many versions of both MBR"

在MBR中有"Partition table entries";对于 LBA 兼容条目,它们同时具有 CHS(3 字节)和 LBA(4 字节)地址。 CHS 给出两个地址,一个用于分区的第一个扇区,另一个用于分区的最后一个扇区。 LBA地址是第一个扇区的LBA地址和这个分区的扇区总数。所以这两种类型的地址都不是字节而是扇区,Wikipedia says扇区大小过去被认为是固定在 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 的站点中有 proposed incompatible MBR format for LBA48,但它不适用于大多数期望正确的经典 MBR 的操作系统。)

LBA 是在 1996 年“在 Windows 95B 和 DOS 7.10 中引入的,以支持大于 8 GB 的磁盘”,正如 the Wikipedia 所说。有1999年授予的IBM相关专利(大概2019年10月到期):Address offset feature for a hard disk drive, US6415383

关于 MBR 的前 LBA 时期知之甚少,但在 DOS 2.0 分区表中,总大小为 64 字节,有 4 个分区,每个分区 16 字节。它是MBR parsing code in DOS2中编码的大小:

汇编代码检查

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

即使是 Starman 的 MBR 资源也没有关于为什么为每个分区表条目分配 16 个字节的原因的信息。

我发现了 AST Research 早前的 1990-1992 年专利(现在转让给三星)System for multiple access hard disk partitioning, US5136711A,它在图 2(图 3)中给出了分区表布局,听起来很像 LBA:

每个分区标识符段 133、134、135 和 136 包括 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,扇区号段156指示分区P4中的扇区数,如本领域所熟知的。

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

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

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

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

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

【讨论】:

  • MBR总是占用磁盘的前512字节吗?
  • 我认为大多数经典磁盘工具(如 fdisk 或“磁盘管理”)只能在磁盘的前 512 个字节扇区中检测到 MBR(如果存在)。所以是的。可以有没有任何 MBR 的磁盘;大多数 USB 闪存驱动器没有 MBR。大多数 GPT 格式化磁盘都有“保护性 MBR”来向旧操作系统发出信号,表明磁盘上有一些数据。某些 GPT 格式的分区可能会在 MBR 中镜像某些分区(仅当它们位于前 2 TB 磁盘空间中时)。经典 MBR(第 5、6...)中的扩展分区在几个 EBR 中进行了描述,这些 EBR 看起来像 PT 的 MBR,但没有引导加载程序。随时问更多。
  • “对于同时具有 CHS(3 字节)和 LBA(4 字节)地址的 LBA 兼容条目” - 为什么将相同的数据存储在不同的坐标中?一般来说,在现代计算机中,你能找到这样的不使用LBA的磁盘吗?
  • 任何现代(2000 年及以后)将始终使用 LBA(据我了解)。 CHS 和 LBA 可能都是为了与最早的 DOS 变体兼容而存储的(而 CHS 是 BIOS 磁盘访问 API 的接口)。您可以尝试使用 CHS mbr 创建磁盘,但大多数工具(如 fdisk)会通过添加正确的 LBA 为您修复此磁盘。
  • “CHS 和 LBA 可能都是为了兼容性而存储的” - 但 CHS 坐标不用于容量超过 8 GB(CHS 寻址限制)的磁盘。像 0xFFFFFE 这样的东西写在那里。在其他情况下,据我了解,两者都被使用。
猜你喜欢
  • 2015-06-30
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多