8

I have taken a complete image of a hard drive using:

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

It would seem to me, that I should be able to re-size the partitions within it after suitably mounting it.

As I am less than familiar with the command line parted, I tried:

gparted /home/user/harddriveimg

While this loaded the partition table, it couldn't find the partitions themselves, e.g. harddriveimg0.

Is it possible to modify an image file like this, without writing it back to some disk, and if so how? I would be perfectly happy with a solution that uses only terminal commands.

4
  • 1
    If you want to access individual partitions from your disk image file as block devices (in order to, e.g., mount them), look into kpartx.
    – Celada
    Dec 26, 2012 at 21:11
  • @Celada, That looks like a good solution! Is kpartx just a wrapper for partx?
    – Timesquare
    Dec 26, 2012 at 21:28
  • I believe that partx only works with real disks, because it uses the kernel-based partition detection magic whereas kpartx uses device-mapper, a generic and more powerful mechanism for creating block devices in the kernel.
    – Celada
    Dec 26, 2012 at 21:40
  • @Celada, kpartx does not use the kernel for partition table detection, but it does inform the kernel about them so it requires a partionable device, such as a loop device.
    – psusi
    Dec 26, 2012 at 23:38

1 Answer 1

3

You need to associate a loopback device with the file:

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

Then run gparted on that.

6
  • This, unfortunately does not work. Gparted is still looking for /dev/loop0p1 for the first partition listed in the partition table and so on.
    – Timesquare
    Dec 27, 2012 at 15:39
  • @Timesquare, then it appears that your libparted is broken. What version are you using and what distribution?
    – psusi
    Dec 27, 2012 at 16:31
  • My libparted version is 2.0.0 on Archlinux. I believe the issue is in Gparted's method of picking the block device that is associated with a given partition record. (Gparted is version 0.14.1)
    – Timesquare
    Dec 27, 2012 at 23:50
  • @Timesquare, no, that is the correct block device for the partition. You need parted 3.0 or later.
    – psusi
    Dec 28, 2012 at 0:31
  • If I understand what you are saying correctly, the problem lies elsewhere. After using losetup as you suggested, the block devices /dev/loop0p1, /dev/loop0p2... do not exist.
    – Timesquare
    Dec 28, 2012 at 1:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .