在ubuntu上解包RK3288固件

前言

在Windows瑞芯微有官方解包工具FwFactoryTool可用,修改固件比较方便,但为了更好的了解固件的组成,手动来操作一次这个过程还是很有必要的。

下面试试先在ubuntu上尝试该过程,windows下也应该是可以的。

工具准备

要完成该过程需要这些工具:afptool, img_unpack, img_maker, mkkrnlimg, simg2img, make_ext4fs

其中前4个需要自己编译,可从github仓库克隆代码并编译:

git clone https://github.com/TeeFirefly/rk2918_tools.git
cd rk2918_tools
make

为了方便使用,编译后可执行文件放入/usr/local/bin下:

sudo cp afptool img_unpack img_maker mkkrnlimg /usr/local/bin

而后两个工具可以通过包管理器安装:

sudo apt-get install android-tools-fsutils

上面步骤全部完成后就做好准备了

解包固件

使用img_unpack将固件解包:

img_unpack rk3288-firmware.img img

执行完毕后会输出固件基本信息,并在当前目录下应当为出现img文件夹,cd进去查看即可发现固件解包后得到的两个文件:loader.img, update.img

可知,第一个是loader,而其他部分在undate.img下,所以仍然需要继续解包。

解包update.img

解包update.img要使用afptool

afptool -unpack update.img update

命令执行完毕后,会出现一个update文件夹,里面存放着各个分区的镜像。

这些镜像一般都是 安卓稀疏镜像(android sparse image) ,这些镜像无法被直接挂载修改,因此需要转换。

也可以通过file工具来查看镜像格式。

挂载稀疏镜像

由于稀疏镜像无法挂载,因此要使用simg2img工具将从update.img取得的分区转换为普通的ext4镜像:

#将system.img转为ext4镜像
simg2img system.img system.img.ext4

然后挂载镜像即可修改

#挂载到/mnt/androidsystem/下
sudo mount system.img.ext4 /mnt/androidsystem/

回包稀疏镜像

在修改完毕后,就可以使用make_ext4fs工具来回包镜像了:

#将/mnt/androidsystem/打包成system.img
make_ext4fs -s -l 1536M system.img /mnt/androidsystem/

其中-s代表稀疏镜像, -l指定分区大小,分区大小需要根据parameter表来,若不修改则应维持与原本一致。

可以通过解包update.img后得到的parameter.txt计算出分区大小,因为该文件描述的是扇区,可通过下面方法快速计算:

#利用shell可快速计算,如system分区大小为0x00200000
echo $((0x00200000 * 512 / 1024 / 1024)M)

如果修改过后的镜像超出原本parameter.txt文件描述的分区大小,则必须对应的修改该文件,修改时注意分区均需4M对齐。

回包系统镜像

首先要回包成update.img,这里需要先将parameter.txt复制为parameter文件,然后再依次使用afptoolimg_maker回包:

#回到img目录下,将update中解包的parameter.txt复制到本目录
cp update/parameter.txt parameter

#将update回包
afptool -pack . ../newUpdate.img

#与loader.img一起打包成最终的系统固件, -rk33是平台参数,解包时可见该参数
img_maker -rk33 loader.img newUpdate.img rk3288_firmware.img

一切顺利的话,现在就应该得到一个rk3288_firmware.img的固件啦。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值