欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 在Linux下直接修改磁盘镜像文件的内容

在Linux下直接修改磁盘镜像文件的内容

2024/10/25 1:27:35 来源:https://blog.csdn.net/happen23/article/details/140299043  浏览:    关键词:在Linux下直接修改磁盘镜像文件的内容

背景

嵌入式Linux系统通常在调试稳定后,会对磁盘(SSD、NVME、SD卡、TF卡)做个镜像,通常是.img后缀的文件,以后组装新设备时,就将镜像文件烧录到新磁盘即可,非常简单。

这种方法有个不便之处,就是当某些关键文件(LCD、触屏、按键等人机交互设备的驱动)有改动时,就需要重新对磁盘做镜像,如果手头没有相同容量的磁盘,就很麻烦。

思路

一种简单的办法是用Linux Reader打开img文件,更新其中内容后保存即可,但是该软件只能读,不能写,而且还收费,放弃。
想起Linux有loop设备的概念,类似于虚拟光驱,如果能将img文件像下图一样加载就好了。
虚拟光驱

查了一圈资料,自己将资料综合起来并做实验,找到实现方法。

实现方法

关键工具是losetup命令(桌面Linux自带),具体步骤如下示例:

  1. 将镜像文件Foo.img上传到一台桌面Linux环境(物理机/虚拟机均可)
  2. 进入桌面Linux的终端,执行ls /dev/loop* | sort命令,看loop设备编号用到几了,待会我们将img文件attach到几+1
  3. 如果你清楚分区信息,下面3个小步骤可以跳过,不清楚就不要跳过
    3.a 执行sudo losetup /dev/loop14 Foo.img,attach镜像文件Foo.img到/dev/loop14
    3.b 执行sudo fdisk /dev/loop14命令,获取磁盘的分区信息(具体步骤请参阅fdisk命令手册)
    3.c 执行sudo losetup -d /dev/loop14命令,detach镜像文件Foo.img
  4. 执行sudo losetup -o 1M --sizelimit 100M /dev/loop14 Foo.img命令,attch到img的第一个分区,其他分区同理
    4.a 选项-o表示分区的起始偏移,选项--sizelimit表示分区的大小
  5. 执行sudo mount /dev/loop14 /mnt/p1/命令,将新创建的loop设备挂载到/mnt/p1/目录
    5.a 如果分区的文件系统比较小众,给mount添加适当的选项
  6. 根据自己的需求对/mnt/p1/目录做增删改查
  7. 执行sudo umount /mnt/p1/命令,卸载loop设备
  8. 执行sudo losetup -d /dev/loop14命令,从img的第一个分区detach

总结

只要思想不滑坡,办法总比困难多。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com