在做实验关于Qt raspberry时
https://wiki.qt.io/Raspberry_Pi_Beginners_Guide
解析命令知识点
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断掉和映像文件的挂接关系