之前讲到如何从打包的固件镜像出发去分析系统的一些信息,其中主要的步骤就是用固件解包工具去拆分固件。既然讲到解包固件,可能就朋友就会想到要如何去生成打包的固件。
一直来都是用打包后的固件去刷机,既然Ubuntu各分区的镜像我们通过解包的操作已经得到,那我们先试试通过刷分区的方式给
开发板刷Ubuntu,试试看是否正常。
先用工具给固件解包得到各分区的镜像,具体的步骤请看上一篇教程。
待解包好后,点击Download Image标签,按下图填好分区的信息和选择正确的分区镜像。这里有配置好的工具,并配置好打包脚本,使用方便。
下载前,先给开发板做个低格清空Flash,确保我们实验的结果准确无误。
点击下载,3GB多的固件下载比较慢,我不得不又吐槽一次:
下载成功,等系统正常跑起来,Firefly Ubuntu系统酷酷的桌面壁纸就出来了。
转入正题,马上尝试打包固件。
之前已经编译生成了boot.img,现在用这个新的boot.img重新打包一个固件出来,虽然boot.img里我们还没有改什么。
打包固件,我们会用到几个工具,放在OutputAndroid目录,如图:
图中的3个文件就是用来打包的工具,3个文件的作用如下:
mkupdate.bat 是生成打包固件的批处理脚本,用来解放程序猿的大脑
AFPTool.exe 看名字可能是android firmware pack tool的意思
RKImageMaker.exe 看名字可能是RK平台格式镜像生成器的意思
上述解释并非出自官方,未从考证,纯属我个人瞎猜脑补而来。
再查看下mkupdate.bat文件的内容。注意千万别直接双击,因为双击就运行了,运行起来打包过程很漫长的。但是如果不小心双击了,也别慌,请静静地关闭窗口。
脚本的内容主要就是调用两个程序:
第一步用Afptool打包本目录下的相关镜像,生成firmware.img文件,打包的内容由目录里的package-file控制。
第二步用RKImageMaker生成RK平台格式的可烧录镜像,镜像内容有RKLoader和上一步生成的android firmware,输出的镜像文件为update.img。
看到这里,应该可以和之前解包而来的firmware.img和Android目录里的文件联系起来了吧。有兴趣的朋友可以把脚本里del firmware.img语句删除,保留此文件,和之前解包生成的firmware.img对比。
了解打包流程后,可以准备生成新的固件了。
把之前编译好的boot.img改名为linux-boot.img后,拷贝替换Android目录里同名文件,双击mkupdate.bat:
程序在打包过程中,还输出了一些LOG,感兴趣的朋友可以去看看,可以了解到RK固件的更多信息。
正常的话,会在本目录下生成update.img,这个就是打包后的固件:
烧录固件:
经过漫长的等待,烧录终于完成,有接串口工具的朋友就已经可以看到开发板在愉快的吐LOG了。
但是好像进不了系统!!!心凉了一大截,赶紧接上串口看看:
又是根文件系统没正常挂载,翻翻解包后的parameter文件内容:
坑在这里!!!修改为:
为什么有这个坑,我也还没搞明白。
关闭烧录工具,重新打包固件,并烧录固件。
这次系统终于顺利跑了起来,进入了Firefly酷酷的桌面。再次确认下系统内核情况:
从内核信息看,确实是没错哈,是我新编译的内核~
到这里已经可以做不少事情了哦,可以折腾起来了。
原作者:牛头