当前位置: 首页 > news >正文

android R ext4 image打包脚本介绍

一、Android R打包指令使用介绍

(1)mkuserimg_mke2fs

#./mkuserimg_mke2fs --help
usage: mkuserimg_mke2fs [-h] [--android_sparse] [--journal_size JOURNAL_SIZE][--timestamp TIMESTAMP] [--fs_config FS_CONFIG][--product_out PRODUCT_OUT][--block_list_file BLOCK_LIST_FILE][--base_alloc_file_in BASE_ALLOC_FILE_IN][--base_alloc_file_out BASE_ALLOC_FILE_OUT][--label LABEL] [--inodes INODES][--inode_size INODE_SIZE][--reserved_percent RESERVED_PERCENT][--flash_erase_block_size FLASH_ERASE_BLOCK_SIZE][--flash_logical_block_size FLASH_LOGICAL_BLOCK_SIZE][--mke2fs_uuid MKE2FS_UUID][--mke2fs_hash_seed MKE2FS_HASH_SEED][--share_dup_blocks]src_dir output_file {ext2,ext4} mount_point fs_size[file_contexts]positional arguments:src_dir               The source directory for user image.output_file           The path of the output image file.{ext2,ext4}           Variant of the extended filesystem.mount_point           The mount point for user image.fs_size               Size of the file system.file_contexts         The selinux file context.optional arguments:-h, --help            show this help message and exit--android_sparse, -s  Outputs an android sparse image (mke2fs).--journal_size JOURNAL_SIZE, -j JOURNAL_SIZEJournal size (mke2fs).--timestamp TIMESTAMP, -T TIMESTAMPFake timetamp for the output image.--fs_config FS_CONFIG, -C FS_CONFIGPath to the fs config file (e2fsdroid).--product_out PRODUCT_OUT, -D PRODUCT_OUTPath to the directory with device specific fs configfiles (e2fsdroid).--block_list_file BLOCK_LIST_FILE, -B BLOCK_LIST_FILEPath to the block list file (e2fsdroid).--base_alloc_file_in BASE_ALLOC_FILE_IN, -d BASE_ALLOC_FILE_INPath to the input base fs file (e2fsdroid).--base_alloc_file_out BASE_ALLOC_FILE_OUT, -A BASE_ALLOC_FILE_OUTPath to the output base fs file (e2fsdroid).--label LABEL, -L LABELThe mount point (mke2fs).--inodes INODES, -i INODESThe extfs inodes count (mke2fs).--inode_size INODE_SIZE, -I INODE_SIZEThe extfs inode size (mke2fs).--reserved_percent RESERVED_PERCENT, -M RESERVED_PERCENTThe reserved blocks percentage (mke2fs).--flash_erase_block_size FLASH_ERASE_BLOCK_SIZE, -e FLASH_ERASE_BLOCK_SIZEThe flash erase block size (mke2fs).--flash_logical_block_size FLASH_LOGICAL_BLOCK_SIZE, -o FLASH_LOGICAL_BLOCK_SIZEThe flash logical block size (mke2fs).--mke2fs_uuid MKE2FS_UUID, -U MKE2FS_UUIDThe mke2fs uuid (mke2fs) .--mke2fs_hash_seed MKE2FS_HASH_SEED, -S MKE2FS_HASH_SEEDThe mke2fs hash seed (mke2fs).--share_dup_blocks, -cext4 share dup blocks (e2fsdroid).

(2)mke2fs

#./mke2fs
Usage: mke2fs [-c|-l filename] [-b block-size] [-C cluster-size][-i bytes-per-inode] [-I inode-size] [-J journal-options][-G flex-group-size] [-N number-of-inodes] [-d root-directory][-m reserved-blocks-percentage] [-o creator-os][-g blocks-per-group] [-L volume-label] [-M last-mounted-directory][-O feature[,...]] [-r fs-revision] [-E extended-option[,...]][-t fs-type] [-T usage-type ] [-U UUID] [-e errors_behavior][-z undo_file][-jnqvDFSV] device [blocks-count]

 (3)mke2fs使用举例

