正常情况下我们只要将system中的内容按需求更改后重新编译即可。最近需要修改"rk3288"的system,只有一个别人提供的固件和一份没编译过的android源码,因为编译android需要的时间太长,于是就打起了解包的主意。在 rk3288 的 linux-update/rockdev目录下查看了 unpack.sh:
./rkImageMaker -unpack update.img output || pause
./afptool -unpack output/firmware.img output || pause
固件是update_xxx.img,所以按照要求改成 update.img,然后在当前目录下(linux-update/rockdev/)执行下面两句:
cp update_xxx.img update.img
./unpack.sh update.img
执行完后可以发现多了一个output目录,进入output下的Image目录可以发现刚刚解包的文件,包括Andorid编译生成的各种img文件,然后将其中的system.img文件拷贝到根目录,执行以下几句:
cp system.img /
cd /
mkdir newdir
这样我们在根目录创建了一个newdir,同时也将system.img拷贝到了根目录('/'),执行下面的命令:
mount -t ext4 -o loop system.img newdir
该命令是将 system.img 挂载在刚刚创建的 newdir 中,可以在该目录中看到 system 的原文件结构,继续执行:
mkdir sysdir
cp /newdir/* /sysdir/ -r
再在

本文介绍了如何在没有完整Android源码的情况下,通过解包和修改rk3288固件中的system.img,以满足特定需求。利用unpack.sh脚本解包update.img,随后将修改后的文件结构打包成新的system.img,并通过make_ext4fs和simg2img工具确保格式正确,最后成功烧录到设备。

1179

被折叠的 条评论
为什么被折叠?



