如何在具有空 MBR 和分区的 VDI 中还原 dd 分区映像

如何在具有空 MBR 和分区的 VDI 中还原 dd 分区映像

我有一个原始磁盘上 /dev/sda1 分区的 dd 映像。

我需要在 VDI 上创建一个 VirtualBox 机器,该 VDI 应包含一个分区 /dev/sda1 和一个用于安装 GRUB 引导加载程序的 MBR。

VBoxManage 似乎导入了它,它是可读的,但它是直接在 /dev/sda 中的 ext4 文件系统,而不是 /dev/sda1。

以 dd 映像的 /dev/sda1 副本和 VDI 中的 MBR 结束的步骤是什么?

答案1

由于您使用的是 Linux,我将在那里概述该过程,使用 VM 的原始映像文件:

  1. 创建一个比现有 dd 图像稍大(几个扇区就足够了)的新图像文件。

  2. 循环挂载该映像文件。这将创建一个新的块设备,例如/dev/loop0(您可能必须使用类似partx或的东西partprobe来让内核知道新的块设备)。

  3. 对新映像进行分区,例如使用 fdisk (类似fdisk /dev/loop0)。确保 (唯一) 分区的大小与您拥有的 dd 映像的大小完全相同。

  4. 再次输入类似partx或 的partprobe命令,让内核知道新分区。这将创建一个新的块设备,例如/dev/loop0p1,代表映像文件中的新分区。

  5. 将您拥有的 dd 映像复制到新分区(例如dd if=... of=/dev/loop0p1 bs=1M)。

现在您有一个原始磁盘映像文件,其中包含有效的分区表和一个具有原始 dd 映像的精确内容的分区,这正是您所要求的。

当然,请不要忘记在启动使用该磁盘映像的虚拟机之前卸载该磁盘映像。

对于其他磁盘映像格式,该过程基本相同,只要您能以某种方式(循环)安装该格式,以便它们可以用块设备表示即可。例如,使用qemu-nbd和就可以做到这qcow2一点。不过,我不能谈论 VirtualBox 特定的格式,因为我不了解 VirtualBox。

相关内容