./mke2fs -L lcfg_L -M /lcfg -E android_sparse -t ext4 -b 4096 lcfg_new.img 4096参数解释:
-L lcfg_L  指定文件系统lable-M /lcfg   指定文件系统挂载点,新的android系统可能必须指定,否则可能不开机-E android_sparse  使用android稀疏文件系统-t ext4 指定文件系统类型-b 4096 指定block size为4Klcfg_new.img 打包后的文件名最后的4096为文件系统占用多少个block,即大小为4096个block,16MB-d 指定打包的路径,不指定则打包一个空文件系统./mke2fs -d ../mnt/ -L lcfg_L -M /lcfg -E android_sparse -t ext4 -b 4096 lcfg_new.img 4096

 

0x460地址的53EF对应ext4文件系统,0x4A0地址存储的lable name,0x4B0地址存储的挂载点名字。  

(5)mkuserimg_mke2fs使用举例

#./mkuserimg_mke2fs -s -L lcfg_L ../mnt/ lcfg_new.img ext4 lcfg 16777216
10:48:38 mkuserimg_mke2fs.py INFO: Env: {'MKE2FS_CONFIG': '/tmp/tmpIS3W7w'}
10:48:38 mkuserimg_mke2fs.py INFO: Running: mke2fs -L lcfg_L -M /lcfg -E android_sparse -t ext4 -b 4096 lcfg_new.img 4096
mke2fs 1.45.5 (07-Jan-2020)
lcfg_new.img: Unimplemented ext2 library function while setting up superblock10:48:38 mkuserimg_mke2fs.py ERROR: Failed to run mke2fs: mke2fs 1.45.5 (07-Jan-2020)
lcfg_new.img: Unimplemented ext2 library function while setting up superblock

 发现使用这个脚本打包会报Unimplemented ext2 library function while setting up superblock的错误,查询网上信息均不能解决此问题。android编译log里执行是没有报错的,暂时原因未知。由此脚本输出log可以确认实际调用的还是mke2fs这个命令。

以下是android编译log这个命令的调用输出:

mkuserimg_mke2fs -s /data/aosp/out/soong/.temp/tmpB5DBG3 /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}_-target_files-eng.${username}/IMAGES/system.img ext4 / 1561997312 -j 0 -T 1230768000 -C /data/aosp/out/soong/.temp/merged_fs_configiM8m_z.txt -B /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/IMAGES/system.map -L / -i 4287 -M 0 -U 2735b6e1-a757-5a14-9bef-47754fd50ded -S 700f0123-0f4b-5b89-9162-47d96902e561 --inode_size 256 /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/META/file_contexts.bin输出:mke2fs -O ^has_journal -L / -N 4287 -I 256 -M / -m 0 -U 2735b6e1-a757-5a14-9bef-47754fd50ded -E android_sparse,hash_seed=700f0123-0f4b-5b89-9162-47d96902e561 -t ext4 -b 4096 /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/IMAGES/system.img 381347mkuserimg_mke2fs -s /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/ODM /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/IMAGES/odm.img ext4 odm 659456 -j 0 -T 1230768000 -C /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/se1000_car-target_files-eng.${username}/META/odm_filesystem_config.txt -B /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/IMAGES/odm.map -L odm -i 24 -M 0 -U 2953e192-e67a-51ec-ba5b-d87b876e96be -S 8547b481-be54-5451-857b-c04843da04c8 --inode_size 256 /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.jiongjionglv/META/file_contexts.bin输出:
mke2fs -O ^has_journal -L odm -N 25 -I 256 -M /odm -m 0 -U 2953e192-e67a-51ec-ba5b-d87b876e96be -E android_sparse,hash_seed=8547b481-be54-5451-857b-c04843da04c8 -t ext4 -b 4096 /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/IMAGES/odm.img 4243

(6)mkf2fsuserimg.sh 使用介绍

 此脚本是用来制作f2fs格式image,比如userdata.img

