文章目录

  • 前言
  • 工具准备
  • 解包固件
  • 解包update.img
  • 挂载稀疏镜像
  • 回包稀疏镜像
  • 回包系统镜像

前言

在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的固件啦。

在ubuntu上解包RK3288固件相关推荐

  1. linux系统软件包依赖关系,Ubuntu解决包依赖关系

    Ubuntu解决包依赖关系: 出现的错误有: 有一些软件包无法被安装.如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的.该版本中可能会有一些您需要的软件 包尚未被创 ...

  2. Linux 下解包华为固件包UPDATE.APP

    注:本文所有图片保存EverNote 印象笔记(www.yinxiang.com)当中, 如果有其帐号登录后即可查看全部图片. 如没有帐号可用e-mail >>点击注册免费印象笔记 Lin ...

  3. 在Ubuntu上解挂U盘

    在Ubuntu上解挂U盘,当然也可以在Gnome中点击..但想着用shell 一般gome 也会自动把U盘挂载.. 但是.. 也可以按下面的步骤. 1.sudo fdisk -l 找到你的U盘,如无意 ...

  4. 高通固件解包IPQ6000固件解包

    Ubuntu18 Flash芯片型号是 GD9FS1G8F2AMGI,兆芯工业级 128Mx8,2K+128B Page,128K+8K Block. 芯片ID是 C8 A1 80 15 42 加载m ...

  5. Ubuntu .deb包安装方法

    使用apt-get方法安装的软件,所有下载的deb包都缓存到了/var/cache/apt/archives目录下了,所以可以把常用的deb包备份出来,甚至做成ISO工具包.刻盘,以后安装Ubuntu ...

  6. ubuntu 16.04修复固件刷新失败的LimeSDR-USB V1.4

    前两天用gnuradio做实验的时候发现报错说固件版本低,并提示使用LimeUtil --update升级,但是升级的过程中失败,至此板子已经无法被计算机识别.或使用lime suite有下列问题: ...

  7. 安装ubuntu系统操作系统详细流程、ubuntu管理包命令apt和dpkg命令详细说明、一键部署openstack环境、DBeaver下载驱动报错和登录提示RSA public key.. 解决方法

    文章目录 安装ubuntu操作系统 安装vmware,我这的版本是16 . 创建虚拟机 设置网络.[你没有啥特殊需求,忽略该步骤] 开启处理器虚拟化 开始安装ubuntu系统 配置sshd和修改roo ...

  8. 勘智K210-打包Kfpkg固件及其使用

    K210 的固件包主要有两种格式: .bin 和 .kfpkg , .kfpkg 可以包含多个.bin文件或者模型文件. 本文主要介绍如何制作kfpkg文件及其使用. 烧录 .bin 或者 .kfpk ...

  9. 嵌入式stm32f411系列-- --学前准备(mdk+器件支持包+stm32cubemx+固件包)

    开篇先说一句废话···· 本旺名字叫萨摩耶,,Please 叫我旺财,,,哈哈,招财进宝嘛! 开篇 之前学习了51单片机最基础的Stc89c52,因为一些原因,需要提前学习stm32,加上专业也会学习 ...

最新文章

  1. Python基础教程学习笔记:第一章 基础知识
  2. JSTL (标准标签库)
  3. Nacos安装和服务注册
  4. clear nTotal nNum=1计算机考试,信息学奥赛常考算法——模拟法
  5. 【渝粤教育】电大中专Office办公软件 (4)作业 题库
  6. centos65编译安装lamp和lnmp
  7. log4j日志文件 log4j.xml log4j.properties配置
  8. 服务器x不会下载mysql_MySQL_解决MySQL数据库死掉以及拒绝服务的方法,从Mysql 5.x的某个版本之后,MySQ - phpStudy...
  9. Web后端学习笔记 Flask(8) WTForms 表单验证,文件上传
  10. 【笔记】vim如何删除重复行
  11. redis,ruby安装
  12. 实验二 任务二 体重测量
  13. 游戏开发入门系列(目录)
  14. centos7下安装flex,bison
  15. html中div是什么意思
  16. 微信小程序之解决background-image属性失效
  17. ssh登录极路由后台_各品牌路由器登录网址大全 路由器默认用户名/密码
  18. 小程序中 使用canvas 生成推广图片——wepy框架
  19. C++入门第一阶段——基础篇
  20. python : time模块weekday()

热门文章

  1. 人工智能和人类智能的本质区别是什么(一)
  2. java 组合实现汽车类 问题描述:一辆Car有(has)四个轮子(Wheels)和一个发动机(Engine)。现在要求用组合方法设计类Car、类Wheel和类Engine。
  3. 【MindSpore】DCGAN生成漫画头像-----利用华为云modelarts云终端实现
  4. 8in1模拟器v2模拟飞行_重新想象飞行模拟器:过去和现在
  5. _stdcall是什么?
  6. mysql update join 更新_mysql多表join时候update更新数据的方法 | 很文博客
  7. c++实现汉诺塔(图文并茂)
  8. DELLR420配置RAID
  9. 女朋友撒娇让我教她HashMap
  10. python 恶搞(仿粽子写的)