【求助】OpenHarmony 4.0 OTA 本地升级失败(已解决)
虽然网上OHOS OTA包制作和升级资料有一些,但大多是基于hi3516或3.2 beta3,并且缺少细节步骤和修改,拜读了多位大佬的文章,经过多次尝试OTA仍升级失败,还望了解OpenHarmony OTA的老哥指点指点~ 我的详细操作步骤如下: OpenHarmony 软件版本:OpenHarmo
虽然网上OHOS OTA包制作和升级资料有一些,但大多是基于hi3516或3.2 beta3,并且缺少细节步骤和修改,拜读了多位大佬的文章,经过多次尝试OTA仍升级失败,还望了解OpenHarmony OTA的老哥指点指点~
我的详细操作步骤如下:
OpenHarmony 软件版本:OpenHarmony 4.0.9.6
平台:RK3568
1、下拉4.0 beta2 版本代码后,全量编译得到基准版本软件A,并烧录images。
./build.sh --product-name rk3568 --ccache
2、修改部分源码,方便验证OTA升级成功。修改后删除/out,重新全量编译,得到用于制作OTA包的images
applications\standard\permission_manager\permissionmanager\src\main\ets\ServiceExtAbility\ServiceExtAbility.ts
- const TAG = 'PermissionManager_Log: ';
+ const TAG = 'PermissionManager_Log B: ';
3、制作OTA包
3.1 拷贝device/board/hisilicon/hispark_taurus/linux/updater/config/rsa_private_key2048.pem至base/update/packaging_tools/
在base/update/packaging_tools/下创建sign_cert文件夹,并拷贝device/board/hisilicon/hispark_taurus/linux/updater/config/signing_cert.crt至base/update/packaging_tools/sign_cert/
packaging_tools$ tree
├── ...
├── rsa_private_key2048.pem
├── sign_cert
│ └── signing_cert.crt
├── ...
3.2 在base/update/packaging_tools/下创建target_package和output_package文件夹。在target_package中创建updater_config文件夹
target_package文件夹内容如下:
$ tree target_package/
target_package/
├── boot_linux.img
├── chip_prod.img
├── config.cfg
├── eng_system.img
├── MiniLoaderAll.bin
├── parameter.txt
├── ramdisk.img
├── resource.img
├── sys_prod.img
├── system.img
├── uboot.img
├── updater_binary
├── updater_config
│ ├── BOARD.list
│ ├── updater_specified_config.xml
│ └── VERSION.mbn
├── updater.img
├── userdata.img
└── vendor.img
1 directory, 18 files
其中:
> *img 和*.cfg取自上一步骤编译生成的镜像文件:out/rk3568/packages/phone/images/
> updater_binary 二进制升级文件取自上一步骤生成的镜像文件:out/rk3568/packages/phone/system/bin/
> updater_config/BOARD.list取自device/board/hisilicon/hispark_taurus/linux/updater/config/BOARD.list,内容改为:
HI3516
RK3568
updater_config/VERSION.mbn取自device/board/hisilicon/hispark_taurus/linux/updater/config/VERSION.mbn,内容改为:
OpenHarmony 4.0.9.6
updater_config/updater_specified_config.xml取自device/board/hisilicon/hispark_taurus/linux/system/updater_specified_config.xml,内容改为:
<?xml version="1.0"?>
<package>
<head name="Component header information">
<info fileVersion="01" prdID="123456" softVersion="OpenHarmony 4.0.9.6" date="2021-03-11" time="12:30">head info</info>
</head>
<group name = "Component information">
<component compAddr="vendor" compId="12" resType="05" compType="0" compVer="1.0">./vendor.img</component>
<component compAddr="system" compId="18" resType="05" compType="0" compVer="1.0">./system.img</component>
</group>
</package>
3.3 在base/update/packaging_tools/目录下执行以下命令生成OTA全量包
packaging_tools$ python3 build_update.py ./target_package/ ./output_package/ -pk ./rsa_private_key2048.pem
packaging_tools$ python3 build_update.py ./target_package/ ./output_package/ -pk ./rsa_private_key2048.pem
2023-08-30 14:53:33 INFO : VERSION.mbn file parsing complete! path: ./target_package/updater_config/VERSION.mbn
2023-08-30 14:53:33 INFO : BOARD.list file parsing complete! path: ./target_package/updater_config/BOARD.list
2023-08-30 14:53:33 INFO : XML file parsing completed!
2023-08-30 14:53:33 INFO : []
2023-08-30 14:53:33 INFO : Image vendor full processing completed
2023-08-30 14:53:35 INFO : Image system full processing completed
2023-08-30 14:53:35 INFO : All full image processing completed! image count: 2
2023-08-30 14:53:35 INFO : Get hash content success! path: ./target_package/updater_config/VERSION.mbn
2023-08-30 14:53:35 INFO : Get hash content success! path: ./target_package/updater_config/BOARD.list
2023-08-30 14:53:37 INFO : Get hash content success! path: /home/xxx/OHOS/OpenHarmony_v4.0_beta2/base/update/packaging_tools/target_package/full_imagevendornyioizc2
2023-08-30 14:53:44 INFO : Get hash content success! path: /home/xxx/OHOS/OpenHarmony_v4.0_beta2/base/update/packaging_tools/target_package/full_imagesystembrvksprp
2023-08-30 14:53:44 INFO : Write package header complete
2023-08-30 14:53:44 INFO : Add component b'/version_list'
2023-08-30 14:53:44 INFO : component information StartOffset:180
2023-08-30 14:53:44 INFO : Add component b'/board_list'
2023-08-30 14:53:44 INFO : component information StartOffset:267
2023-08-30 14:53:44 INFO : Add component b'/vendor'
2023-08-30 14:53:44 INFO : component information StartOffset:354
2023-08-30 14:53:44 INFO : Add component b'/system'
2023-08-30 14:53:44 INFO : component information StartOffset:441
2023-08-30 14:53:44 INFO : Write hashdata sign tlv complete
2023-08-30 14:53:44 INFO : .bin package header signing success! SignOffset: 806
2023-08-30 14:53:44 INFO : Add component to package StartOffset:806
2023-08-30 14:53:44 INFO : Write component complete ComponentSize:19
2023-08-30 14:53:44 INFO : Add component to package StartOffset:825
2023-08-30 14:53:44 INFO : Write component complete ComponentSize:14
2023-08-30 14:53:44 INFO : Add component to package StartOffset:839
2023-08-30 14:53:45 INFO : Write component complete ComponentSize:268431360
2023-08-30 14:53:45 INFO : Add component to package StartOffset:268432199
2023-08-30 14:53:47 INFO : Write component complete ComponentSize:1610608640
2023-08-30 14:53:47 INFO : Write update package complete
2023-08-30 14:53:47 INFO : Create update package .bin complete! path: /home/xxx/OHOS/OpenHarmony_v4.0_beta2/base/update/packaging_tools/output_package/update_bin-qcetk2ur
2023-08-30 14:53:47 INFO : Verse-script.us generation complete!
2023-08-30 14:53:47 INFO : loadScript.us generation complete!
2023-08-30 14:53:47 INFO : []
2023-08-30 14:54:21 INFO : []
2023-08-30 14:54:22 INFO : Resource cleaning completed!
得到OTA全量包base/update/packaging_tools/output_package/updater_full.zip,解压后包含:
board_list、build_tools.zip、update.bin、version_list
4、升级OTA包
将生成的OTA包通过hdc 放入设置data/updater/下
$ hdc file send xxx\OHOS\OpenHarmony_v4.0_beta2\base\update\packaging_tools\output_package\updater_full.zip /data/updater/
进入hdc shell启动OTA升级
$ hdc shell
# write_updater updater /data/updater/updater_full.zip
# reboot updater
升级失败,重启设备后,查看/data/updater/log/updater_log,报错如下Failed to memcmp data.
08-05 10:50:32.884 Updater 240 I input_event.cpp 126 : add InputDevice done
08-05 10:50:32.894 Updater 240 I updater_main.cpp 312 : start to update packages, start index:0
08-05 10:50:32.895 Updater 240 I utils.cpp 577 : updater mode
08-05 10:50:32.896 Updater 240 D mount.cpp 105 : Umount for path /system
08-05 10:50:32.897 Updater 240 D mount.cpp 105 : Umount for path /vendor
08-05 10:50:32.898 Updater 240 D mount.cpp 202 : Mount for path /data
08-05 10:50:33.183 Updater 240 I updater_main.cpp 148 : Verify packages start...
08-05 10:50:33.186 Updater 240 I updater_main.cpp 159 : Verify package:data/updater/updater_full.zip
08-05 10:50:33.217 Updater 240 E pkcs7_signed_data.cpp 284 : Pkcs7VerifyHelper in
08-05 10:50:33.223 Updater 240 I pkcs7_signed_data.cpp 111 : p7sourceData check success
sourceDigest.size=32 digestLen=32
08-05 10:50:36.359 Updater 240 E pkg_verify_util.cpp 145 : Failed to memcmp data.
08-05 10:50:36.359 Updater 240 E dump.h 44 : 107
sourceDigest.size=32 digestLen=32
08-05 10:50:37.423 Updater 240 E pkg_utils.cpp 151 : Failed to mmap file
更新
OTA全量和增量包制作问题已解决,验证打包正常,升级成功。
更多推荐
所有评论(0)