myimage.disk
我有一个包含分区表和主分区(即 FAT32 文件系统)的磁盘映像。将其视为 USB 笔映像。
我想将主分区挂载到本地目录。我知道如何使用循环实用程序挂载分区映像,但这里我有磁盘映像。我猜我必须“跳过”分区表来挂载映像,但我该怎么做呢?
答案1
kpartx 工具使此操作更加简单。它会在 /dev/mapper 中为映像中的每个分区创建循环设备。然后,您可以挂载与所需分区相对应的循环设备,而无需手动计算偏移量。
例如,要挂载磁盘映像的第一个分区:
kpartx -a -v myimage.disk
mount /dev/mapper/loop0p1 /mnt/myimage
处理完图像后,删除循环设备:
umount /mnt/myimage
kpartx -d -v myimage.disk
或者,如果您有一个较新的内核,并在启动时传递 loop.max_part=63(如果 loop 是内置的)或 modprobe(如果 loop 是一个模块),那么您可以这样做:
losetup /dev/loop0 myimage.disk
partprobe /dev/loop0 # Re-read partition table if /dev/loop0 was used with a different image before
mount /dev/loop0p1 /mnt/myimage
循环结束后:
losetup -d /dev/loop0
答案2
发现了这个:
http://www.andremiller.net/content/mounting-hard-disk-image- including-partitions-using-linux
这正是我所寻找的。
以下是关键部分:
mount -o loop,ro,offset=32256 hda.img /mnt/rabbit
其中偏移量的值以字节为单位。建议的获取偏移量的方法是指向parted
图像,然后指向字节的单元 B,并从打印输出中获取起始值。作为替代方案,假设您有磁盘空间,请执行显而易见的操作:一旦您有了偏移量和大小,只需使用将dd
每个分区提取到单独的文件中。
答案3
如今,您可以使用 来减少工作量udisks
。解决方案来自ArchWiki:udisks - 挂载循环设备
要轻松挂载 ISO 映像,请使用以下命令:
udisksctl loop-setup -r -f image.iso
这将创建一个循环设备并显示已准备好挂载的 ISO 映像。一旦卸载,循环设备将被 udev 终止。
-r
那里有只读选项。