把一个img文件挂载成一个文件系统,修改树莓派的镜像文件

这里不仅仅是针对树莓派,还有其他的系统也可以使用。

前言:

因为工作需要,现在需要对树莓派的镜像做一个修改。
这里有一个难点就是我这个镜像修改之后,是可以拷贝给其他人直接使用的。所以,第一步我不能直接把镜像直接拷贝到u盘/cf卡之类的存储空间上。因为一旦启动,系统本身会做一些分区,并且这个镜像将无法闭合。这个时候,就需要在不拷贝的情况下,把镜像挂载成一个虚拟系统,直接进行修改。修改之后保存退出,让修改生效。这里,我只测试了ubuntu系统,正常linux系统应该都能使用,其他发行版未测试。

这里需要一个指令:
loseup

losetup命令用于设置循环设备。
循环设备可把文件虚拟成区块设备,籍以模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。

这里我们可以使用losetup -a 来查看所有的区块设备。

sudo losetup -a

正常情况下,我们的img镜像不是一个空白文件。这里我就不演示空白文件的创建挂载了,如有需要,请参考:https://blog.csdn.net/hejinjing_tom_com/article/details/72529124

我这里的就是一个树莓派系统镜像文件————2018-11-13-raspbian-stretch.img

假如它的路径在**/home/guo/2018-11-13-raspbian-stretch.img**

这里,我想把它挂载为一个虚拟镜像文件,挂载的路径是/mnt/img下。如何操作?

需要root权限执行以下指令.
正常情况下直接使用如下命令即可:

mount -t ext4 -o loop 2018-11-13-raspbian-stretch.img /mnt/img 

then

扫描二维码关注公众号,回复: 4588867 查看本文章
cd /mnt/img 

想添加,删除都可以了。

但是!!!

尝试之后你可能发现不行。因为无法识别文件类型,这是因为img文件的开头包含了mbr,以致于系统无法识别……img文件相当于一个包含操作系统的硬盘,而我们之需要挂载它的文件系统部分,所以需要绕过mbr。

绕过的方式。

首先,执行

fdisk -l /home/guo/2018-11-13-raspbian-stretch.img

这里将会打印出类似下面的东西。

Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x025ce4e3

Device                                             Boot Start     End Sectors  Size Id Type
/home/guo/Desktop/2018-11-13-raspbian-stretch.img1       8192   98045   89854 43.9M  c W95 FAT32 (LBA)
/home/guo/Desktop/2018-11-13-raspbian-stretch.img2      98304 6651903 6553600  3.1G 83 Linux

这里我们找到Type是Linux的,并且我们可以发现,linux的文件系统的开始位置是98304(注意,Boot那一列为空),因为

Units: sectors of 1 * 512 = 512 bytes

所以扇区大小是512字节。这个时候计算偏移量为

98304*512=50331648

所以,真正需要执行的指令是

mount -t ext4 -o loop,offset=50331648 /home/guo/2018-11-13-raspbian-stretch.img /mnt/img/

这个时候,cd到/mnt/img目录下,你就可以想怎么修改怎么修改了。

修改完之后,

cd /;然后umount /mnt/img;完成卸载。

参考:
http://www.runoob.com/linux/linux-comm-losetup.html
https://blog.csdn.net/hejinjing_tom_com/article/details/72529124
https://songzi0206.iteye.com/blog/1723760
https://www.raspberrypi.org/forums/viewtopic.php?t=190154

猜你喜欢

转载自blog.csdn.net/funnyPython/article/details/84937811
今日推荐