![如何创建没有未分配空间的 HDD 映像?](https://linux22.com/image/1571637/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E6%B2%A1%E6%9C%89%E6%9C%AA%E5%88%86%E9%85%8D%E7%A9%BA%E9%97%B4%E7%9A%84%20HDD%20%E6%98%A0%E5%83%8F%EF%BC%9F.png)
我需要将这个包含 Windows 安装的 HDD 转换为 *.vdi,以便创建没有未分配空间的可启动 *.img。
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 718847 716800 350M 7 HPFS/NTFS/exFAT
/dev/sdb2 718848 105582591 104863744 50G 7 HPFS/NTFS/exFAT
但是使用VBoxManage convertfromraw /dev/sdb2
会创建一个动态大小的 vdi,但其最大值不可更改,为 223 GB。VBoxManage modifyhd --resize
根本无法减小大小,VBoxManage modifymedium --compact
也无法更改它。经常使用 sdelete 写入零(如建议的那样)是不适用的,因为它是未分配的空间。
dd
按建议使用在 Server Fault 上的这个主题中通过创建两个图像并在稍后合并它们,会产生不可启动的图像。
那么如何排除源硬盘的未分配空间呢?
答案1
由于这两个分区均位于磁盘的前部,因此您只需对磁盘的该部分进行映像即可。
尝试使用dd
:
dd if=/dev/sdb of=image.dd bs=4M count=54058286592 iflag=count_bytes
这里,count
等于要映像的字节数 - 分区 2 的末尾,×512(扇区的大小)。
为了允许更大的块大小(增加传输速率),您必须指出您的count
论点是“字节“ 并不是 ”输入块“ (默认情况下) - 使用iflag=count_bytes
。