admin管理员组

文章数量:1530842

2024年3月20日发(作者:)

前言:

本文为locke原创文章,请尊重作者的劳动成果,转载请注明出处:

;本文所涉及到的资源及工具均来源于网络,有需要的请自行

Google。欢迎转发本文,转发时请保留本文的完整性并注明出处。谢谢!

在这之前,还是要说一下那句话:DIY有风险,刷机需谨慎!!!

建议最好在有机子官方固件的前提下再做DIY操作,以防变成砖头后还能用官方固件刷回

去。刷机前请拔出TF卡并备份机子上所有自己有用的资料再刷机。

目录:

前言……………………………………………………………………………………..………

篇前随语………………………………………………………………………………..………

一、无官方固件的系统文件提取、解包…………………………..…………………

二、有官方固件的系统文件解包……………………………………..………………

2-1.解包………………………………………………… ………………..

2-2.解密…………………………………………………… ……………..

2-3.解包…………………………………………………… ……………..

2-4.Windows下的解包………………………………………………… ……………..

2-5.打包……………………………………………………………… … ……………..…

2-6.boot的解包、打包…………………………………………………… …………..

三、固件升级……………………………………………………………………………….

篇前随语:

距离写第一篇2818的教程有一段时间了,在那之前几乎没有任何资料可找到或者说可

供参考,所以写的东东都是灰常简单的。没想到短短的时间,各路高手都出招了,技术各有

不同,玩法各有不同,能改动的不能改动的几乎都有人在研究,好不热闹。

有不少网友让我多写一些这方面的教程,如果时间允许,我也想啊,但是,一来呢,本人时

间有限,工作中杂事比较多,业余时间也比较少,再者也只是对有兴趣的东东才会有动力多

下些功夫去研究,还有就是,本人能力有也限,有些东东掌握的不全面,在一些高手前面就

一菜鸟,所以不是比较有把握的都不敢放到上面来,以免误导别人。

下面介绍的内容以及方法不一定适合所有的RK281x机型,不同的机型一些资源不一定会相

同。这里只是提供一个修改思路,仅供参考。

本文涉及到的一些东东有些来源于网络,有些是参考网友的方法,有些甚至直接“拿来”

用的,在此,先感谢lajidong提供的一些资源和方法,让我受益不少,再者也感谢一下我不

知道名字却在此借用了他们技术的网友。

关于固件的修改,有些机子能找到相应的官方源文件,有些纯山寨机子,整个三无的产品,

所以在这里,对这两种作简单介绍:

一是无官方固件的情况下进行文件提取;

二是有官方固件的情况下进行解包、打包。

一、无官方固件的系统文件提取、解包

在无官方固件情况下,能得到固件方法也有很多种,比如直接从机子里拷贝出来、用本机终

端、用adb等等。这里简单的介绍两种方法进行固件提取:一是可以用之前那篇教程的方法,

用91助手将文件提取出来然后直接进行修改。二是通过本机安装终端,用终端来备份固件,

不过前提是需要Root。

用91助手提取文件的方法就不介绍了,在之前那篇文章里有作介绍,这里着重介绍用终端

来备份出系统文件。

需准备的工具:Universal 、ConnectBot_1.7.1_、

先将三个APK都安装上,然后运行Universal Androot,把Root temporary(Unroot after reboot)

前的勾选上,点击“Root:-)”,完毕后退出,然后运行ConnectBot,在界面中点击左下角的

SSH按钮,选择local,然后随便输入一个名字,出现的界面出现一个“$”和虚拟键盘,在界

面中输入:

cat /proc/mtd

出现如下信息:

$ cat /proc/mtd

dev: size erasesize name

mtd0: 00002000 00000010 "misc"

mtd1: 00004000 00000010 "kernel"

mtd2: 00002000 00000010 "boot"

mtd3: 00004000 00000010 "recovery"

mtd4: 00040000 00000010 "system"

mtd5: 0003a000 00000010 "backup"

mtd6: 0003a000 00000010 "cache"

mtd7: 00080000 00000010 "userdata"

mtd8: 00178000 00000010 "user"

mtd9: 00020000 00000010 "pagecache"

mtd10: 00020000 00000010 "swap"

列出了整机的分区信息,dev为分区设备号,显示共有11个分区,size为分区大小,name

为分区名称。找到我们需要的分区的相息,比如我们此时需备份system的信息,那system

的信息:mtd4: 00040000 00000010 "system",即,第五个分区,大小为40000(16进制,换

算成十进制=262144)。

输入su切换到root下,此时提示是否取得root权限,选择“允许”,再输入dd

if=/dev/block/mtdblock4 of=/flash/ count=262144,因备份的文件比较大,要等一会

后才提示备份完成,即可在用户盘中将备份的文件拷到电脑上进行修改了。

输入exit退出root,再次输入exit退出程序。

$ su

# dd if=/dev/block/mtdblock4 of=/flash/ count=262144

# exit

$ exit

这样就将system的分区备份出来了,也可按上面的办法将boot分区备份出来,以备用。 在

这里不做过多的介绍了,有需要的同鞋可以参考附档中的一篇关于“rk固件提取”的文章,因

为是在网上找到的,所以原作者是哪个就不清楚了,在这里借用一下他的资源,希望他不要

介意咯。

二、有官方固件的系统文件解包

2-1.解包

将放入“解包、打包工具”文件夹内然后在命令行模式输入:

