Lollipop/Marshmallow DAT files | 解包和打包

By Starstok

Lollipop/Marshmallow DAT files | 解包和打包

Ubuntu x64 - 操作教程

1.将DAT文件(sparse data)转换成EXT4文件(raw image)

sdat2img.py工具用法:

./sdat2img.py <transfer_list> <system_new_file> <system_ext4>

- <transfer_list> =输入,从ROM压缩system.transfer.list

- <system_new_file> =输入,从ROM压缩system.new.dat

- <system_ext4> =输出ext4的原始图像文件

实现命令的例子:

./sdat2img.py system.transfer.list system.new.dat system.img

通过运行这个命令你会得到输出的文件system.img(system.img)这是ext4文件 。

2.将得到的system.img挂载

实现命令顺序:

mkdir output // 建立output文件夹

sudo mount -t ext4 -o loop system.img output/ // 挂载system.img到output

进入output目录则看到system的文件

压缩system目录下文件实现命令:

zip -r rom.zip output

3.打包system.img文件

实现命令:

./make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system.img system/

运行该命令是如果出现 //bash: ./make_ext4fs: 没有那个文件或目录

则运行该命令:sudo apt-get install lib32stdc++6

参数说明:

// -s 表示安静处理,不输出动作,可以不带该参数

// -T 表示Unix时间戳,对system.img中的文件设置修改时间,可以到搜索“站长之家 时间戳”获取某个时间点的时间戳;

// -S 表示sepolicy 的file_contexts

// -l 表示最大的文件大小(受限于分区大小)

// -a 表示Android的mount点,比如system、userdata、recovery

// system.img 表示输出文件名

// system/ 表示输入目录,该目录下有framework、app、bin等目录

这里需要对file_contexts进行一下说明,该文件是对selinux文件系统的说明,一般在原来镜像文件的root目录下可以找到,

如果自己修改/增加/删除了执行文件,可能需要对文件进行修改。具体的内容比较复杂,需要selinux的知识,这里不说了。

-l表示最大的文件大小,受限制于分区大小,如果制作出来的分区镜像大于该值,将会提示失败,这里使用1GB=1073741824B,一般比较新的手机都已经具备该大小了。

这里得到是一个经过压缩的img,无法直接进行mount。如果需要mount后查看,可以通过simg2img命令进行转换然后进行mount:

$ ./simg2img system.img system.ext4.img

$ sudo mount -t ext4 system.img mnt/

当然,如果不需要查看文件,我们只需要拿到system.img就好。system.ext4.img除了在主机上查看文件,对于打包过程没有帮助。

4.将system.img转换成system.new.dat

rimg2sdat工具用法:

./rimg2sdat <system_img>    //system.img是ext4 raw image 文件,如果不是则需要转换

实现命令的例子:

./rimg2sdat system.img

以上操作步骤中所用到的工具: 点击下载

教程中的部分内容来自互联网,在此感谢各位作者的分享,如有侵权,请联系我QQ928130267

引用帖子的原地址:

http://forum.xda-developers.com/android/software-hacking/how-to-conver-lollipop-dat-files-to-t2978952

http://blog.csdn.net/howellzhu/article/details/42804191