- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解 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.附图:
关于bios - 如何在 VMDK 文件中找到 MBR 扇区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804124/
我在 Mac 10.6.6 上使用 VM Ware Fusion 3.1.2。我创建了一个 Windows 7 镜像,但是当我检查构成该镜像的文件时,有 21 个“范围”文件——例如名称类似的文件 W
谁能帮我解决这个错误!!! 以下是我的机器上安装的版本: Vagrant 2.2.0 虚拟框:5.0.16r105871 gem :2.7.5 Chef 开发套件版本:2.0.28 PS C:\ngi
谁能帮我解决这个错误!!! 以下是我的机器上安装的版本: Vagrant 2.2.0 虚拟框:5.0.16r105871 gem :2.7.5 Chef 开发套件版本:2.0.28 PS C:\ngi
VirtualBox 能够压缩(减小尺寸).vdi图像,但不能使用 .vmdk磁盘镜像。但是我们可以压缩.vmdk文件,如果我们: 分离 转换为 .vdi 紧凑型 转换回 .vmdk 再次连接到原来的
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
有人在将 VMDK 文件转换为 qcow 格式时遇到以下问题吗? Write failed to dstDisk [####] server1/server1.vmdk curSector 14679
我试图了解 vmware bios 如何在加载之前找到 MBR。 在物理硬盘中这很容易 - MBR 位于第一个扇区。 但是 .. 在 VM 中会发生什么? 我创建了 2 个 VM - 在第一个 vmd
我有一台 MacBook Air,空间很宝贵。我有一个 vagrant 实例,它的大小从 2 GB 增加到 8 GB。 我在寻找减少磁盘大小的选项时发现了一些 VDI 教程,但实际文件是 .vmdk
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我尝试使用 yocto sumo 构建一个自定义 linux 发行版,其中将包括 docker。我下载了 yocto 核心,并添加了元虚拟化层(来自 sumo 分支)。我能够成功构建和运行它。问题是我
有什么方法可以从 Python 查看 vmdk 文件的内容,并能够从中读取文件? (我不需要写信给它)。如果没有,是否有任何方法可以在主机上挂载 vmdk 文件,或者通常有任何其他方法可以在不将 vm
我已经使用以下命令将 VMDK 文件上传到 S3 存储桶: s3cmd put /root/Desktop/centos-ldaprad.vmdk --multipart-chunk-size-mb=
我有一个由 Vmware Station 创建的虚拟机并使用了 vmdk 驱动器。然后在Ubuntu系统下通过guestmount将vhdx文件挂载到一个目录下。一切正常,我可以通过挂载目录访问 vm
任何人都可以指点我一些有关如何使用 Iso 创建 Vmware 环境的文档。 例如,有一个人制作了自己的 Ubuntu 版本,并添加了大量额外的程序。在尝试之前,我将使用 vmware 服务器对其进行
尽管 ec2-import-instance 工具支持 vmdk 磁盘格式,但每次尝试在 vmdk 文件上运行该命令时,都会出现以下错误: ERROR: File uses unsupport
我有一些旧 Linux 文件系统的平面文件格式的旧镜像。 Bochs 可以使用它们,但我需要用 Virtual Box 运行它们。 Virtual Box 无法使用这种格式的图像,因此我需要将这些图像
希望有人可以帮助我。确实需要回去工作。 今天早上,我的 120GB MacBook Air 已满,系统提示我删除一些文件。本周我一直在另一台虚拟机上使用 Kali,因此决定删除它以继续开发我的 Lar
我正在尝试使用 ovftool 将 vmdk 文件转换为 ova 这是我输入的命令。 C:\Program Files\VMware\VMware OVF Tool>ovftool -st=vmdk
我试图通过使用以下命令在 linux mint 中使用 poweriso 提取 vmdk 文件, poweriso extract sample-disk1.vmdk / -od /home/loca
我正在尝试使用 Pyvmomi 创建一个新的虚拟机。我成功创建了带有 RAM 和 CPU 的虚拟机,但我找不到有关如何创建带有附加磁盘的虚拟机的文档。我希望创建一个具有 20GB 精简配置 HDD 的
我是一名优秀的程序员,十分优秀!