Linux挂载多分区的img镜像文件

简介

有时候想挂载一个img镜像文件到系统目录,发现无法挂载。使用fdisk命令查看镜像结构 发现有多个分区,这个时候需要将所有分区映射为设备文件后才可以挂载。这个用处好像不太多 这个问题是当时为了修改树莓派的ubuntu镜像文件才用的。或者想自己制作一个linux启动镜像的时候可以玩玩。

环境

当然是在linux下进行操作了

步骤

先看看loop设备已经映射了哪些镜像

1
losetup -a

将loop设备和img镜像绑定

1
losetup /dev/loop0 ubuntu-16.04.3.img

将loop0的所有分区映射出来

1
kpartx -av /dev/loop0
root@ubuntu-Lenovo:/home/ubuntu# kpartx -av /dev/loop0 
add map loop0p1 (253:0): 0 262144 linear 7:0 8192
add map loop0p2 (253:1): 0 7540736 linear 7:0 270336

将用到的分区挂载到目录

1
mount /dev/mapper/loop0p2 /mnt/pi/

需要注意的是映射的设备文件在/dev/mapper/目录下

卸载

1
2
umount /mnt/pi/
losetup -d /dev/loop0

后记

img镜像里面装个系统 就可以使用qemu等虚拟机启动了 挺好玩的
如果遇到无法umount的问题 可以直接使用 fuser -ka /mnt/pi/ 强制卸载