瑞芯微Rockchip开发者社区
直播中

王秀珍

7年用户 1469经验值
私信 关注
[问答]

怎样在ubuntu上去修改固件呢

怎样在ubuntu上去修改固件呢?有哪些修改步骤呢?

回帖(1)

李蒙娜

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

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

工具准备


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

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

git clone
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文件,然后再依次使用afptool与img_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的固件啦。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分