gpt4 book ai didi

bios - 如何在 VMDK 文件中找到 MBR 扇区?

转载 作者:行者123 更新时间:2023-12-04 11:23:29 27 4
gpt4 key购买 nike

我试图了解 vmware bios 如何在加载之前找到 MBR。

在物理硬盘中这很容易 - MBR 位于第一个扇区。
但是 .. 在 VM 中会发生什么?

我创建了 2 个 VM - 在第一个 vmdk(安装了基于 linux 的系统)中,我在偏移量 0x2A0000 处找到了 MBR。
在第二个 vmdk 文件(安装了 Windows XP)中,我不止一次发现了 MBR - 但是我发现的所有偏移量都不能除以 512(扇区大小),这有点奇怪(就我而言)知道,MBR 应该从扇区的开头开始 + vmdk 中的扇区大小为 512 字节 => MBR 的起始偏移量必须除以 512。如果我错了,请纠正我)。
所以他们可能是备份的副本我猜..
不用说,xp .vmdk 中的 @ offset 0x2A0000 没什么意思。

那么.. vmware 的 BIOS 如何找到 MBR?此可配置参数位于何处\如何计算?

附加信息:
- 两个 VMDK 都是 1 文件硬盘文件(并且可以增长到 40GB)。

他们服务的系统只使用它们(XP 使用 xp.vmdk,linux 使用 linux.vmdk,没有额外的 VMDK)。

- @Windows VM 我在\.\PhysicalDrive0 上使用 WinHex 来获取 MBR。它看起来不错(签名等)。

- @Linux VM 我使用命令“dd if=/dev/sda of=mbr.bin bs=512 count=1”,然后查看十六进制字节以获取 MBR。我查看它,它看起来很好(GRUB,最后签名等)。

从 VM 获取 MBR 后,我在每个对应的 .vmdk 文件中搜索主机 pc 中的 MBR(使用十六进制编辑器),偏移量如上所述。

任何帮助,将不胜感激。谢谢!

最佳答案

看到有人查看这个问题,但仍然没有评论或答案,所以我自己做了一些研究。
得到以下结论(最终回答了我的问题):

1.当使用VMware(.VMDK文件)创建XXX GB虚拟硬盘时,它可以是两种类型之一:扁平或稀疏(它们也可以拆分为多个.VMDK文件,但我没有在我的研究)。
- flat = 所有硬盘空间 (XXX GB) 在创建时分配一次。
磁盘上的 .VMDK 文件大小为 XXX GB。
- 稀疏 = 硬盘文件是可消耗的(最多 XXX GB)。
.VMDK 文件大小在开始时很小,并在需要时增大。
正如我在附加信息中的问题中所述,两个 .VMDK 都是稀疏的。

2.正如问题中提到的,MBR位于物理硬盘第一个扇区的开头,我想知道它在.VMDK文件中的位置以及VMware如何计算它。
事实证明,在平面 .VMDK 文件中,它也位于第一个扇区的开头!
看着它们时,这是非常直接的前言……但我的并不平坦。那么,稀疏的 .vmdk 会发生什么? mbr在哪里?
3.sparse .vmdk 文件有不同的结构(详细结构可以阅读 VMware's Virtual Disk Format Spec,重点在第 6 页 - struct SparseExtentHeader。
在那里找不到如何计算 MBR\第一个扇区的逻辑,但据我所知(在 5 中解释了我是如何做到的)它是这样的:
@ .VMDK 偏移量 0x38 - 0x3F(8 字节长)位于 gdOffset。它存储元数据的偏移量(****)。
元数据的前 4 个字节是下一个要跳转到的偏移量(****)。
在那里,接下来的 4 个字节是 MBR 的偏移量(****)。
(****) 表示扇区偏移。例如1 表示偏移 512,2 表示 1024,等等。
总结一下,它看起来像这样:
假设“数据存储在偏移量 0x38-0x3F(8 字节长)”为 [(0x38):8]。
然后,MBR 偏移 = 512 X [(512 X [(512 X [(0x38):8]):4]):4]
4.我用稀疏的 .VMDK 创建了 2 个新的 VM(Windows xp 和 Linux),这种 MBR 计算方法也证明了它们的适用性(如您在 7 处的附加图像中所见)。
5. 我是如何得到这个公式的?使用 SysInternal's process Monitor过滤时:
-进程包含vmware
- 操作是 CreateFile\ReadFile
-Path 包含 <.vmdk 文件路径>
我读取了每个 .vmdk(并且是偏移量)。
我查看了它在哪里读取 MBR 的偏移量(在 Linux 系统中我知道偏移量是 0x2A0000),以及它之前已经读取的内容。跳转到看起来他们会帮助我弄清楚那里发生了什么的偏移量..他们确实做到了:)
6.我没有解释的是为什么我原来的问题中xp系统中的MBR在一个奇怪的偏移处(不能被512整除)。
好吧,老实说,我没有充分的理由,但我忘了提及,在 MBR 检查之前,我从该系统中删除了原始 MBR 并为 VM 供电。它问我是否要正常启动windows,然后它才出现在奇怪的偏移量中(将其复制到那里备份或其他东西)。这里奇怪的是我在正常偏移量中找不到这个MBR。我取得了一些进展,但没有明确的答案。
如果有人知道,请随时发表评论(:

7.附图:
Windows XP MBR finding explanation
Linux MBR finding explanation

关于bios - 如何在 VMDK 文件中找到 MBR 扇区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com