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

Del*_*ted 47 linux mount disk-image

我有一个使用dd创建的整个磁盘的图像。磁盘结构如下:

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
Run Code Online (Sandbox Code Playgroud)

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

dd if=/dev/sda of=image750.img
Run Code Online (Sandbox Code Playgroud)

如果可能,我将如何从图像挂载 /dev/sda1 以便我能够读取内容?

再次克隆硬盘不是一种选择,如果我只克隆了单个分区,我知道该怎么做。我希望当前图像仍然可以。

bhe*_*elm 67

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

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

mount /dev/loop0p1 /mnt
Run Code Online (Sandbox Code Playgroud)

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

losetup -d /dev/loop0
Run Code Online (Sandbox Code Playgroud)

  • 在我的 Ubuntu 14.04 安装中,lostup 不提供 --partscan 选项。 (8认同)

小智 14

我今天遇到了这个问题,想更新答案,作为对自己的提醒。您可以使用从 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
Run Code Online (Sandbox Code Playgroud)

其中 loop1p1 代表第一个分区,loop1p2 代表第二个,依此类推。


bau*_*art 8

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

mount -o loop,offset=2560 -t auto /path/to/image.dd /mount/point
Run Code Online (Sandbox Code Playgroud)


Jou*_*eek 7

我相信循环安装就是答案 -

sudo mkdir /path/to/dir/
mount -o loop example.img /path/to/dir/
Run Code Online (Sandbox Code Playgroud)

上面应该将其安装在该目录下。

这应该卸载它:

umount /path/to/dir
Run Code Online (Sandbox Code Playgroud)


小智 5

Loopmounting 只是答案的一部分。

查看http://wiki.edseek.com/guide:mount_loopback#accessing_specific_partitions_in_the_image以获取有关指定分区的帮助。我认为mount -o loop,offset=32256 /path/to/image750.img /mnt 对你有用。但你真的应该阅读提到的教程。