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
引用帖子的原地址: