如何挂载用 dd 创建的 sd 卡映像?

MrD*_*MrD 25 mount dd sd-card

我使用以下命令创建了我的 Raspberry Pi SD 卡的映像dd

sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img
Run Code Online (Sandbox Code Playgroud)

SD 卡包括两个分区(一个 vfat,一个 ext4),当我插入卡时会自动挂载。

我的问题:如何从 .img 文件挂载这些分区?


更多细节:

$ fdisk -l raspberry-backup-2014-04-10.img 

Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb

                          Device Boot      Start         End      Blocks   Id  System
raspberry-backup-2014-04-10.img1            8192      122879       57344    c  W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2          122880     7761919     3819520   83  Linux
Run Code Online (Sandbox Code Playgroud)

For*_*age 42

为避免需要为每个分区创建单独的映像或安装类似 的实用程序kpartx,您可以通过offsetmount命令中指定 来单独挂载每个分区。

首先检查映像文件中的分区并使用fdisk以下命令确定偏移量:

$ fdisk -u -l rpi_image280914 

Disk rpi_image280914: 16.0 GB, 16012804096 bytes
255 heads, 63 sectors/track, 1946 cylinders, total 31275008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000cdac7

           Device Boot      Start         End      Blocks   Id  System
rpi_image280914p1   *        2048      514047      256000    c  W95 FAT32 (LBA)
rpi_image280914p2          540672    31242239    15350784   83  Linux
Run Code Online (Sandbox Code Playgroud)

Start您想要的分区的扇区并将该值乘以Units大小。所以如果你想要第二个分区,你会得到540672 * 512 = 276824064.

现在创建一个文件夹并挂载分区:

mkdir rpi_partition2
sudo mount -o loop,offset=276824064 rpi_image280914 rpi_partition2/
Run Code Online (Sandbox Code Playgroud)

完成对分区数据的操作后:

sudo umount rpi_partition2/
rm -r rpi_partition2/
Run Code Online (Sandbox Code Playgroud)


MrD*_*MrD 22

经过一些附加测试后,我自己找到了解决方案: kpartx

sudo kpartx -a raspberry-backup-2014-04-10.img
Run Code Online (Sandbox Code Playgroud)

此命令创建/dev/mapper/loop0p1/dev/mapper/loop0p2。之后这些分区可以直接安装:

sudo mount -o rw -t ext4 /dev/mapper/loop0p2 mount_target/
Run Code Online (Sandbox Code Playgroud)