如何调整完整硬盘映像中分区的大小?


8

我使用以下方法拍摄了完整的硬盘驱动器图像:

dd if=/dev/sda of=/home/user/harddriveimg bs=4M

在我看来,在适当安装后,我应该能够重新调整其中的分区大小。

由于我不熟悉命令行分离,因此我尝试了以下操作:

gparted /home/user/harddriveimg

在加载分区表时,它找不到分区本身,例如,harddriveimg0。

是否可以像这样修改映像文件,而无需将其写回到某些磁盘上?对于仅使用终端命令的解决方案,我将感到非常满意。


1
如果要从磁盘映像文件中访问单个分区作为块设备(例如,将其挂载),请查看kpartx
Celada 2012年

@Celada,这看起来是个不错的解决方案!kpartx只是partx的包装吗?
Timesquare 2012年

我相信这partx仅适用于实际磁盘,因为它使用了基于内核的分区检测魔术,而kpartx使用了设备映射器,后者是一种在内核中创建块设备的通用且功能更强大的机制。
Celada

@Celada,kpartx不使用内核来进行分区表检测,但是会通知内核有关它们的信息,因此它需要可分配的设备,例如循环设备。
psusi 2012年

Answers:


3

您需要将回送设备与文件关联:

sudo losetup /dev/loop0 /home/user/harddriveimg

然后在上面运行。


不幸的是,这是行不通的。Gparted仍在为分区表中列出的第一个分区寻找/ dev / loop0p1,依此类推。
Timesquare 2012年

@Timesquare,那么看来您的libparted已损坏。您正在使用什么版本以及什么发行版?
psusi 2012年

我的libparted版本是Archlinux上的2.0.0。我相信问题出在Gparted选择与给定分区记录相关联的块设备的方法中。(Gparted版本为0.14.1)
Timesquare 2012年

@Timesquare,不,那是该分区的正确块设备。您需要parted 3.0或更高版本。
psusi 2012年

如果我理解您的说法正确,那么问题就出在其他地方。按照您的建议使用Lostup之后,块设备/ dev / loop0p1,/ dev / loop0p2 ...不存在。
Timesquare 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.