linux下 mount IMG文件提示“您必须指定文件系统类型”

在做实验关于Qt raspberry时

https://wiki.qt.io/Raspberry_Pi_Beginners_Guide

linux下 mount IMG文件提示“您必须指定文件系统类型”_第1张图片

解析命令知识点

1.loop 设备

在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。

它能使我们像块设备一样访问一个文件。

在使用之前,一个 loop 设备必须要和一个文件进行连接。

这种结合方式给用户提供了一个替代块特殊文件的接口。

因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。

上面说的文件格式,我们经常见到的是 CD 或 DVD 的 ISO 光盘镜像文件或者是软盘(硬盘)的 *.img 镜像文件。

通过这种 loop mount (回环mount)的方式,这些镜像文件就可以被 mount 到当前文件系统的一个目录下。

至此,顺便可以再理解一下 loop 之含义:对于第一层文件系统,它直接安装在我们计算机的物理设备之上;而对于这种被 mount 起来的镜像文件(它也包含有文件系统),它是建立在第一层文件系统之上,这样看来,它就像是在第一层文件系统之上再绕了一圈的文件系统,所以称为 loop。

2.获取正确的便宜距离信息 用 fdisk -l;这里面的img信息有两部分

一部分是bootable sector ,

还有一部分是文件系统的 sector.

我们所要mount的是后面一部分。 

2.当我将偏移量错算到位置在first image,所以提示“您必须指定文件系统类型”,修改后正确

实现上面的mount 还有种方法如下

https://blog.csdn.net/qianlong4526888/article/details/8284074

以ubuntu12.04为例:

假设我有个文件test.img,要挂载到/mnt/img文件目录下:

1.创建一个100M大小的映像文件

dd if=/dev/zero of=test.img bs=10m count=100

2.查找空闲的loop设备

losetup -f

操作如下:

$ cd “你的img镜像所在目录”

首先要查看你的loop 设备的存在,即这里的/dev/loop0

$ losetup /dev/loop0 test.img   //如果提示loop0忙的话,尝试loop1等等

$ sudo kpartx -av /dev/loop0 //如果没有装kpartx的话,apt-get装一下
add map loop0p1 (254:0): 0 9783522 linear /dev/loop0 63
add map loop0p2 (254:1): 0 11181240 linear /dev/loop0 9783585
$ sudo mount /dev/mapper/loop0p1 /mnt/img  //这里的loop0后面的p1代表你的img文件的//分区,从1开始数,如果有两个分区则是//loopXp1,loopXp2,其中X代表上面命//令“ losetup /dev/loop0 test.img” 中你挂载到//哪个loop下。

至于出现“您必须制定文件系统类型”是因为:你的img镜像中有mbr,也就是有引导信息,以致于系统无法识别。img文件相当于一个包含操作系统的硬盘,我们只需要挂载它的文件系统部分,所以需要绕过mbr。以上命令就能帮你绕过mbr,直接挂载文件系统。

按照上面的命令,如果你的img中有mbr,则挂载的是mbr分区,如果想只挂载文件系统部分,将最后一条命令改为:

$ sudo mount /dev/mapper/loop0p2 /mnt/img 

当然,如果挂载到到同一目录下,需要先执行$ umount /mnt/img,再次执行以上mount命令就可以了。

用完映像文件的文件系统后,想退出的话,可以使用 kpartx -dv /dev/loopX 写卸载刚才挂接的东西。

然后再使用losetup -d /dev/loopX断掉和映像文件的挂接关系

 

你可能感兴趣的:(树莓派)