我最近从磁盘分区进行了 dd 操作。我想用它作为虚拟机中的磁盘。我不能,因为磁盘没有分区表。
我可以有一个循环设备的分区表吗?如何?
显然这里也存在类似的问题。如果有人知道如何在不复制所有数据的情况下做到这一点,那就太好了。
我做到了 dd if=/dev/sda1 of=myfile
我无法复制完整的 sda 磁盘,因为它太大了。
答案1
如果您仍然拥有原始驱动器,请删除该映像并使用以下命令重新创建它:
dd if=/dev/sda1 of=myfile bs=512 seek=2048
这将在开始时留下通常的 1 MiB 空间,以便稍后添加分区表。
您可能还想考虑使用 qcow2 作为图像,而不是使用包含未使用块中的所有垃圾的完整原始图像文件。
答案2
像这样的东西吗?
sda1_size=$((`blkdev --getsize64 /dev/sda1`/1024/1024+1))
dd if=/dev/sda of=myfile bs=1M count=$(($sda1_size+1))
对整个 sda 启动 dd,但仅复制直至覆盖第一个分区。通过在计数中添加 +1 MiB 来实现。这是假设 sda1 位于磁盘的最开始处。如果存在大于 1MiB 的空白,请添加+1 以上。
除了数学之外,您还可以在任何分区程序中查看分区有多大(以 MiB 为单位),然后慷慨地添加一点。