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博客

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

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

相关文章

小程序图片下载保存方法,图片源文件保存!

引言 现在很多时候我们在观看到小程序中的图片的时候,想保存图片的原文件格式的话,很多小程序是禁止保存的,即使是让保存的话,很多小程序也会限制不让保存原文件,只让保存一些分辨率很低的,非常模糊的图片…

Spring Boot 注解 @PostConstruct 介绍

Spring Boot 注解 PostConstruct 介绍 文章目录 Spring Boot 注解 PostConstruct 介绍一、基本介绍二、PostConstruct 的执行时机Spring Bean 的生命周期PostConstruct 的确切执行时机执行顺序示例重要注意事项 三、使用场景及代码示例1. 初始化资源:比如打开数据库…

基于opencv的图片加水印实现方案

加水印应该是个很常见的需求,但是网上找的代码,都感觉不太完善。记录下自己搞出来的一个方案 水印有几个需求: 中文文字水印文字倾斜满图都是,而不是只有一个地方水印文字所在之处完全展示水印 实现思路 准备水印图 我是这么…

k8s一些名词解释

潮汐计算 是一种根据负载变化动态调整资源分配的计算模式。其核心思想是利用峰值和非峰值时段的资源需求差异,动态地扩展或缩减计算资源。在 Kubernetes 环境中,可以通过自动扩展(auto-scaling)机制,根据工作负载的变化自动调整计算资源,最大化资源利用率并减少不必要的…

QT-RTSP相机监控视频流

QT-RTSP相机监控视频流 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "mainwindow.h"#include <QDebug>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), m_settings("outSmart", "LiveWatcher&…

清华大学学报哲学社会科学版

《清华大学学报》&#xff08;哲学社会科学版&#xff09;投稿须知 一、本刊简介 《清华大学学报》&#xff08;哲学社会科学版&#xff09;由清华大学主办&#xff0c;是首批国家社会科学基金资助期刊、全国中文核心期刊、中国人文社会科学核心期刊、中文社会科学引文索引&…

Gmsh教程

13、在没有底层CAD模型的情况下重新擦除STL文件 import gmsh # 导入Gmsh库&#xff0c;用于几何建模和网格划分 import math # 导入数学库&#xff0c;用于计算 import os # 导入操作系统库&#xff0c;用于处理文件路径 import sys # 导入系统库&#xff0c;用于…

CentOS 7 安装MySQL 5.7.30

CentOS 7 安装MySQL卸载&#xff08;离线安装&#xff09; 安装配置MySQL之前先查询是否存在&#xff0c;如存在先卸载再安装 rpm -qa|grep -i mysql rpm -qa|grep -i mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64如下命令找到直接 rm -rf 删除&#xff08;删除…

07. Hibernate 会话工厂(SessionFactory)

1. 前言 Hibernate 的核心价值观是&#xff1a;开发者们&#xff01;做你们应该做的。脏的、累的、没技术含义的由本尊来做。 本节课和大家一起好好的聊聊 Hibernate 的核心组件之一&#xff1a;会话工厂&#xff08;SessionFactory&#xff09;。 通过本节课&#xff0c;你…

Redis数据结构--跳跃表 Skip List

跳跃表&#xff08;Skip List&#xff09;是一种高效的随机化数据结构&#xff0c;通过引入多层索引来实现快速的查找、插入和删除操作。它在Redis中被用来实现有序集合&#xff08;Sorted Set&#xff09;&#xff0c;在处理大量数据时表现出了优越的性能和灵活性。本文将详细…

MySQL增量备份

增备1 做增量备份前&#xff0c;是需要进行一次完成备份的 1、做数据修改 创建一个add1.t1 t1 包含&#xff1a;id,name 加2条数据 id | name | ---------- | 1 | add1 | | 2 | add2 | ----------操作如下&#xff1a; MySQL root(none):(none)> show databases; -…

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册 前言: 什么是 MySQL? MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,…

深入探讨SQL Server端口设置:理论与实践

引言 在现代企业级应用中&#xff0c;SQL Server作为微软的旗舰数据库产品&#xff0c;广泛应用于各种关键业务系统中。设置SQL Server的端口是数据库管理中的一个重要环节&#xff0c;它不仅影响到数据库的安全性&#xff0c;还直接关系到网络通信的效率和稳定性。本文将从计…

C++ 入门基础:开启编程之旅

文章目录 引言一、C的第⼀个程序二、命名空间1、namespace2、namespace的定义 三、C输入 与 输出四、缺省参数五、函数重载六、引用1、引用的概念和定义2、引用的特性3、指针和引用的关系七、inline八、nullptr 引言 C 是一种高效、灵活且功能强大的编程语言&#xff0c;广泛应…

C1W4.Assignment.Naive Machine Translation and LSH

理论课&#xff1a;C1W4.Machine Translation and Document Search 文章目录 1. The word embeddings data for English and French words1.1The dataThe subset of dataLoad two dictionaries 1.2 Generate embedding and transform matricesExercise 1: Translating English…

数学建模-Topsis(优劣解距离法)

介绍 TOPSIS法&#xff08;Technique for Order Preference by Similarity to Ideal Solution&#xff09; 可翻译为逼近理想解排序法&#xff0c;国内常简称为优劣解距离法 TOPSIS 法是一种常用的综合评价方法&#xff0c;其能充分利用原始数据的信息&#xff0c; 其结果能精…

张量分解(5)——Tucker分解

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

如何防范场外个股期权的交易风险?

场外个股期权交易&#xff0c;作为金融衍生品市场的重要组成部分&#xff0c;为投资者提供了更为灵活和多样化的投资策略。然而&#xff0c;其高杠杆、高风险特性也使得投资者在追求高收益的同时&#xff0c;面临着较大的交易风险。为了有效防范这些风险&#xff0c;投资者需要…

基于STM32设计的智能门锁(微信小程序+手机APP等多种方式开锁)(188)

基于STM32设计的智能门锁(微信小程序+手机APP等多种方式开锁)(188) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】ESP8266模块配置【4】上位机开发思路【5】供电方式1.3 项目开发背景【1】选题的意义【…

Kafka Producer发送消息流程之Sender发送线程和在途请求缓存区

文章目录 1. Sender发送数据1. 发送数据的详细过程&#xff1a;2. 关键参数配置 2. 在途请求缓存区 1. Sender发送数据 Sender线程负责将已经在RecordAccumulator中准备好的消息批次发送到Kafka集群。虽然消息在RecordAccumulator中是按照分区组织的&#xff0c;但Sender线程在…