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.mzph.cn/news/154926.shtml

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

相关文章

如何优雅的删除HashMap元素

文章目录 1.数据准备2.删除方式2.1.使用增强 for 循环删除2.2.使用 forEach 循环删除2.3.使用 Iterator 迭代器删除2.4 使用 removeIf 删除&#xff08;推荐使用&#xff09;2.5.使用 Stream 删除&#xff08;推荐使用&#xff09; 1.数据准备 public Map<String, String&g…

spring boot @Autowired 注入的服务为null

spring boot Autowired 注入的服务为null 技术博客 http://idea.coderyj.com/ 1.今天调试代码发现 Autowired 注入的服务都是null 经过排查发现 是函数的权限不够,应该把private改成 public解决问题 修改前 PostMapping("handelAllCharge") private JsonUtil hande…

SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用

SQL NULL 值 什么是 NULL 值&#xff1f; NULL 值是指字段没有值的情况。如果表中的字段是可选的&#xff0c;那么可以插入新记录或更新记录而不向该字段添加值。此时&#xff0c;该字段将保存为 NULL 值。需要注意的是&#xff0c;NULL 值与零值或包含空格的字段不同。具有 …

【项目问题定位】近来几个数据库相关问题定位与知识点总结

文章目录 数据库回收站积压导致异常现象与排查&#xff1a;知识点总结回收站与PURGEOracle回收站相关的基本操作&#xff1a; 数据库事务重复创建未释放导致的链接泄露现象与排查知识点总结数据库事务未关闭导致的泄露链接泄露的临时恢复 数据库回收站积压导致异常 现象与排查…

JavaScript中的设计模式

目录 1.工厂模式 2.构造函数模式 构造函数中new关键字作用&#xff1a; 3.原型模式 4.组合模式 JavaScript中有四种常见的设计模式 &#xff0c;目的是为了批量创建对象 为了实现继承。 1.工厂模式 利用工厂模式批量创建对象 优点&#xff1a;可以批量创建对象 …

html滑动文章标题置顶

position: sticky; 基于用户的滚动位置来定位 首先封装一个组件 例如&#xff1a;AAA组件&#xff08;注意&#xff0c;只能有一层盒子&#xff0c;不能在外面继续包一层div&#xff09; <template><div class"box">{{title}}</div> </templa…

【Nginx】nginx 解决504超时问题

问题发现 最近在做测试&#xff0c;发现基本有所有接口响应时间过长的错误反馈都是504。 分析 nginx访问出现504 Gateway Time-out&#xff0c;一般是由于程序执行时间过长导致响应超时&#xff0c;例如程序需要执行90秒&#xff0c;而nginx最大响应等待时间为30秒&#xff…

酒店品牌纷纷冲击中高端,东呈集团能否“快人一步”?

过去两年酒店行业加速洗牌&#xff0c;“强者恒强”的马太效应正持续凸显。 报告显示&#xff0c;2022年排名前10名的酒店集团分别为锦江国际、华住、首旅如家、格林、东呈集团、尚美数智、亚朵、德胧、逸柏、都市酒店。以上10家酒店集团客房规模在连锁酒店市场占有率为62.36&…

【EI会议征稿】第四届公共管理与智能社会国际学术会议(PMIS 2024)

第四届公共管理与智能社会国际学术会议&#xff08;PMIS 2024) 2024 4th International Conference on Public Management and Intelligent Society 第四届公共管理与智能社会国际学术会议将在2024年3月15-17日在长沙召开。PMIS 2024由中南大学社会计算研究中心、中南大学公共…

根据nginx日志统计页面访问次数

静态页面部署在nginx上&#xff0c;页面只有查看下载功能。 需求是统计每条访问次数和下载次数&#xff0c;根据日志分析写了一个shell脚本&#xff0c;触发脚本后生成一个html可以远程查看统计的数量。 #!/bin/bash # nginx日志文件路径 LOG_FILE"/usr/local/nginx/l…

Python等于号标红怎么办,可能原因

Python等于号标红 在具有错误提示的开发集成环境中&#xff0c;Python程序如果被标红的位置刚好是在“等于号”&#xff0c;而不是在“等于号”左边的变量名称上&#xff0c;也不是右边的值或表达式上&#xff0c;那么可能的原因就是等于号的语法错误&#xff1a; 即在Python…

OpenCV 卷积运算和卷积核

卷积运算和卷积核 图像运算中经常会碰到卷积运算这个讲法, 初看不知道具体含义, 其实非常简单, 工作原理如下: 首先提供一个小的矩阵, 一般是3*3, 或者是 5*5 或者是 7*7, 一般是方形矩阵, 维度为奇数, 这样中心点可以作为锚点, 矩阵中的元素取值多为很小的整数(或正或负或零),…

注册亚马逊美国买家号需要些什么资料?

注册亚马逊美国买家号需要准备邮箱、美国手机号、美国地址及能支付的支付卡。准备好之后进入亚马逊美国站进行点击注册&#xff0c;按照格式填写好之后即可注册成功了。 而如果想要注册大量买家号&#xff0c;可以使用亚马逊鲲鹏系统进行自动化操作&#xff0c;想要自动化更顺畅…

活动回顾 | 数字外贸私享会【上海站】成功举办

11月17日&#xff0c;由箱讯科技主办的数字外贸高端定制私享会【上海站】成功举办&#xff01;本次会议的主题为“新模式、新商机、新政策”&#xff0c;外贸行业的老板、企业家们齐聚一堂&#xff0c;凝聚共识&#xff0c;共话数字外贸的新趋势和新机遇。 近年来&#xff0c;数…

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

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

设计师有哪些副业?优漫教育

1、自我推广 设计师有哪些副业&#xff1f;   正所谓&#xff1a;肥水不流外人田&#xff0c;身边朋友需要做海报logo设计什么的,肯定第一个想到的就是你&#xff0c;那么这里无非就两种情况&#xff1a;   一种情况就是朋友拿你当朋友&#xff0c;设计之前会问清相关…

bank conflicts 理解

1、同一个bank下如果有多个threads access 不同的地址&#xff0c;就会出现bank conflicts, 2、如果是多个threads read 同一个bank内的同一个地址&#xff0c;就是broadcast 模式没有bank conflicts&#xff0c;这种情况下带宽利用率较低&#xff0c;因为只用了一个bank资源…

黑马React18: 基础Part II

黑马React: 基础2 Date: November 16, 2023 Sum: 受控表单绑定、获取DOM、组件通信、useEffect、Hook、优化B站评论 受控表单绑定 受控表单绑定 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 准备一个React状态值 const [value, se…

Linux操作系统的Web服务器优点

Linux操作系统的Web服务器优点 Windows&#xff0c;Linux与Unix这3个操作系统是架设Web服务器比较常见的操作系统。Linux的安全性能在这3个操作系统中最高&#xff0c;可以支持多个硬件平台&#xff0c;其网络功能比较强大。总的来说这两大优点是其他操作系统不可替代的&#…

基于C#实现协同推荐 SlopeOne 算法

一、概念 相信大家对如下的 Category 都很熟悉&#xff0c;很多网站都有类似如下的功能&#xff0c;“商品推荐”,"猜你喜欢“&#xff0c;在实体店中我们有导购来为我们服务&#xff0c;在网络上我们需要同样的一种替代物&#xff0c;如果简简单单的在数据库里面去捞&am…