如何在 Windows 中写入保护性 MBR?

如何在 Windows 中写入保护性 MBR?

我有一台 UEFI 机器,一个磁盘上安装有 CentOS,另一个磁盘上安装有 Windows 2016。Windows 安装程序会写入 GPT 保护 MBR,但它并不完全遵循 UEFI 标准,如所述这里。它按照标准使用单个分区写入 MBR,但随后将最后一个扇区设为 2^32-1,而不是磁盘的实际大小。

在我尝试使用之前,这不是一个问题磁盘保存分区表并在稍后恢复它。大小的错误数字会造成混乱,最终导致 MBR 损坏。在 CentOS 中,我可以通过以下方式防止这种情况:磁盘分区写入新的保护性 MBR。但是,如果我可以从 Windows 执行此操作,那就方便了。有办法吗?

答案1

由于海报的磁盘只有 1 TB,因此我的以下回答不适用。

我在文章中发现了一个非常令人惊讶的事实 GPT 保护 MBR 和分区表

尽管 UEFI 规范规定对于 2.2 TB 以下的驱动器,应“将其设置为磁盘大小减一”,但 Windows 7 始终用 0xFFFFFFFF 填充该字段。

脚注中指出了这一点:

参考和完整引文:统一可扩展固件接口规范,版本 2.3.1,勘误表 C,2012 年 6 月 27 日,其中第 5 章 GUID 分区表 (GPT) 磁盘布局、第 5.2.3 节保护性 MBR、表 15“SizeInLBA”第 100 页规定:“设置为磁盘大小减一。如果磁盘大小太大而无法在此字段中表示,则设置为 0xFFFFFFFF。”由于 Microsoft 对小于 2.2 TB 的驱动器使用与大于 2.2 TB 的驱动器相同的条目,因此它们不遵循 SizeInLBA 的 UEFI 规范

因此,这是 Microsoft 决定忽略标准的情况,对此你无能为力。解决方案可能是在 Linux 下进行分区分配。

如果您正在寻找 Windows 下的非 Microsoft 实用程序,请参阅文章 最佳免费分区管理软件,其中列出了可能不会忽略标准的免费第三方实用程序。


(旧答案)

我认为您的磁盘必须大于 2.2 TB,这是 MBR 的最大大小。

保护性 MBR(或任何 MBR)的大小都限制为该大小。它无法给出更大的数字,因为 MBR 中包含分区大小的字段只有 32 位。

当大于 2.2 TB 的磁盘进入市场时,这个限制就是 GPT 变得必需的原因之一。

相关内容