如何在 Linux 下从 dd 创建的块设备(例如 HDD)映像挂载分区?

如何在 Linux 下从 dd 创建的块设备(例如 HDD)映像挂载分区?

我有使用以下方法创建的整个磁盘的映像.磁盘结构如下:

kent@cow:~$ sudo fdisk -l

Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b8508

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           5       90872   729929303+  83  Linux
/dev/sda2           90873       91201     2642692+   5  Extended
/dev/sda5           90873       91201     2642661   82  Linux swap / Solaris

该图像是使用以下方法创建的:

dd if=/dev/sda of=image750.img

如果可能的话,我该如何从映像中挂载 /dev/sda1 以便能够读取内容?

再次克隆硬盘不是一个选项,如果我只克隆单个分区,我知道如何操作。我希望当前映像仍然可以实现。

答案1

现在,有了一种更好的方法,不再需要使用偏移量或 kpartx:

losetup --partscan --find --show disk.img

mount /dev/loop0p1 /mnt

要释放 loop0,请在 umount 后使用:

losetup -d /dev/loop0

答案2

我今天遇到了这个问题,想更新一下答案,只是为了提醒自己。你不必自己计算偏移量,而是可以使用一个工具,它可以从 dd 映像中为你提供可挂载的设备:kpartx

http://robert.penz.name/73/kpartx-a-tool-for-mounting-partitions-within-an-image-file/

http://linux.die.net/man/8/kpartx

在给定的情况下,它需要类似

sudo kpartx -a image750.img
sudo mount /dev/mapper/loop1p1 /mount/point -o loop,ro

其中 loop1p1 代表第一个分区,loop1p2 代表第二个分区,等等。

答案3

您已获得第一部分:fdisk -l 查找起始偏移量。取该数字,乘以 512,您将获得要挂载的偏移量选项。因此,对于您的情况中的 sda1,5 * 512 = 2560。然后运行挂载:

mount -o loop,offset=2560 -t auto /path/to/image.dd /mount/point

答案4

循环安装只是答案的一部分。

看着http://wiki.edseek.com/guide:mount_loopback#accessing_specific_partitions_in_the_image寻求有关指定分区的帮助。我思考mount -o loop,offset=32256 /path/to/image750.img /mnt 将适合您。但您确实应该阅读提到的教程。

相关内容