linux制作 ext4镜像image 脚本demo

结构如下:
在这里插入图片描述
build_linux_targetfs.sh

#!/bin/bashCHECK_MARK="\033[0;32m\xE2\x9C\x94\033[0m"
X_MARK="\033[0;1;31mX\033[0m"export TOP_DIR=$PWD
export TARGET_IMAGE_PATH=$TOP_DIR/filesystem/targetfs-images
export BSP_IMAGE_PATH=${TOP_DIR}/../bsp_images
build_app=mpd#usage
function usage() {echo "Usage:percp :                	build percp imagepnc :                 		build pnc imagemap :                		build map imagemodel :          		build model imageplatform_service :      	build platform_service imageplatform :          		build platform imageparameter :     		build parameter imageall :				build all above imagesexample :1. build one image:./build_linux_targetfs.sh percp2. build any numbers images:./build_linux_targetfs.sh percp pncor./build_linux_targetfs.sh percp pnc map......3. build all partitions image:./build_linux_targetfs.sh all"
}#update bsp_images
function update_bsp_images() {FLASH_IMAGE_PATH=${BSP_IMAGE_PATH}/642-63663-0001-001_TS2/flash-imagesFLASH_FILE=${FLASH_IMAGE_PATH}/FileToFlash.txt	TEMP_FILE=${FLASH_IMAGE_PATH}/temp.txtFLASH_IMAGE_NAME=$TARGET_IMAGE_PATH/$1.imggrep $1_ $FLASH_FILE > $TEMP_FILENEW_MD5=$(md5sum ${FLASH_IMAGE_NAME} | awk -F " " {'print $1'})while read LINEdoIMAGE_NAME=$(echo $LINE | awk -F " " {'print $3'})cp $FLASH_IMAGE_NAME $FLASH_IMAGE_PATH/$IMAGE_NAMEsyncBAK_MD5=$(echo $LINE | awk -F " " {'print $11'})if [ "${BAK_MD5}" != "${NEW_MD5}" ];thensed -i 's/'${BAK_MD5}'/'${NEW_MD5}'/g' ${FLASH_FILE}fidone < $TEMP_FILErm -f $TEMP_FILEecho -e "\033[2K\\r${CHECK_MARK} update $1.img to bsp_images successed!"sync
}#create linux extend targetfs
function build_linux_extend_targetfs() {if [ ! -d $TARGET_IMAGE_PATH ];thenmkdir -p $TARGET_IMAGE_PATHsyncfisudo dd if=/dev/zero of=$TARGET_IMAGE_PATH/$1.img bs=16384 count=$(($2/16384))ret_val_mkxfs=$?if [ $ret_val_mkxfs -ne 0 ]; thenprintf "${X_MARK} ***ERROR*** Failed to create the filesystem/targetfs/$1.img . error code = $ret_val_mkxfs ...\n"exit ${ret_val_mkxfs}fisudo mkfs.ext4 $TARGET_IMAGE_PATH/$1.imgsudo mkdir -p $3_baksudo mount $TARGET_IMAGE_PATH/$1.img $3_baksudo cp -raf $3/* $3_baksudo umount -f $3_baksudo rm -rf $3_baksyncecho -e "\033[2K\\r${CHECK_MARK} build $1.img successed!"if [ -d $BSP_IMAGE_PATH ];thenupdate_bsp_images $1elseecho -e "\033[2K\\r${CHECK_MARK} update $1.img to bsp_images error!"fi
}#build parameter.img
function build_parameter() {IMAGE_SIZE=16777216ROOTFS_LOCAL_DIR=${TOP_DIR}/filesystem/targetfs/vehicle_parameterTARGET_IMAGE_NAME=parameterbuild_linux_extend_targetfs $TARGET_IMAGE_NAME $IMAGE_SIZE $ROOTFS_LOCAL_DIR
}#build model.img
function build_model() {IMAGE_SIZE=6442450944ROOTFS_LOCAL_DIR=${TOP_DIR}/filesystem/targetfs/modelTARGET_IMAGE_NAME=modelbuild_linux_extend_targetfs $TARGET_IMAGE_NAME $IMAGE_SIZE $ROOTFS_LOCAL_DIR
}#build platform_service.img
function build_platform_service() {IMAGE_SIZE=1073741824ROOTFS_LOCAL_DIR=${TOP_DIR}/filesystem/targetfs/platform_serviceTARGET_IMAGE_NAME=platform_servicebuild_linux_extend_targetfs $TARGET_IMAGE_NAME $IMAGE_SIZE $ROOTFS_LOCAL_DIR
}#build platform.img
function build_platform() {IMAGE_SIZE=2684354560ROOTFS_LOCAL_DIR=${TOP_DIR}/filesystem/targetfs/platformTARGET_IMAGE_NAME=platformbuild_linux_extend_targetfs $TARGET_IMAGE_NAME $IMAGE_SIZE $ROOTFS_LOCAL_DIR
}#build map.img
function build_map() {IMAGE_SIZE=1289748480ROOTFS_LOCAL_DIR=${TOP_DIR}/filesystem/targetfs/mapTARGET_IMAGE_NAME=mapbuild_linux_extend_targetfs $TARGET_IMAGE_NAME $IMAGE_SIZE $ROOTFS_LOCAL_DIR
}#build pnc.img
function build_pnc() {IMAGE_SIZE=1610612736ROOTFS_LOCAL_DIR=${TOP_DIR}/filesystem/targetfs/pncTARGET_IMAGE_NAME=pncbuild_linux_extend_targetfs $TARGET_IMAGE_NAME $IMAGE_SIZE $ROOTFS_LOCAL_DIR
}#build percp.img
function build_percp() {IMAGE_SIZE=1289748480ROOTFS_LOCAL_DIR=${TOP_DIR}/filesystem/targetfs/percpTARGET_IMAGE_NAME=percpbuild_linux_extend_targetfs $TARGET_IMAGE_NAME $IMAGE_SIZE $ROOTFS_LOCAL_DIR
}if [ $# -ge 1 ];thenfor i in "$@";docase "$i" inpercp)build_percp;;pnc)build_pnc;;map)build_map;;platform)build_platform;;platform_service)build_platform_service;;model)build_model;;parameter)build_parameter;;all)build_percpbuild_pncbuild_mapbuild_platformbuild_platform_servicebuild_modelbuild_parameter;;?)usage;;esacdoneelseusage
fi	

readme 使用方法
example :
a. build one image:
./build_linux_targetfs.sh percp

b. build any numbers images:./build_linux_targetfs.sh percp pncor./build_linux_targetfs.sh percp pnc platform......c. build all partitions image:./build_linux_targetfs.sh all
  1. The target image:
    filesystem/targetfs-images

将需要打包进镜像的文件丢进target的对应文件下,先生成ext4文件进行,然后挂载,cp拷贝到镜像包,最后卸载,这样就做出了一个镜像包,
在这里插入图片描述
在这里插入图片描述
然后将文件替换,和md5 hash值,文件大小替换烧录文件里。记录烧录起始地址,结束地址,md5等等
在这里插入图片描述

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

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

相关文章

如何优雅的避免空指针异常

文章目录 1.数据准备2.实战&#xff1a;获取用户所在的城市2.1.直接获取&#xff1b;容易出现空指针异常。2.2.使用if-else判断&#xff1b;避免了出现空指针的问题&#xff0c;但是代码结构层次嵌套多&#xff0c;不美观2.3.使用工具类美化一下if判断代码2.4.使用Optional解决…

自动化网络图软件

由于 IT 系统的发展、最近向混合劳动力的转变、不断变化的客户需求以及其他原因&#xff0c;网络监控变得更加复杂。IT 管理员需要毫不费力地可视化整个网络基础设施&#xff0c;通过获得对网络的可见性&#xff0c;可以轻松发现模式、主动排除故障、确保关键设备可用性等。 为…

fastdfs-client-java-1.30 maven 打包安装

1. 进入源代码目录&#xff0c;打开cmd mvn clean install 或者 mvn package 问题不大的话会在同级目录target目录下生成打包后文件 2. 当前目录下cmd进行maven安装 mvn install:install-file -DgroupIdorg.csource -DartifactIdfastdfs-client-java -Dversion${version} -D…

JavaWeb开发——文件上传

1 简介 文件上传&#xff1a;将本地图片、视频、音频等文件上传到服务器&#xff0c;供其他用户浏览或下载的过程 文件上传涉及到两部分&#xff1a;前端程序 服务端程序 前端程序 【三要素】&#xff1a;① 需要定义一个form 表单&#xff0c;且表单里需定义一个类型为“ …

SWAT-MODFLOW耦合

耦合模型被应用到很多科学和工程领域来改善模型的性能、效率和结果&#xff0c;SWAT作为一个地表水模型可以较好的模拟主要的水文过程&#xff0c;包括地表径流、降水、蒸发、风速、温度、渗流、侧向径流等&#xff0c;但是对于地下水部分的模拟相对粗糙&#xff0c;考虑到SWAT…

【机器学习】034_多层感知机Part.2_从零实现多层感知机

一、解决XOR问题 1. 回顾XOR问题&#xff1a; 如图&#xff0c;如何对XOR面进行分割以划分四个输入 对应的输出 呢&#xff1f; 思路&#xff1a;采用两个分类器分类&#xff0c;每次分出两个输入 &#xff0c;再借助这两个分类从而分出 。 即采用同或运算&#xff0c;当两…

京东商品详情数据接口【京东API接口开发系列】,监控京东价格走势,接口代码示例,可高并发批量获取

京东开放平台提供了API接口来访问京东商品详情。通过这个接口&#xff0c;您可以获取到商品的详细信息&#xff0c;如商品名称、价格、库存量、描述等。 以下是使用京东商品详情API接口的一般步骤&#xff1a; 注册并获取API权限&#xff1a;您需要在京东开放平台上注册并获取…

透视maven打包编译正常,intellj idea编译失败问题的本质

前言 maven多模块类型的项目&#xff0c;在Java的中大型应用中非常常见&#xff0c; 在 module 很多的情况&#xff0c;经常会出现各种各样的编辑依赖错误问题&#xff0c;今天记录一种比较常见的 case &#xff1a; A 子模块依赖 B 子模块&#xff0c;在 Terminal 上终端上 …

高压开关柜无线测温系统

高压开关柜无线测温系统是一种用于监测高压开关柜内部温度的系统。依托电易云-智慧电力物联网&#xff0c;它采用无线通信技术&#xff0c;实现对开关柜内部温度的实时监测和数据传输。下面我将为您介绍高压开关柜无线测温系统的组成、原理、功能以及优势。 一、系统组成 高压开…

HTML+CSS+ElementUI搭建个人博客页面(纯前端)

网站演示 搭建过程 html部分 首先下载Vue2&#xff0c;ElementUI等插件&#xff0c;放在你的本地。我这里为了运行方便&#xff0c;把代码放在了一个框架里运行。 下载后引入部分 <link rel"stylesheet" href"{{URL::asset(elementui/lib/theme-chalk/ind…

OPPO发布AndesGPT大模型;Emu Video和Emu Edit的新突破

&#x1f989; AI新闻 &#x1f680; OPPO发布全新ColorOS 14及自主训练的AndesGPT大模型 摘要&#xff1a;OPPO在2023 OPPO开发者大会上发布了全新的ColorOS 14&#xff0c;并正式推出了自主训练的安第斯大模型&#xff08;AndesGPT&#xff09;。AndesGPT拥有对话增强、个人…

Linux(Ubuntu)安装JDK环境

系统环境 Ubuntu20.04 下载JDK压缩包 前往Oracle官网进行后续下载或单击下载JDK压缩包 下拉找到JDK8&#xff0c;在Linux板块下选择适配系统架构的压缩包文件(后缀为tar.gz)&#xff0c;系统架构可通过uname -m命令查看 安装JDK 安装环境通常放在/usr/local下&#xff0c;进入…

Linux系统编程 系统编程概念

1.系统调用 系统调用&#xff08;system call&#xff09;其实是 Linux 内核提供给应用层的应用编程接口&#xff08;API&#xff09;&#xff0c;是 Linux 应用层进入内核的入口。不止 Linux 系统&#xff0c;所有的操作系统都会向应用层提供系统调用&#xff0c;应用程序通过…

【2023云栖】陈守元:阿里云开源大数据产品年度发布

本文根据 2023 云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;陈守元 | 阿里云计算平台事业部开源大数据产品总监 演讲主题&#xff1a;阿里云开源大数据产品年度发布 随着云计算的不断发展&#xff0c;未来数据处理和应用的趋势将围绕C…

01-了解微服务架构的演变过程和微服务技术栈

微服务 微服务架构演变 单体架构:将业务的所有功能集中在一个项目中开发最后打成一个包部署 优点: 架构简单, 部署成本低,适合小型项目缺点: 耦合度高, 升级维护困难 分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发称为一个服务 优点: 降低服务耦合…

sqli-labs关卡18(基于http头部报错盲注)通关思路

文章目录 前言一、靶场通关需要了解的知识点1、什么是http请求头2、为什么http头部可以进行注入 二、靶场第十八关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做…

代码随想录Day51 完结篇 LeetCode T84 柱状图的最大矩形

前言 今天代码随想录一刷也告一段落了,没想到我居然坚持下来了,一节都没有落下,学习到了很多种不同的解题思路,也和大家一块交流了很多,哈哈也许不久以后我还得再次二刷代码随想录,希望这一系列的题解能给大家带来帮助,如想要系统学习,请参照代码随想录网站的题解以及b站的配套…

数据库系统原理与实践 笔记 #9

文章目录 数据库系统原理与实践 笔记 #9存储管理与索引文件和记录的组织文件组织定长记录变长记录分槽的页结构文件中记录的组织顺序文件组织多表聚簇文件组织 数据库系统原理与实践 笔记 #9 存储管理与索引 文件和记录的组织 文件组织 数据库是以一系列文件的形式存储的。…

第四代智能井盖传感器,实时守护井盖位安全

城市管理中井盖的安全问题始终是一个不容忽视的方面。传统的巡检方式不仅效率低下&#xff0c;无法实现实时监测&#xff0c;而且很难准确掌握井盖的异动状态。因此智能井盖传感器的应用具有重要意义。这种智能传感器可以帮助政府实时掌握井盖的状态&#xff0c;一旦发现异常情…

OpenCV快速入门:窗口交互

文章目录 前言一、鼠标操作1.1 鼠标操作简介1.2 鼠标事件类型&#xff08;event类型&#xff09;1.3 鼠标事件标志&#xff08;flags&#xff09;1.4 代码示例1.4.1 获取鼠标坐标位置1.4.2 监听鼠标滚轮事件1.4.3 在图像中显示鼠标坐标 二、键盘操作2.1 代码示例2.2 waitKey的等…