-unpack Temp

上述命令表示用将解压至Temp文件夹下。

2-2.解密

将TempImage内的拷到“解包、打包工具”文件夹下,然后输入:

rkDecrypt

即可将文件解密,不解密的情况下是不能对进行解包的。 (或将

直接拖至上也可直接解包。)解密之后才是标准的cramfs格式,才

能用相应工具解包。

2-3.解包

解密后的现在可以用cramfsck进行解包了,在Linux下对工具包内的

进行解包:

mkdir system

sudo mount -t cramfs -o loop system

tar cvzf system

sudo umount system

rm -r system

tar xzvf

当然,也可用cramfsck来直接解包(cramfsck -x system ),但我以前在2808上测试

时经常出现莫名的问题,所以后来已放弃这种解包方式了。

2-4.Windows下的解包

当然,现在也可以在Windows下也有工具可进行解包了,不过须在NTFS格式下才可以,

且必须保证源文件是正确的,因为在WIN下的工具是不对进行CRC校验的。

通过上面的2-2.的步骤将之解包后,在命令行中输入:

pfn -p1

cramfsck_nocrc -x system

即可在WIN下将解包到“解包、打包工具”的“system”文件夹下了。

以上介绍了固件的解包工作的步骤,比较繁锁。在Win下我们可用批处理一键搞定所有操

作:

-unpack Temp

copy .

rkDecrypt

pfn -p1

rmdir /s /q system 2>nul

cramfsck_nocrc -x system

以上那些内容为对文件的提取、解包工作。剩下的工作就是对system文件进行编辑,例如,

精减固件、美化等,可按“瑞芯微RK2808_安卓(android)系统固件包修改基础教程”中的方法

进行修改即可。

2-5.打包

玩过2808的人就知道,打包成cramfs格式的img文件是非常简单的。所以,将system

文件夹修改好了后,在 Linux系统下将之打包即可。代码:

mkcramfs system system_

为了便于区分,新生成的img为system_,将修改好的img改名为后放

入TempImage文件夹下,然后在命令行模式输入:

-pack Temp update_

这样就将修改好的文件重新打包成升级包了。

同样,在Win下也可以进行打包,在命令行模式输入:

mkcramfs -q system system_

copy system_ .

pfn -p2

-pack Temp update_

2818的解包、打包的方法和2808完全一样,唯一不同的就是,2818的进行了

加密,需要解密后才能继续操作。对于不太懂的同鞋可看一下“瑞芯微RK2808_安卓(android)

系统固件包修改基础教程”,在这里只是增加了Windows下的相关操作,所以写的就比较简

单了。

上面的解包、打包着重在于介绍其操作方法,只是提供一种解决思路,有需要的同学可以跟

据我提供的“一键操作.bat”、“system、boot解包打包.bat”进行增、删,以便更适合自己使用。

重要说明:在Windows下对进行解包、打包还是存在很大的不稳定性,比如改

好后发现程序崩溃、3G dingle不能开打等莫名的问题,很有可能就是在解、打包过程中造

成的。所以,在此强烈建议对的操作还是在Linux下进行,以减少出错的可能性。

也许是我RP不咋滴,唉。。。。

2-6.boot的解包、打包

Boot能修改的地方现在也越来越多了,故在此也放上其解包、打包的方法。 也是

cramfs格式,所以用2-3.的方法就可以正常解包,这里就不作介绍了,请参考2-3

Win下的解包,在命令行模式:

rmdir /s /q boot 2>nul

cramfsck_nocrc -x boot

修改完boot后,打包稍麻烦些,要多增加一个步骤,要先将之打包成普通cramfs后再增加

RK专门的CRC校验值,这样才能正常引导系统。

CRC的校验可以在Win下操作,在命令行模式:

mkcramfs -q boot

rkcrc

del /f /q

三、固件升级

固件升级,有三种方法:量产升级、用户升级和开发工具升级,前两种升级是将所有相关的

文件打包成后用工具升级。后面一种,可单独升级某一个文件,对于没有官方固

件的情况下提取出来的文件,因为缺少相关的文件,所以没办法打包成,用量产

工具和用户工具就没办法对其升级了。所以只能使用开发工具来升级。

开发工具升级的好处就是,不用将全部文件都重新升一次,只需将其中修改过的文件重新升

级即可,其它文件无需再将升级,比如,修改了后只升级它即可,修改了

后单独升级即可。因为不用升级所有文件,对于修改后的固件测试,可大大的

减少等待的时间。

以下对其进行简单的补充,

1.用开发工具单独升级某个文件后有时也会出现莫名的问题,比如测试时好的,重新开机

后或者还原出厂设置后就出问题了。所以还是建议测试OK后再打包用量产工具或用户工具

重新再升级一次较好。(主要针对有官方固件的同鞋,山寨机的就将就一下使用了。)

2.用开发工具升级是OK的,但打包后用量产工具升级过程中,校验时出现错误,一般都

是HWDEF里system分区的size的问题,导致偏移量冲突,此时适当的修改一下system的

size即可。

唉,死了不少脑细胞,感觉还是不太满意,不怎么通俗易读。暂时就这样吧,实在不行哪

天兴致来了再发第三版。

教程中难免会有错误之处,欢迎指正!

locke

不设回复可见,沉了就沉了,沉了说明这教程写的不好。。。

本文标签: 解包固件打包文件