Mik*_*her 20 partition virtual-machine hard-disk virtualbox
我有一个使用dd if=/dev/sdXN of=image.bin
. 现在我想使用这个镜像作为虚拟机的基础。我知道如何将图像转换为 VirtualBox 可以使用的格式。
问题是“磁盘”映像实际上只是一个分区的映像,因此不包含 MBR 或分区表。这使得启动虚拟机变得非常困难。
给定分区映像,是否有一种简单的方法来创建适当的磁盘映像,包括分区表?
mgo*_*ven 13
您可以在主机上执行此操作。大多数工具fdisk
都会对文件进行操作,并kpartx
允许您访问文件中的分区。
创建一个新的空 100GiB 稀疏图像(使其略大于分区图像的大小)
dd if=/dev/zero of=myvm.img bs=1G count=0 seek=100
Run Code Online (Sandbox Code Playgroud)将图像文件分区 fdisk
fdisk myvm.img
Run Code Online (Sandbox Code Playgroud)使映像文件中的分区可用是单个设备
sudo kpartx -a myvm.img
Run Code Online (Sandbox Code Playgroud)将分区镜像复制到分区中
sudo cp image.bin /dev/mapper/loop0p1
Run Code Online (Sandbox Code Playgroud)扩展文件系统以填充整个分区
sudo resize2fs /dev/mapper/loop0p1
Run Code Online (Sandbox Code Playgroud)关闭分区
sudo kpartx -d myvm.img
Run Code Online (Sandbox Code Playgroud)拆除环回装置
sudo losetup -D
Run Code Online (Sandbox Code Playgroud)小智 9
我确定最初的问题很久以前就已经解决了,但是对于任何有类似问题的人:
避免复制整个映像的一种方法是创建一个 .vmdk 格式的映像,该映像引用分区表和分区内容的单独区文件。
我在不久前进行的测试中的 .vmdk 文件中有这个片段:
RW 63 FLAT "parttable.bin" 0
RW 585937489 FLAT "partition-image.bin" 63
Run Code Online (Sandbox Code Playgroud)
这意味着从偏移量 0 开始的 63 个扇区是从原始文件“parttable.bin”读取的,但扇区 63 及以上来自原始分区转储“partition-image.bin”。(当然,用第一个分区的实际偏移量替换 63,现在通常是 2048)。
最终的结果是,从 VBox 内部,看起来您已经将分区表放在分区映像的前面,而无需进行冗长的复制操作。
从 VM 内对驱动器进行分区,如果您的偏移量正确,您应该会在新创建的分区内看到您的分区映像内容。
归档时间: |
|
查看次数: |
14812 次 |
最近记录: |