./mkf2fsuserimg.sh -h
in mkf2fsuserimg.sh PATH=/usr/local/mongodb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Usage:
mkf2fsuserimg.sh OUTPUT_FILE SIZE[-S] [-C FS_CONFIG] [-f SRC_DIR] [-D PRODUCT_OUT][-s FILE_CONTEXTS] [-t MOUNT_POINT] [-T TIMESTAMP][-L LABEL] [--prjquota] [--casefold]
mkf2fsuserimg.sh /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/IMAGES/userdata.img 34359738368 -S -f /data/aosp/out/soong/.temp/tmpbJAfR1 -s /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/META/file_contexts.bin -t data -T 1230768000 -L data --prjquota --casefoldmake_f2fs -g android -S 34359738368 -l data -O project_quota,extra_attr -O casefold -C utf8 /data/aosp/out/target/product/${product}/obj/PACKAGING/target_files_intermediates/${product}-target_files-eng.${username}/IMAGES/userdata.img

Android R 文件系统制作工具下载:https://download.csdn.net/download/u013463707/89550435

platform-tool下载地址:https://dl.google.com/android/repository/platform-tools-latest-windows.zip

https://dl.google.com/android/repository/platform-tools-latest-linux.zip 

部分历史版本下载:https://gitee.com/awake558/platform-tools/tree/master 

下载链接:https://dl.google.com/android/repository/platform-tools_r[版本]-[系统].zip
版本:platform-tools的版本名称(26.0.0,33.0.0...)
系统:Windwos→windows,Mac→darwin,linux→linux
例如:https://dl.google.com/android/repository/platform-tools_r26.0.0-windows.zip

部分历史版本无法下载,版本信息参考:https://developer.android.com/studio/releases/platform-tools

参考链接: 

https://blog.csdn.net/qq_45683435/article/details/104070216/

修改system.img的文件的权限和属性:使用make.ext4fs的方法_system.ext4.win-CSDN博客

相关文章:

android R ext4 image打包脚本介绍

一、Android R打包指令使用介绍 (1)mkuserimg_mke2fs #./mkuserimg_mke2fs --help usage: mkuserimg_mke2fs [-h] [--android_sparse] [--journal_size JOURNAL_SIZE][--timestamp TIMESTAMP] [--fs_config FS_CONFIG][--product_out PRODUCT_OUT][--b…...

美式键盘 QWERTY 布局的来历

注:机翻,未校对。 The QWERTY Keyboard Is Tech’s Biggest Unsolved Mystery QWERTY 键盘是科技界最大的未解之谜 It’s on your computer keyboard and your smartphone screen: QWERTY, the first six letters of the top row of the standard keybo…...

ETL数据同步之DataX,附赠一套DataX通用模板

今天跟大家分享数据同步datax的模板,小伙伴们简单直接借鉴使用。 还记得上一篇关于大数据DS调度工具的分享嘛? 主流大数据调度工具DolphinScheduler之数据ETL流程-CSDN博客 里面的核心就是采用了DATAX的数据同步原理。 一,什么是DataX D…...

[论文笔记] CT数据配比方法论——1、Motivation

