【问题标题】:how to differentiate between GPT dynamic and GPT basic disk in a virtual machine programatically如何以编程方式区分虚拟机中的 GPT 动态磁盘和 GPT 基本磁盘
【发布时间】:2014-08-23 17:14:33
【问题描述】:

最近我必须找到一种方法来区分虚拟机使用的分区类型,从虚拟磁盘读取原始数据我能够通过检查偏移量 1C2(GPT 的情况下为 EE)找到它,以防万一如果磁盘是动态的,则 MBR 磁盘的偏移量 1C2 为 42,而对于基本磁盘,相同的 1C2 偏移量为 07,这意味着基本磁盘,现在如果它是 GPT 磁盘,我如何区分基本磁盘和动态磁盘。

提前致谢。

【问题讨论】:

  • 仅供参考,这与 C++ 或 C 无关。虚拟机的检测与语言无关。
  • 嗨,Thomas 感谢您的信息,我正在使用 C++ 解决这种情况,这就是我试图传达的内容。

标签: c++ linux windows mbr virtual-disk


【解决方案1】:

在为 GPT 磁盘迭代 GPT 分区表条目时,搜索“分区类型 GUID”设置为 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 的条目以及该条目对应的隐藏“属性”(位 62)应该设置。该 PTE 将用于 LDM 数据库。除此之外,LDM 本身应该还有一个分区表条目。所以总的来说,这个场景有 2 个分区表条目,一个用于 LDM 数据库(隐藏分区),另一个用于 LDM。

【讨论】: