关于ext4 simg fill chunk type
ext4格式sparse image chunk type
挺简单的问题,触及到了知识盲区,记录一下
问题描述:
system分区制卡失败,提示chunk_type error,system近期没有做更新;
问题分析:
查看工具侧,确认在升级ext4格式分区时会做chunk type的检测,当前工具中支持dont care & raw类型,而解析system.img对比该部分内容发现,该chunk type为fill类型,以前没有看到过这种类型;
google确认该类型:
sparse image 的格式参考 system/core/libsparse/sparse_format.h
#define CHUNK_TYPE_RAW 0xCAC1 #define CHUNK_TYPE_FILL 0xCAC2 #define CHUNK_TYPE_DONT_CARE 0xCAC3 #define CHUNK_TYPE_CRC32 0xCAC4
所以定义中是有fill这个类型的,确认上述几个类型所对应的不同内容:
- 对于 CHUNK_TYPE_RAW, 相关数据即为 chunk_size 个 block 的原始数据
- 对于 CHUNK_TYPE_DONT_CARE, 相关数据为空
- 对于 CHUNK_TYPE_FILL, 相关数据为 4 个字节的 fill data
fill 类型是将相同的数据缩成4个字节来处理;
确认fill类型是如何生成的
既然是官方定义的,那么为什么我之前从来没有见到过?
特地了解近期system.img的差异情况,了解到打包方式有所改变:
- 以前:使用make_ext4fs直接打包system分区
- 现在:使用makfs.ext4打包system分区,其实使用的就是img2simg这个工具
验证上述猜测是否正确:
确认img中chunk类型:
system/core/libsparse/simg_dump.py -v cache
使用make_ext4fs打包文件,并确认生成类型:
使用simg2img将上述文件还原,并重新使用img2simg生成sparse image,并查看
发现,确实使用img2simg生成的是有fill类型的
然而,我们以前使用的img2simg测试居然没有生成fill类型,这又是咋回事??
是否为版本问题
多版本验证:
android 4.2
android 6.0
linux
apt-get install android-tools-fsutils
other
上述make_ext4fs与img2simg差异:
确认是属于安卓打包工具img2simg自动生成的。若未压缩的img,存在全0部分。该部分自动生成chunk_type_fill类型。原打包流程使用make_ext4fs工具是打包和压缩一体化命令,由于该命令清楚具体文件目录结构,因此不需要针对全0数据进行压缩。而img2simg工具,仅是img压缩,只是基于img的二进制数据生成sparse file,没法根据文件的组织结构情况进行压缩。
关于ext4 simg fill chunk type相关推荐
- 05 RTMP Chunk Stream
RTMP块流 本节指定实时消息传递协议区块流(RTMP区块流).它为更高级的多媒体流协议提供多路复用和分组服务. 虽然RTMP区块流设计用于与实时消息协议(第6节)配合使用,但它可以处理发送消息流的任 ...
- 恢复ext4文件系统superblock
恢复ext4文件系统superblock 1. Create ext4 文件系统. [root@localhost ~]# mkfs.ext4 /dev/vdb1 [root@localhost ~] ...
- 常见图片文件格式简析
"常见":此处指BMP JPEG GIF PNG 四种. 软件: Windows 画图(除了Photoshop,我最喜欢的编辑器,简单粗暴) HxD BMP BMP文件分为4部分: ...
- android有用的命令
转载请指明出处:草帽的后花园 文件1:下载 Android Tools详解 aapt aapt即Android Asset Packaging Tool , 在SDK的platform-tools目录 ...
- 基于Android4.0.3的各种工具信息整理(共130个)
昨日下午,老大交给一个任务,就是对android编译出来的build/host/linux-x86/bin下面的各种可执行程序进行一个了解 于是我就花了一天的时间来搜集信息,大致有两个文件 一个是比较 ...
- c# midi窗体_Midi:C#中的Windows MIDI库
c# midi窗体 介绍 (Introduction) I do some MIDI sequencing and recording and I found it helpful to be abl ...
- 深入Android系统(八)Android的资源管理
Android的优势之一是它几乎能运行在任何尺寸的设备上,为了能让同一个apk在不同设备上正常运行,Android设计了一套资源管理系统来完成目标. Android并不是简单地将UI布局和图片进行扩大 ...
- VC数字图像处理编程讲座之六
图像文件格式 一般的图像文件结构主要都包含有文件头.文件体和文件尾等三部分 文件头: 软件ID.软件版本号.图像分辨率.图像尺寸.图像深度.彩色类型.编码方式.压缩算法 文件体:图像数据.彩色变换表 ...
- m3u8文件转换mp4
起因 今天在做项目的时候遇到下载的视频文件格式是m3u8,且播放器不能播放.产品经理提出需要下载可播放的视频格式.便研究起来如何m3u8转mp4并下载. 旧版本 后端所给的是一个对应的加密链接,将加密 ...
- RM/RMVB文件格式总结
RM/RMVB文件格式总结 RM文件格式是标准的标记符文件格式,RM文件格式把标记符块组合成头块,数据快,索引块,这些标记符块的组合方法如下: .RMF头块 RealMedia File Header ...
最新文章
- express 连接 moogdb 数据库
- Opencv中三种操作像素的方法
- onlyoffice回调函数controller方式实现
- ASP.NET系统退出(移除Session 、清除浏览器缓存)
- c语言更改编译时字体,c习题编译时出现空的字符常量,怎么修改?
- 共享的网络如何让自己比别人快_ipfs网络的分布式数据是如何做到数据共享的?...
- python 判断线程是否执行完毕_判断线程池中的线程是否全部执行完毕
- 完全二叉树的结点数计算
- C++ 基于凸包的Delaunay三角网生成算法
- 时分多路复用(Time Division Multiplexing,TDM)
- LINUX下,ffmpeg增加NVIDIA硬件编解码的步骤及解决办法
- 传智播客 python 私有化学习笔记
- 反计算机病毒技术论文,计算机病毒反病毒技术论文
- KITTI数据集可视化
- Hbase 详细介绍以及简单的Hbase命令操作(入门必备)
- SEO伪原创文章批量生成的方法「冷师兄」
- Boostnote:适合程序员的笔记软件
- Google镜像站点 资源收集
- SoundPool播放系统提示音
- 硕盟 HDMI转VGA 笔记本台式主机HDMI转VGA显示器转接头
热门文章
- cocos2d-x3.0 关于CCAnimate 的一些资料
- 新安装 Ubuntu 12.10 需要做的 10 件事(转)
- 如何修改远程桌面连接端口 ,历史记录,支持多用户
- c语言链表死循环,单项循环链表解决Joseph 问题,死循环了,求帮忙
- raid5坏了一块盘怎么办_如果你的硬盘坏了 你的照片还能找回来吗?
- python下载后在哪打开_centos6/7系统的自带的python安装在哪里?
- python中的urllib模块中的方法
- mycat err:java.sql.SQLNonTransientException: find no Route:select日志报错
- 进程cpu使用率的计算
- 70个具有商业实战性的精品Android源码