我正在写这方面的论文,感兴趣的可以和我一起讨论!!!!!! Motivation 1、探测原有模型的配比: 配比 与 ppl, loss, bpw, benchmark等指标 之间的关系。 2、效果稳定的配比:配比 与 模型效果 之间的规律。 Experiments 1、主语言(什么语言作为主语言,几种主语言?…...

某4G区域终端有时驻留弱信号小区分析

这些区域其实是长时间处于连接态的电信卡4G终端更容易出现。 出现问题时都是band1 100频点下发了针对弱信号的1650频点的连接态A4测量事件配置(其阈值为-106)。而这个条件很容易满足,一旦下发就会切到band3 1650频点。 而1650频点虽然下发ban…...

【体外诊断】ARM/X86+FPGA嵌入式计算机在免疫分析设备中的应用

体外诊断 信迈提供基于Intel平台、AMD平台、NXP平台的核心板、2.5寸主板、Mini-ITX主板、4寸主板、PICO-ITX主板,以及嵌入式准系统等计算机硬件。产品支持GAHDMI等独立双显,提供丰富串口、USB、GPIO、PCIe扩展接口等I/O接口,扩展性强&#xf…...

Linux上启动和停止jar

linux 后台运行jar 在Linux系统中,要想让jar包在后台运行,可以使用nohup命令和&符号。nohup命令可以使进程在后台不受挂起信号影响的执行,而&符号则是将任务放入后台执行。 以下是一个简单的命令示例,它将启动一个jar包…...

浏览器缓存:强缓存与协商缓存实现原理有哪些?

1、强缓存:设置缓存时间的,那么在这个时间内浏览器向服务器发送请求更新数据,但是服务器会让其从缓存中获取数据。 可参考:彻底弄懂强缓存与协商缓存 - 简书 2、协商缓存每次都会向浏览器询问,那么是怎么询问的呢&…...

持续集成04--Jenkins结合Gitee创建项目

前言 在持续集成/持续部署(CI/CD)的旅途中,Jenkins与版本控制系统的紧密集成是不可或缺的一环。本篇“持续集成03--Jenkins结合Gitee创建项目”将引导如何将Jenkins与Gitee(一个流行的Git代码托管平台)相结合&#xff…...

【Node.js基础02】fs、path模块

目录 一:fs模块-读写文件 1 加载fs模块对象 2 读制定文件内容文件 3 向文件中写入内容 二:path模块-路径处理 1 问题引入 2 __dirname内置变量 使用方法 一:fs模块-读写文件 fs模块封装了与本机文件系统交互方法和属性 1 加载fs模块…...

牛客TOP101:单链表的排序

文章目录 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 2. 解题思路 按我们以往的排序算法来看,针对链表来说都是太不合适,因为很多都会出现指针前移后移,后移还好说,前移对于链表来说就太难了,而且大部分都是某一个…...

数据可视化配色新工具,颜色盘多达2500+类

好看的配色,不仅能让图表突出主要信息,更能吸引读者,之前分享过很多配色工具,例如, 👉可视化配色工具:颜色盘多达3000+类,数万种颜色! 本次再分享一个配色工具pypalettes,颜色盘多达2500+类。 安装pypalettes pip install pypalettes pypalettes使用 第1步,挑选…...

SpringAI简单使用(本地模型+自定义知识库)

Ollama 简介 Ollama是一个开源的大型语言模型服务工具,它允许用户在本地机器上构建和运行语言模型,提供了一个简单易用的API来创建、运行和管理模型,同时还提供了丰富的预构建模型库,这些模型可以轻松地应用在多种应用场景中。O…...

为什么要从C语言开始编程

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!很多小伙伴在入门编程时。都…...

[数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4635 标注数量(xml文件个数):4635 标注数量(txt文件个数):4635 标注…...

数据结构(稀疏数组)

简介 稀疏数组是一种数据结构,用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中,只有非零或非重复的元素会被存储,从而节省内存空间。 案例引入 假如想把下面这张表存入文件,我们会怎么做?…...

python 爬虫技术 第02节 基础复习

Python基础复习 Python 是一种高级、通用、解释型的编程语言,以其简洁的语法和强大的功能在数据科学、Web 开发、自动化脚本编写、机器学习等领域广泛使用。下面是一些 Python 基础概念的复习: 1. 数据类型 Python 支持多种内置数据类型,包…...

数据结构-C语言-排序(3)

代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排序分…...

【分布式事务】怎么解决分布式场景下数据一致性问题

分布式事务的由来 拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户余额服务。原本收到充值回调后,可以将修改订单状态和扣减余额放在一个mysql事务…...

C# 中的委托

委托的概念 在C#中,委托是一种引用类型,它表示对方法的引用,即委托就是一种用来指向一个方法的引用类型变量。委托的声明类似于方法签名,但是关键字是delegate。下面是一个委托的声明和使用的例子: // 声明一个委托 p…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...