[ROC-RK3568-PC] 手把手教你在Linux下解包与打包Ubuntu系统固件

Posted Neutionwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ROC-RK3568-PC] 手把手教你在Linux下解包与打包Ubuntu系统固件相关的知识,希望对你有一定的参考价值。

📢 ROC-RK3568-PC入门篇连载进程:

[ROC-RK3568-PC] 手把手教你把出厂的Android系统烧写为Ubuntu系统
[ROC-RK3568-PC] 手把手教你制作Ubuntu系统TF卡启动盘
[ROC-RK3568-PC] 手把手教你编译Linux_SDK并打包Ubuntu系统固件
[ROC-RK3568-PC] 手把手教你解包Ubuntu系统固件


在前面我带领大家如何主要讲述如何在Windows系统下对Ubuntu固件进行解包,但是假设我想在Linux系统下解包,那怎么办?别急,这篇给大家揭晓!

1、准备工具

工欲善其事,必先利其器,为了尽可能避免发生奇怪的错误,我在这里列举一下大家需要用到的工具:

  • PC机:Ubuntu 18.04系统
  • 解包与打包工具:firefly-linux-repack

firefly-linux-repack可以到Firefly官方进行下载,链接如下:

https://www.t-firefly.com/doc/download/107.html

大家点击以下图片中指向的地方进行下载:

2、Ubuntu固件下载

依然是之前的Firefly官方下载页面:https://www.t-firefly.com/doc/download/107.html

Firefly官方提供了两个版本的Ubuntu系统,大家可以各取所需~~~

假如大家点击了Ubuntu 20.04,继续点击一般系统(第二项的RTLinux是实时系统,一般场合我们用不到)

点击7z文件进行下载(第一项的md5是校验文件)

3、使用firefly-linux-repack工具解包与打包

(1)安装环境依赖;

sudo apt-get install lib32stdc++6

(2)查看使用方法;

neutionwei@x:~/Downloads/firefly-linux-repack$ ls
bin  pack.sh  Readme_en.md  Readme.md  unpack.sh  update.img
neutionwei@x:~/Downloads/firefly-linux-repack$ cat Readme.md
1. 解包
    把官方发布的固件拷贝到当前目录,重命名为update.img , 执行unpack.sh
    解包完成后,生成的文件在output目录下.

2. 合包
    保持当前目录结构,文件名等不变,用客户自己的文件替换output/下同名的文件
    执行pack.sh, 执行完后,生成new_update.img,即为打包好的固件
	rootfs文件名必须为rootfs.img
	parameter.txt文件名必须为parameter.txt

注意:
	合包过程中,如果rootfs分区不是最后一个分区,那么程序会根据rootfs文件的大小,
	自动修改parameter.txt中rootfs分区的大小。
	如果用户自己有改动parameter.txt,请留意整个合包的流程。

(3)解压并移动Ubuntu固件到firefly-linux-repack目录并重命名为update.img

neutionwei@x:~/Downloads$ 7z x ROC-RK3568-PC-UBUNTU20.04-GPT-20211012-1436.7z
neutionwei@x:~/Downloads$ mv ROC-RK3568-PC-UBUNTU20.04-GPT-20211012-1436.img firefly-linux-repack/update.img

(4)解包update.img

neutionwei@x:~/Downloads/firefly-linux-repack$ ./unpack.sh 
start to unpack update.img...
********RKImageMaker ver 1.67********
Unpacking image, please wait...
Exporting boot.bin
Exporting firmware.img
Unpacking image success.
android Firmware Package Tool v1.67
Check file... OK
------- UNPACK ------
package-file	0x0000000000000800	0x000000000000011A
Image/MiniLoaderAll.bin	0x0000000000001000	0x00000000000679C0
Image/parameter.txt	0x0000000000069000	0x00000000000001CD
Image/uboot.img	0x0000000000069800	0x0000000000400000
Image/misc.img	0x0000000000469800	0x000000000000C000
Image/boot.img	0x0000000000475800	0x0000000001F7F000
Image/recovery.img	0x00000000023F4800	0x0000000001F0C600
Image/rootfs.img	0x0000000004301000	0x0000000000400000
Unpack firmware OK!
------ OK ------
Unpacking update.img OK.
Press any key to quit:

(5)查看各个分区文件;

neutionwei@x:~/Downloads/firefly-linux-repack$ tree output/
output/
├── Image
│   ├── boot.img
│   ├── misc.img
│   ├── recovery.img
│   ├── rootfs.img
│   └── uboot.img
├── MiniLoaderAll.bin
├── package-file
└── parameter.txt

1 directory, 8 files

(6)自行替换某个分区文件;

(7)打包新的Ubuntu固件;

neutionwei@x:~/Downloads/firefly-linux-repack$ ./pack.sh 
start to make update.img...
Resize rootfs partition
dumpe2fs 1.44.1 (24-Mar-2018)
Android Firmware Package Tool v1.67
------ PACKAGE ------
Add file: ./package-file
package-file,Add file: ./package-file done,offset=0x800,size=0x11a,userspace=0x1
Add file: ./Image/MiniLoaderAll.bin
bootloader,Add file: ./Image/MiniLoaderAll.bin done,offset=0x1000,size=0x679c0,userspace=0xd0
Add file: ./Image/parameter.txt
parameter,Add file: ./Image/parameter.txt done,offset=0x69000,size=0x1d9,userspace=0x1
Add file: ./Image/uboot.img
uboot,Add file: ./Image/uboot.img done,offset=0x69800,size=0x400000,userspace=0x800
Add file: ./Image/misc.img
misc,Add file: ./Image/misc.img done,offset=0x469800,size=0xc000,userspace=0x18
Add file: ./Image/boot.img
boot,Add file: ./Image/boot.img done,offset=0x475800,size=0x1f7f000,userspace=0x3efe
Add file: ./Image/recovery.img
recovery,Add file: ./Image/recovery.img done,offset=0x23f4800,size=0x1f0c600,userspace=0x3e19
Add file: ./Image/rootfs.img
rootfs,Add file: ./Image/rootfs.img done,offset=0x4301000,size=0x400000,userspace=0x800
Add CRC...
Make firmware OK!
------ OK ------
********RKImageMaker ver 1.67********
Generating new image, please wait...
Writing head info...
Writing boot file...
Writing firmware...
Generating MD5 data...
MD5 data generated successfully!
New image generated successfully!
Making update.img OK.
/home/neutionwei/Downloads/firefly-linux-repack
Press any key to quit:
neutionwei@x:~/Downloads/firefly-linux-repack$ ls
bin  new_update.img  output  pack.sh  Readme_en.md  Readme.md  unpack.sh  update.img

(8)new_update.img就是新的Ubuntu固件。

写到最后

祝各位生活愉快!肝字不易,素质三连是对我的支持与肯定hahaha😘

以上是关于[ROC-RK3568-PC] 手把手教你在Linux下解包与打包Ubuntu系统固件的主要内容,如果未能解决你的问题,请参考以下文章

[ROC-RK3568-PC] 手把手教你打包能使用Etcher或dd命令烧写的Ubuntu系统固件

[ROC-RK3568-PC] 手把手教你打包能使用Etcher或dd命令烧写的Ubuntu系统固件

[ROC-RK3568-PC] 手把手教你编译Linux_SDK并打包Ubuntu系统固件

[ROC-RK3568-PC] 手把手教你制作Ubuntu系统TF卡启动盘

[ROC-RK3568-PC] 手把手教你编译与打包Android 11系统固件

[ROC-RK3568-PC] 手把手教你把出厂的Android系统烧写为Ubuntu系统