我有一个原始磁盘上 /dev/sda1 分区的 dd 映像。
我需要在 VDI 上创建一个 VirtualBox 机器,该 VDI 应包含一个分区 /dev/sda1 和一个用于安装 GRUB 引导加载程序的 MBR。
VBoxManage 似乎导入了它,它是可读的,但它是直接在 /dev/sda 中的 ext4 文件系统,而不是 /dev/sda1。
以 dd 映像的 /dev/sda1 副本和 VDI 中的 MBR 结束的步骤是什么?
答案1
由于您使用的是 Linux,我将在那里概述该过程,使用 VM 的原始映像文件:
创建一个比现有 dd 图像稍大(几个扇区就足够了)的新图像文件。
循环挂载该映像文件。这将创建一个新的块设备,例如
/dev/loop0
(您可能必须使用类似partx
或的东西partprobe
来让内核知道新的块设备)。对新映像进行分区,例如使用 fdisk (类似
fdisk /dev/loop0
)。确保 (唯一) 分区的大小与您拥有的 dd 映像的大小完全相同。再次输入类似
partx
或 的partprobe
命令,让内核知道新分区。这将创建一个新的块设备,例如/dev/loop0p1
,代表映像文件中的新分区。将您拥有的 dd 映像复制到新分区(例如
dd if=... of=/dev/loop0p1 bs=1M
)。
现在您有一个原始磁盘映像文件,其中包含有效的分区表和一个具有原始 dd 映像的精确内容的分区,这正是您所要求的。
当然,请不要忘记在启动使用该磁盘映像的虚拟机之前卸载该磁盘映像。
对于其他磁盘映像格式,该过程基本相同,只要您能以某种方式(循环)安装该格式,以便它们可以用块设备表示即可。例如,使用qemu-nbd
和就可以做到这qcow2
一点。不过,我不能谈论 VirtualBox 特定的格式,因为我不了解 VirtualBox。