使用平台:RK3588
使用固件:Station_M3_Ubuntu_20.04_Gnome_eMMC_20220817
按照之前的步骤,我们使用fireflydev来获取根文件
1.在设备的Ubuntu中更新软件并下载fireflydev(即RK-35...设备)
sudo apt update
sudo apt install fireflydev
2. 安装fireflydev后,用ff_export_rootfs脚本导出根文件系统
建议使用大容量移动硬盘
ff_export_rootfs /media/firefly/02F87178F8716BB3 //后面这个目录是指硬盘接入后挂载的目录
完成导出
完成后对导出的文件进行压缩
e2fsck -p -f /medid/firefly/02F87178F8716BB3/... //此处忽略了导出的img名称
resize2fs -M /medid/firefly/02F87178F8716BB3/...
这里导出的是rootfs.img文件,可以使用RKdevTool进行分盘烧录。(分盘烧录容易出问题,没有深入研究)
3. 二次打包
由于firefly官方提供的解包软件firefly-linux-repack不支持其解包非官方发布的镜像,所以解包操作需要通过其他方式进行。
这里参考了野火的解包打包步骤
完整镜像的解包和打包 — [野火]嵌入式Linux镜像构建与部署——基于LubanCat-RK系列板卡 文档 (embedfire.com)
使用RKDevTool解包打包打开RKDevTool,进入高级功能选项页,找到解包功能,选择要解包的镜像,点击解包按钮,等待解包完成。
解包后的文件保存在RKDevTool的Output目录中。
Output目录中有两个文件一个文件夹
boot.bin:打包时的loader,也就是MiniLoaderAll.bin文件
firmware.img:打包时afptool生成的固件
Android目录下为firmware.img的展开内容
进入Android目录,有一个文件一个文件夹
package-file:分区与分区镜像名的对应关系
Image:firmware.img展开后的内容,也就是解包后的分区镜像。
进入Image目录,根据不同操作系统,有以下三类文件
分区表:parameter.txt
loader文件:MiniLoaderAll.bin
分区镜像:boot.img、misc.img等以img结尾的分区镜像文件
确认解包文件无误后可以进行打包操作
1.首先我们将Output\Android目录下的内容复制到rockdev目录下
红框中的内容是我们的打包工具及辅助打包的可执行文件,Image目录下存放了我们的分区镜像, package-file是分区与分区镜像文件的对应关系。如果我们对某一分区镜像文件做出了改变,在打包时要注意镜像文件名正确,与package-file文件中的命名及路径一致。
2.把之前导出的rootfs.img文件放到Image中替换掉原来的rootfs.img
3.此时打开Image/parameter文件
因为在RK3588完成了环境的部署,我们导出的rootfs.img文件会比较大(十几个G甚至更多),所以我们需要在parameter文件中定义一下rootfs的大小,更改userdata的起始地址。
0x002424a00具体的值我是通过其他打包步骤得到的,具体可以参考我的另一篇文章。
firefly RK356x提取根文件并打包成完整镜像-CSDN博客如果会算,也可以自行计算。
4.回到rockdev目录下
双击执行rk35880mkupdate
5.等待打包完成
打包完成后,当前文件夹内出现了update.img文件,这就是打包后的完整镜像文件
使用烧录工具,将打包好的镜像烧录到板卡中,可以正常启动