Linux挂载img磁盘镜像文件
最近在折腾树莓派。从官方网站下载下来的#HREF"https://downloads.raspberrypi.org/raspbian/images/raspbian-2015-05-07/2015-05-05-raspbian-wheezy.zip"#-HREF12015-05-05-raspbian-wheezy.zip#-HREF2中的2015-05-05-raspbian-wheezy.img,把它用dd命令写入SD卡后,SD卡就有两个分区,一个是/boot,一个是/。所以可以得知,这个img文件其实就是一个磁盘镜像文件。
现在我有一个需求,就是不写入SD卡,就查看这个磁盘镜像文件中到底有哪些文件。大致想到的办法就是mount挂载。但是到底怎么挂载呢?
其实,挂载一个img磁盘镜像是分为两步的:
1、使用fdisk命令得知这个img磁盘镜像中各个分区的起始位置,也就是偏移量;
2、使用mount把磁盘镜像以回环设备的形式挂载到文件系统的某个目录上,需要指定分区的偏移量。
假设2015-05-05-raspbian-wheezy.img已经存在于/home/zjs目录下。
可以查看这个回环设备的分区信息:
+++code
cd ~
sudo fdisk -lu 2015-05-05-raspbian-wheezy.img
---code
运行结果如下:
1.jpg
可以得知第一个分区的起始位置是在整个磁盘的第8192扇区(从0计数),而每一个扇区大小是512字节,所以,第一个分区的偏移量是8192*512=4194304。
其实,如果你预先已经知道了各个分区的偏移量,那么之前的这些操作都可以跳过,直接进行下面的操作。上面的这些操作,就是为了获知分区的偏移量的。
为了挂载第一个分区,使用如下命令:
+++code
mkdir myloop1
sudo mount -o loop,offset=4194304 2015-05-05-raspbian-wheezy.img myloop1
---code
执行之后,img文件中的第一个分区就已经挂载在了myloop1目录上了。挂载第二个分区也是类似的。