Android5.0以上使用raw ext4fs image制作system.new.dat

但是这个工具使用的输入文件是sparse ext4fs image镜像[参见博文:]。因此很多同学因此碰到如下的错误:

__init__ValueError: Magic should be 0xED26FF3A but is 0x00000000

注意到windows下的大多数工具都只能制作raw ext4fs镜像,很多同学无法制作sparse ext4fs镜像。因此本文提供工具直接由raw ext4fs镜像来制作system.new.dat,并且提供linux和windows版本工具下载。

制作步骤:

[欢迎转载,但请注明出处:://blog.csdn.net/howellzhu]

1. 由system目录制作raw ext4fs镜像system.rimg:

比如参考linux下的Android提供的make_ext4fs工具,则使用如下的命令:

$ make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system.rimg system/简单解释一下,

-T代表对镜像中的unix文件时间戳进行设置,这里设置为0,表示1970-1-1。

-S 代表file_contexts,,即selinux的文件selabel,必须指定;注意是大写S。

-l 表示文件分区的length,也是制作出来的镜像文件的大小;这里n5指定为1G。

-a 表示android中分区的名字,这里表示system分区;

system/表示制作源目录。

通过上面的步骤,得到一个1GB的文件system.rimg。

需要注意2点:

1) 一定不要用-s参数,因为-s参数会生成sparse image,不适合第二步的工具;

2) -T参数是android-5.0才加入的参数,如果你的make_ext4fs工具不支持该参数,请去掉后执行;

2. 用rimg2sdat工具制作system.new.dat:

[欢迎转载,但请注明出处:://blog.csdn.net/howellzhu]

下载博文最后提供的rimg2sdat工具,然后执行:

$ ./rimg2sdat system.rimg 这样,会在当前目录下生成2个文件:system.new.datsystem.transfer.list。自己再创建一个空的system.patch.dat即可。

附录:

1. windows下的rimg2sdat.exe工具:

2. linxu x86/x64下的rimg2sdat工具:

3. linux下的make_ext4fs工具(支持-T参数):

任何的限制,都是从自己的内心开始的。

Android5.0以上使用raw ext4fs image制作system.new.dat

相关文章:

你感兴趣的文章:

标签云: