Hybrid MBR(MBR 混合分区表)是一种丑陋危险的技术。它可以让不识别 GPT 格式的系统,把硬盘识别为 MBR 格式,达到兼容的目的。 部分磁盘空间,GPT 分区和 MBR 分区两者混合共存。同一个磁盘分区块,既有 GPT 分区表索引,又有 MBR 分区表索引。这样,GPT 感知的 系统和 MBR 感知的系统,都按各自的理解,得到磁盘分区。
Hybrid MBR 就是利用这个 protective MBR,重新开辟出分区表,并和 GPT 分区表的分区区块位置保持一致。从而激活 MBR 系统识别分区。
gdisk, gptsync 可以制作 Hybrid MBR
之所以说丑陋,因为以下原因。然而从实用主义出发,绝大多数情况下,这都不是事。
从 BIOS 启动 GPT 上的系统,是个和 Hybrid MBR 有点相关,实际独立的命题。Hybrid MBR 当然可以实现启动,但它是把磁盘当作 MBR 来启动的。
GPT 分区是和 UEFI 启动配合的。GPT 的启动磁盘上划出一个特殊的分区,称为 ESP 分区,UEFI ROM 从 ESP 分区加载系统启动代码。
BIOS 时代,并没有 GPT 格式分区。然而 linux,grub/syslinux,可以从 BIOS 启动,并识别 GPT 磁盘格式,加载 GPT 分区内的操作系统。
BIOS 中 grub 的启动过程,简单地说,分四步。
其实,在 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 讲的很详细。