Hybrid MBR(MBR 混合分区表)

2018-06-29 13:17:53 +08:00
 atuocn

Hybrid MBR(MBR 混合分区表)

Hybrid MBR(MBR 混合分区表)是一种丑陋危险的技术。它可以让不识别 GPT 格式的系统,把硬盘识别为 MBR 格式,达到兼容的目的。 部分磁盘空间,GPT 分区和 MBR 分区两者混合共存。同一个磁盘分区块,既有 GPT 分区表索引,又有 MBR 分区表索引。这样,GPT 感知的 系统和 MBR 感知的系统,都按各自的理解,得到磁盘分区。

原理

Hybrid MBR 就是利用这个 protective MBR,重新开辟出分区表,并和 GPT 分区表的分区区块位置保持一致。从而激活 MBR 系统识别分区。

工具

gdisk, gptsync 可以制作 Hybrid MBR

MBR 混合分区表问题

之所以说丑陋,因为以下原因。然而从实用主义出发,绝大多数情况下,这都不是事。

从 BIOS 启动 GPT 上的系统

从 BIOS 启动 GPT 上的系统,是个和 Hybrid MBR 有点相关,实际独立的命题。Hybrid MBR 当然可以实现启动,但它是把磁盘当作 MBR 来启动的。

GPT 分区是和 UEFI 启动配合的。GPT 的启动磁盘上划出一个特殊的分区,称为 ESP 分区,UEFI ROM 从 ESP 分区加载系统启动代码。

BIOS 时代,并没有 GPT 格式分区。然而 linux,grub/syslinux,可以从 BIOS 启动,并识别 GPT 磁盘格式,加载 GPT 分区内的操作系统。

grub 方案

BIOS 中 grub 的启动过程,简单地说,分四步。

  1. 第一步固化在 BIOS 中。BIOS 加载 MBR, MBR 内有极小的引导代码,BIOS 控制权交给 MBR 内的引导代码。
  2. MBR 加载安装在固定磁盘位置的 grub core image 代码。这个磁盘位置是磁盘扇区的绝对位置,在 grub 安装时硬编码入 MBR 和 core image。
  3. core image 代码也不大,但它能识别 grub 安装时指定的磁盘格式和文件系统,加载更多的 grub 模块和配置。
  4. grub 根据配置,加载指定的操作系统。控制权交给 OS 的引导代码。

其实,在 BIOS 环境中 grub 启动 GPT 磁盘上的操作系统,问题不大。grub 有 GPT 识别模块。问题是如何把 grub 的 core image 引导代码安装在 GPT 磁盘上。对 core image 来说,安装在哪无所谓,反正是靠磁盘扇区的绝对位置硬编码定位。

MBR 方案中,grub 的 core image 是安装在磁盘分区的间隙中。这个间隙通常是 MBR 到第一个分区的空闲保留区。以前是 63 个扇区,后来磁盘分区的扇区对齐技术,4K 对齐 /1M 对齐,基本上有接近 1M 的空间。

GPT 分区方案中,第 2~33 扇区被 GPT 分区表使用了。装在磁盘间隙中也不是个事,名不正么。反正 GPT 分区表项多,不像 MBR 才区区四个。 所以 GPT 分区中增加一个特殊分区,就像 ESP 分区待遇一样。这个分区叫做 BIOS Boot Partition ,gdisk 中分区类型是 EF02。GPT 使用 GUID 表示类型,GUID 值是 21686148-6449-6e6f-744e656564454649 。这样,grub 安装的时候,就把 core image 镜像复制到这个分区,同时修改 MBR 和 core image 中硬编码的定位扇区地址就好了。

注意BIOS Boot Partition 是存在于 GPT 分区表项中,和 MBR 分区表没关系哦,所以磁盘仍是 GPT 格式,和 Hybrid MBR 没关系了。

限制

参考

关于 Hybrid MBR,这篇文章 Hybrid MBRs 讲的很详细。

4380 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/466839

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX