跳到主要内容

导出设备系统

当用户已经在一台设备上完成工作环境的部署,需要将当前环境完整导出,以批量部署到其它同设备上,可以通过导出设备文件系统来备份当前的开发环境。

导出设备系统分为两步:

  1. 在设备上导出 Ubuntu 根文件系统 rootfs;

  2. 二次打包完整固件,将 Ubuntu rootfs 与发布固件的其他分区组合,完成二次打包,生成新的完整固件。

4.1. 导出 rootfs

注意以下操作均在设备端上操作!

  1. 在设备的 Ubuntu 环境下,安装 fireflydev

    sudo apt update
    sudo apt install fireflydev
  2. 安装 fireflydev 后,就能使用 ff_export_rootfs 脚本导出根文件系统 仅允许导出到外部存储设备或 /userdata/根目录,禁止导出至设备的其他目录!

    • 建议使用容量较大的移动硬盘

    • 导出工具会执行 apt clean 等操作以减小文件系统大小

    • 将根文件系统导出,例如导出到 /media/firefly/AC91-C4AE/ 目录(需要等待一定时间):

ff_export_rootfs /media/firefly/AC91-C4AE/
* 压缩文件系统,删除不必要的空白空间以减少存储器资源的占用:

# 有部分客户说导出的 rootfs 大小为 3.3G,可实际只用了 3G,原因是没有对 rootfs 进行压缩
e2fsck -p -f Firefly_Ubuntu_18.04.6_rootfs.img
resize2fs -M Firefly_Ubuntu_18.04.6_rootfs.img

4.2. 二次打包完整固件

注意以下操作均在 PC 机端(x86-64 架构)上操作!

  1. 安装必要的软件包:sudo apt-get install lib32stdc++6

  2. 下载二次打包工具:firefly-linux-repack(提取码:1234)

  3. 解压二次打包工具:

    tar -xzf firefly-linux-repack.tgz
    cd firefly-linux-repack

目录如下:

firefly-linux-repack
├── bin
│   ├── afptool
│   └── rkImageMaker
├── pack.sh # 打包脚本
├── Readme_en.md
├── Readme.md
└── unpack.sh # 解包脚本

4. 解包操作: 把官方发布的 Ubuntu 固件拷贝到 firefly-linux-repack 根目录,重命名为 update.img,执行解包脚本 unpack.sh。解包完成后,各分区文件在 output 目录下。

mv /path/to/ROC-RK3566-PC_Ubuntu18.04-r21156_v1.2.4a_220519.img update.img
./unpack.sh

5. 打包操作:保持当前目录结构,文件名等不变,接入移动硬盘到 PC 机,把前面导出的 Ubuntu rootfs 替换 output/Image/rootfs.img,然后执行打包脚本 pack.sh

cp /media/customer/1878-4615/Firefly_Ubuntu_18.04.6_rootfs.img /path/to/firefly-linux-repack/output/Image/rootfs.img
./pack.sh

6. 新的完整固件为当前目录的 new_update.img