在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

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle学习笔记

Oracle 一、简介: 特点: 多用户、大事务量的事务处理 数据安全性和完整性控制 支持分布式数据处理 可以移植性 Oracle 19c 安装 登录甲骨文,安装Oracle 解压压缩包 安装 完毕 此处账户:qfedu 密码:wang8218.…

染色法判定二分图

什么是二分图? 二分图,也称作二部图,是图论中的一种特殊模型。在一个无向图G(V,E) 中,如果顶点集合 V 可以被分割成两个互不相交的子集 A 和 B,并且图中的每条边 (i,j) 关联的两个顶点 i 和 j 分别属于这两个不同的顶…

LeetCode(2)合并链表、环形链表的约瑟夫问题、链表分割

一、合并链表 . - 力扣(LeetCode) 题目描述: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct …

C++入门基础篇(下)

目录 6.引用 6.1 引用的特性 6.2 const引用 7.指针和引用的关系 8.内联函数 9.nullptr 6.引用 引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。比如&a…

【Vue3】使用vite创建vue项目

一、安装Nodejs 参考文章https://blog.csdn.net/DX390609/article/details/140305585?spm1001.2014.3001.5502 二、创建项目 在要创建的目录下打开命令行输入: npm create vuelatestvue项目创建成功: 三、安装vue插件 vscode打开项目文件夹&…

谷歌个人开发者账号14天封测审核通过技巧,你还不知道吗?

众所周知,目前在Google play应用商店上架应用已经不是那么容易了,谷歌各种政策的更新以及审核系统的升级,给开发者们带来了不少挑战。 尤其针对个人开发者账号需要20人连续14天的封测的要求,周期长,且随着政策执行力度…

31_JQuery一文读懂,JS的升级版

今日内容 零、 复习昨日 一、JQuery 零、 复习昨日 1 js数组的特点(长度,类型,方法) - js数组的长度不限 - 类型不限 - 提供很多方法2 js中和的区别 - 判断数值相等 - 判断数值和数据类型同时相等3 js表单事件的事件名(事件属性单词) - 获得焦点 onfocus - 失去焦点 onblur …

Qt开发 | Qt模型视图代理(Model-View-Delegate)

文章目录 一、Qt MVD概念讲解二、Qt模型视图代理之:QTableView的使用三、Qt模型视图代理之:QListView的使用 一、Qt MVD概念讲解 Qt MVD(Model-View-Delegate)是Qt框架中的一种设计模式,是Qt中用界面组件显示与编辑数据…

深入解析C++11:现代特性和应用

目录 一.c11.简介二.列表初始化和initializer_list1.列表初始化2.initializer_list 三.简化声明1.auto2.decltype 四.新增容器1.array2.forward_list3.unordered_map/set 五.右值引用与移动语义1.左值和右值2.左值引用3.右值引用4.移动构造和移动赋值5.万能引用和引用折叠6.完美…

git-工作场景

1. 远程分支为准 强制切换到远程分支并忽略本地未提交的修改 git fetch origin # 获取最新的远程分支信息 git reset --hard origin/feature_server_env_debug_20240604 # 强制切换到远程分支,并忽略本地修改 2. 切换分支 1. **查看所有分支:**…

mount卡住(失败)解决方案

mount -a卡主 第一步确保两边都打开了NFS服务!!!! 客户端执行mount -av 查看信息是拒绝服务 查看服务端:showmount -e 192.168.25.168 看提示信息处理,关闭两端的防火钱 遇到这个错误就是服务端不让客户端…

JAVA--SpringCloud

SpringCloud基础 为什么需要spring cloud 单体结构--Monolith 首先请回想一下我们所开发的服务是什么样子的。通常情况下,这个服务所对应的代码由多个项目(模块)所组成,各个项目会根据自身所提供功能的不同具有一个明确的边界。…

C++类与对象-基础篇

目录 一、什么是类 1.1 语法定义 1.2 访问限定符 1.3 类域 二、类的实例化 2.1 什么是实例化 2.2 类的大小 三、this指针 3.1 引入 3.2 this指针的使用 一、什么是类 1.1 语法定义 class 类名 {}; 说明 类似于C语言中的结构体,括号后分号不能丢类内成员可…

算术运算符用途解析及应用案例

文章目录 常用的算术运算符及其用途:运算符优先级类型转换高级用法 应用案例1. 计算器程序2. 平方根计算3. 计算平均数和标准差4. 货币兑换5. 计算几何6. 动力学模拟7. 数字图像处理8. 金融计算:复利计算 常用的算术运算符及其用途: 算术运算…

前端面试题40(浅谈MVVM双向数据绑定)

MVVM(Model-View-ViewModel)架构模式是一种用于简化用户界面(UI)开发的软件架构设计模式,尤其在现代前端开发中非常流行,例如在使用Angular、React、Vue.js等框架时。MVVM模式源于经典的MVC(Mod…

软件架构之软件架构概述及质量属性

软件架构之软件架构概述及质量属性 第 9 章:软件架构设计9.1 软件架构概述9.1.1 软件架构的定义9.1.2 软件架构的重要性9.1.3 架构的模型 9.2 架构需求与软件质量属性9.2.1 软件质量属性9.2.2 6 个质量属性及实现 第 9 章:软件架构设计 像学写文章一样&…

前后端如何实现非对称加解密-使用RSA为例讲解!

写在最前面,RSA是一种非对称加密算法,使用不同的公钥和私钥进行加密和解密。 下面是使用RSA进行加密和解密的代码示例: 前端:使用CryptoJS进行RSA加密 在前端JavaScript中,使用jsencrypt库来进行RSA加密&#xff1a…

领夹麦克风哪个品牌好,哪个麦克风好,热门无线麦克风品牌推荐

​无线领夹麦克风是现代沟通的重要工具,它不仅提高了语音交流的清晰度,还展现了使用者的专业形象。随着技术发展,这些麦克风已经变得更加轻便、时尚,易于使用。在各种场合,如演讲、教育和网络直播中,当然&a…

Matplotlib入门

#折线图用来表示数据的变化 plt.plot(x,y) #直方图用来统计连续性数据 无间隔 plt.hist(data数组,组数) #条形图用来统计离散的数组 并且反映其变化 有间隔 plt.bar(x,y,width 0.3) plt.barh(y,x,height 0.3) #散点图用来xy轴之间的联系 趋势 plt.scatter(x,y) #导入p…

重命名文件的方法有哪些?重命名文件的工具有哪些?

在日常的计算机使用过程中,重命名文件是一项常见但至关重要的任务。无论是为了更好地组织文件、修复命名错误,还是简化文件管理流程,掌握正确的重命名方法和工具都能显著提升效率。 本文将探讨多种重命名文件的方法,同时介绍几款高…