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,一经查实,立即删除!

相关文章

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

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

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…

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

过去两年酒店行业加速洗牌&#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…

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

注册亚马逊美国买家号需要准备邮箱、美国手机号、美国地址及能支付的支付卡。准备好之后进入亚马逊美国站进行点击注册&#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…

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…

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

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

小迪笔记(1)——操作系统文件下载反弹SHELL防火墙绕过

名词解释 POC&#xff1a;验证漏洞存在的代码&#xff1b; EXP&#xff1a;利用漏洞的代码&#xff1b; payload&#xff1a;漏洞利用载荷&#xff0c; shellcode&#xff1a;漏洞代码&#xff0c; webshell&#xff1a;特指网站后门&#xff1b; 木马&#xff1a;强调控制…

rotation matrix reflection matrix

文章目录 1. rotation matrix1.1 结论 2. reflection matrix2.1 结论 1. rotation matrix 图像逆时针旋转 θ \theta θ的矩阵 Q r o t a t e [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] (1) Q_{rotate}\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\c…

数据湖的概念、发展背景和价值

数据湖是一个集中化的存储系统&#xff0c;旨在以低成本、大容量的方式&#xff0c;无需预先对数据进行结构化处理&#xff0c;存储各种结构化和非结构化数据。以下是数据湖概念、发展背景和价值的详细介绍。 数据湖概念 数据湖的概念源自于对传统数据仓库的补充。传统数据仓…

Java修仙记之记录一次与前端女修士论道的经历

文章开始之前&#xff0c;想跟我念一句&#xff1a;福生无量天尊&#xff0c;无量寿佛&#xff0c;阿弥陀佛 第一场论道&#xff1a;id更新之争 一个天气明朗的下午&#xff0c;前端的小美女长发姐告诉我&#xff1a;嘿&#xff0c;小后端&#xff0c;你的代码报错了 我答道&am…

iptables的一次修复日志

iptables的一次修复日志 搭建配置wireguard后&#xff0c;使用内网连接设备十分方便&#xff0c;我采用的是星型连接&#xff0c;即每个节点都连接到中心节点&#xff0c;但是突然发生了重启wg后中心节点不转发流量的问题&#xff0c;即每个接入的节点只能与中心节点连接&…

M2 Mac Xcode编译报错 ‘***.framework/‘ for architecture arm64

In /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP(anim_decode.o), building for iOS Simulator, but linking in object file built for iOS, file /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP for architecture arm64 这是我当时编译模拟器时报…

Mars3d-vue最简项目模板集成使用Mars3d的UI控件样板

备注说明&#xff1a; 1.小白可看步骤一二&#xff0c;进阶小白可直接看步骤三 步骤一&#xff1a;新建文件夹<uitest>&#xff0c;在mars3d仓库拉一份最简项目模板&#xff1a; git clone mars3d-vue-template: Vue3.x 技术栈下的Mars3D项目模板 步骤二&#xff1a;运…

本地部署 EmotiVoice易魔声 多音色提示控制TTS

本地部署 EmotiVoice易魔声 多音色提示控制TTS EmotiVoice易魔声 介绍ChatGLM3 Github 地址部署 EmotiVoice准备模型文件准备预训练模型推理 EmotiVoice易魔声 介绍 EmotiVoice是一个强大的开源TTS引擎&#xff0c;支持中英文双语&#xff0c;包含2000多种不同的音色&#xff…