Skip to content

# 6.3. J6X OTA 打包工具

## 6.3.1. OTA 打包工具介绍

OTA打包工具位于”img_packages/ota_tools”路径下。

    > tree
            .
            ├── hdiffz           // 差分工具
            ├── hpatchz          // 差分工具
            ├── j6e-gpt.json     // GPT 工具
            ├── mk_otapackage.py // ota 打包工具
            ├── ota_pack_tool.sh // ota 打包脚本，该工具是对mk_otapackage.py的封装
            ├── ota_process      // ota 升级用到的二进制工具，放入ota包中
            └── private_key.pem  // ota 制作升级包会用到的私钥

一般使用ota_pack_tool.sh制作所需的ota升级包，支持ota升级包解包，解包后重打包，制作升级包以及制作差分包等。使用方法如下：

    Usage: ./ota_pack_tool.sh [OPTIONS]...
    Options:
    -x, -unpack <ota_package>        Unpack the given OTA package file.
    -r, -repack                      Repack the files into a new OTA package.
    -c, -create <pack_type> -d <source_dir>
            Generate OTA package by source dir or img_packages.
            <pack_type>: middleware, app, sys, full ... etc.
            <source_dir>: app and middleware require the fs dir or xxx.img, sys and full require img dir.
            (e.g.)run "./ota_pack_tool.sh -c app -d /root/app/" or "./ota_pack_tool.sh -c app -d /root/app/app.img".
            (e.g.)run "./ota_pack_tool.sh -c sys -d /root/img_packages/"
    -i, -inc <pack_type> -old <old_pkg> -new <new_pkg>
            Create an incremental OTA package.
            <pack_type>: sys, full, middleware, app ... etc.
            <old_pkg>, <new_pkg>: ota pack, xxx.zip.
            (e.g.)run "./ota_pack_tool.sh -inc app -old /old/app.zip -new /new/app.zip".
    -h, -help                        Display this help message.

## 6.3.2. OTA 升级包解包与重打包

升级包解包：

    # 解包，将OTA包all_in_one_full.zip解包，解包后的分区镜像位于./out/ota_unpack
    ./ota_pack_tool.sh -x all_in_one_full.zip

    xx/ota_tools/out/ota_unpack > tree
    .
    ├── acore_cfg.img
    ├── basesystem.img
    ├── bl31.img
    ├── boot.img
    ├── data.json
    ├── gpt.conf    // ota 配置文件
    ├── optee.img
    ├── ota_process // ota 升级用到的二进制工具
    ├── system.img
    ├── system_verity.img
    ├── uboot.img
    └── vbmeta.img

升级包重打包：

升级包解包后，可以更新./out/ota_unpack下的镜像，重新制作ota包，使用的OTA配置文件与ota_process均位于./out/ota_unpack。该方法无法修改OTA配置文件gpt.conf。

    # 将位于./out/ota_unpack目录的分区镜像重新打包
    ./ota_pack_tool.sh -r

## 6.3.3. OTA 制作普通升级包

可以制作app.zip，middleware.zip，系统升级包与全量升级包等。使用的分区表配置文件与ota_procee均位于ota_tools目录下，可根据实际需求修改分区表j6e-gpt.json。

    -c, -create <pack_type> -d <source_dir>
            Generate OTA package by source dir or img_packages.
            <pack_type>: middleware, app, sys, full ... etc.
            <source_dir>: app and middleware require the fs dir or xxx.img, sys and full require img dir.
            (e.g.)run "./ota_pack_tool.sh -c app -d /root/app/" or "./ota_pack_tool.sh -c app -d /root/app/app.img".
            (e.g.)run "./ota_pack_tool.sh -c sys -d /root/img_packages/"

    # 将app目录下的文件制作成app.img，并生成app.zip
    ./ota_pack_tool.sh -c app -d /root/app/

    # 将app.img生成app.zip
    ./ota_pack_tool.sh -c app -d /root/app/app.img

    # 将/root/img_packages/目录下的分区镜像制作成sys系统包（all_in_one.zip）
    ./ota_pack_tool.sh -c sys -d /root/img_packages/

    # 将/root/img_packages/目录下的分区镜像制作成full全量包（all_in_one_full.zip）
    ./ota_pack_tool.sh -c full -d /root/img_packages/

    ***

## 6.3.4. OTA 制作差分升级包

可以制作app_inc.zip，middleware_inc.zip，系统差分包与全量差分包（只支持secure镜像）等。使用的OTA配置文件与ota_procee均为new包解压所得。

    -i, -inc <pack_type> -old <old_pkg> -new <new_pkg>
            Create an incremental OTA package.
            <pack_type>: sys, full, middleware, app ... etc.
            <old_pkg>, <new_pkg>: ota pack, xxx.zip.
            (e.g.)run "./ota_pack_tool.sh -inc app -old /old/app.zip -new /new/app.zip".

    # 基于/old/app.zip制作/new/app.zip的差分包app_inc.zip
    ./ota_pack_tool.sh -inc app -old /old/app.zip -new /new/app.zip

    # 基于/old/all_in_one_full_signed.zip制作/new/all_in_one_full_signed.zip的差分包all_in_one_full_signed_inc.zip
    ./ota_pack_tool.sh -inc full -old /old/all_in_one_full_signed.zip -new /new/all_in_one_full_signed.zip

    ***