介绍
文章旨在介绍如何制作 三星的 tar.md5 格式的刷机包。
System 镜像介绍
System 镜像一般有两种格式,一种为 ext4 image,一种为 sparse image。
线刷包中的 system image,采用的是 sparse image 格式,而刷入完成直接采用 dd 或 cat 命令备份出来,则是 ext4 格式。
System 打包
查看 System 分区的大小
首先需要查看 system 分区被挂载到哪个挂载点上了。
用 R.E. 管理器查看比较直观,一眼便能看出挂载到了哪个位置。
下面介绍使用命令方式:
需要注意的是,设备不同,挂载点也不一样,具体应该灵活分辨。
1. 输入 mount 命令得到的挂载点:
adb shell mount
将会返回所有的挂载点,我们可以得到例如下面的一行,:
/dev/block/platform/15570000.ufs/by-name/SYSTEM /system ext4 ro,seclabel,relatime,norecovery 0 0
/dev/block/platform/15570000.ufs/by-name/SYSTEM
其实是一个软链接,我们接下来需要获取其真实的硬盘挂载点。
2. 获取真实硬盘挂载点(分区位置):
Shell 中输入如下命令:
readlink /dev/block/platform/15570000.ufs/by-name/SYSTEM
得到的挂载点为:
/dev/block/sda18
这说明 system 分区位于 sda18
上。
3. 获取 system 分区的大小:
Shell 中输入如下命令:
cat /proc/partitions
将会输出一个分区表,单位为 block(数据块)。每个 block 为 1K。我们可以看到 sda18 的 block 为 3829760 块,则 system 分区的大小是 3829760Kb。
示例:
259 2 3829760 sda18
使用 make_ext4fs 命令打包
1. 输入如下命令进行打包:
make_ext4fs -s -l 3829760K -a system /sdcard/system.img /system
注:
3829760K 为刚刚得到的 system 分区大小,不需要加 b。
system 为 system 的分区名。
/sdcard/system.img 表示打包完成将会在 /sdcard/ 下生成 system.img 文件。
/system 为 system 分区的挂载点。
生成 tar.md5 文件
在这里需要在 Unix/Linux 环境下打包。没有的话,在手机上直接安装 busybox,输入命令打包也是可以的(因为需要 busybox 中的 tar 和 md5sum 命令)。
1. 首先生成 .tar 格式文件
在这里其实就可以直接刷入了。直接刷入 .tar 格式的线刷包,Odin 不会校验线刷包是否存在数据错误。
输入如下命令:
tar -cf flashfiles.tar cm.mbn sboot.mbn boot.img system.img
注:
flashfiles.tar 为生成的 tar 文件名。
cm.mbn sboot.mbn boot.img system.img 这些是需要打包的镜像文件,可填写多个,不要换行。
2. 生成 .tar.md5 文件
这一步其实是可以省略的。
生成 .tar.md5 格式的线刷包后,Odin 在刷入 .tar.md5 格式的线刷包之前先对打包的 tar 文件进行 md5 验证,如果没有数据错误,才能刷入。否则会提示文件损坏。
md5sum -t flashfiles.tar >> flashfiles.tar
3. 重命名文件:
mv flashfiles.tar flashfiles.tar.md5
生成完毕,可以用 Odin 刷入了。
题外话
有人会觉得每次校验很麻烦,我在这里告诉大家一个取巧的方法:
直接将 .tar.md5 重命名为 .tar,然后再用 Odin 刷入,就不会校验了,不管这个线刷包有没有做 .tar.md5 的步骤。
站长会不会适配rom?
不会。
个人认为dd出来之后再用img2simg更好一些 我用make_ext4fs有时候会因为权限问题卡第二屏
因为没有正确的使用 make_ext4fs 命令,所以会卡屏。
dd出来的img大小与system分区等大,然而make_ext4fs出来的img为实际大小
精神上支持一个