如何挂载磁盘映像?


26

我有一个myimage.disk包含分区表和主分区(即FAT32文件系统)的磁盘映像。认为这是USB笔图像。

我想将主分区安装到本地目录。我知道如何使用循环工具挂载分区映像,但是这里有磁盘映像。我的猜测是我必须挂载映像“跳过”分区表,但是我该怎么做呢?


7
另请参见superuser.com/questions/117136/…您可能只想在losetup --partscan --find --show disk.img其后使用mount /dev/loop0p1 /mnt/disk
Flow

Answers:


44

kpartx工具使此操作更加容易。它在/ dev / mapper中为映像中的每个分区创建循环设备。然后,您可以安装与所需分区相对应的环路设备,而无需手动计算偏移量。

例如,要挂载磁盘映像的第一个分区:

kpartx -a -v myimage.disk
mount /dev/mapper/loop0p1 /mnt/myimage

完成图像处理后,请删除循环设备:

umount /mnt/myimage
kpartx -d -v myimage.disk

另外,如果您使用的是新内核,并且在启动时(如果内置了循环)或在modprobe(如果循环是一个模块)上传递loop.max_part = 63,则可以这样进行:

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

1
您不需要-o loop上面的设备,/dev/mapper/loop0p1它已经是一个块设备(在循环设备顶部的映射器设备,您不希望在其之上的另一层循环设备)。
2014年

2
如果/dev/loop0p1在运行后没有获得分区设备(等)losetup,请运行partprobe /dev/loop0
弗拉基米尔·潘捷列夫(Fladimir Panteleev)

kpartx似乎默认安装在Linux Mint 18中
。– unfa

4

发现了这一点:

http://www.andremiller.net/content/mounting-hard-disk-image-includes-partitions-using-linux

这似乎正是我想要的。

这是关键部分:

mount -o loop,ro,offset=32256 hda.img /mnt/rabbit

其中offset的值以字节为单位。建议的获取偏移量的方法是指向parted图像,然后是B字节,然后从打印输出中获取起始值。或者,假设您有磁盘空间,请执行以下操作:一旦有了偏移量和大小,只需dd将每个分区提取到一个单独的文件中即可。


1
要写出一个非常好的答案,您能在这里解释最重要的部分吗?拥有链接很棒,但是最好在此处获取信息。
slhck 2011年

1
这是关键部分:mount -o loop,ro,offset=32256 hda.img /mnt/rabbit,其中的值offset以字节为单位。建议的获取偏移量的方法是将分割点指向图像,然后unit B获取字节并startprint输出中获取值。或者,假设您有磁盘空间,请执行以下操作:一旦有了偏移量和大小,只需dd将每个分区提取到一个单独的文件中即可。
的CVn

是的,太短了,很抱歉。正如Michael所指出的,相关部分当然是mount包含offset选项的行。
Emiliano

2
local_image_file=/var/tmp/image.img
first_byte=$(parted -m ${local_image_file} unit B print | grep Linux | cut --fields 2 --delimiter ':' | sed 's/.$//')
loop_file=/var/tmp/loop
mkdir -p ${loop_file}
mount -o loop,ro,offset=${first_byte} ${local_image_file} ${loop_file}

1
尽管这可以回答问题,但是如果您可以提供解释为什么会这样做会更好。
DavidPostill

2

如今,您可以使用来最大程度地减少工作量udisks。来自ArchWiki的解决方案:udisks-安装循环设备

要轻松挂载ISO映像,请使用以下命令:

udisksctl loop-setup -r -f image.iso

这将创建一个循环设备,并显示准备安装的ISO映像。卸载后,循环设备将被udev终止。

-r 那里是只读选项。


太棒了,谢谢您提供的信息。疯狂,这是我第一次找到udisksctl
Oxwivi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.