如何将 ms-dos 分区表添加到循环设备?

如何将 ms-dos 分区表添加到循环设备?

我最近从磁盘分区进行了 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 为单位),然后慷慨地添加一点。

相关内容