OTA升級操作說明
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
Guide
這是一篇講解如何對OTA正確操作的文檔,讓初入門的開發(fā)者對OTA有初步的認(rèn)識,并學(xué)會簡單操作。
一、什么是 OTA
OTA(Over the Air)提供對設(shè)備遠(yuǎn)程升級的能力,可以讓您的設(shè)備,輕松支持遠(yuǎn)程升級能力。目前僅支持全量包升級,暫不支持差分包升級。全量包升級是將新系統(tǒng)全部內(nèi)容做成升級包,進(jìn)行升級;差分包升級是將新老系統(tǒng)的差異內(nèi)容做成升級包,進(jìn)行升級。
關(guān)于OTA目前支持以下三種方式,方式1和3均驗(yàn)證完畢,方式2還在調(diào)測中,此處暫不做介紹:
- OTA(Over the Air)–ota在線升級。
- 通過USB從主機(jī)進(jìn)程更新 – reboot flashd。
- 通過外部存儲器進(jìn)行升級 --SD卡/U盤升級。
二、操作說明
1、制作升級包
(1) 生成公私鑰對
鴻蒙基線源碼里默認(rèn)有一對公私鑰可以直接使用,見目錄:openharmony/device/board/hisilicon/hispark_taurus/linux/updater/config 私鑰:rsa_private_key2048.pem 公鑰:signing_cert.crt。
rk3566中控屏代碼倉里默認(rèn)的公私鑰對見目錄:device/rockchip/rk3566/build/updater_config 私鑰:rsa_private_key2048.pem 公鑰:signing_cert.crt。
也可以用??Openssl工具??自行生成自己的公私鑰對,關(guān)于私鑰文件請妥善保管,在升級包制作過程中將私鑰文件作為制作命令的參數(shù)帶入,用于升級包簽名。公鑰用于升級時對升級包進(jìn)行簽名校驗(yàn),鴻蒙標(biāo)準(zhǔn)系統(tǒng)需要將生成的公鑰放在 openharmony/device/board/hisilicon/hispark_taurus/linux/updater/config/signing_cert.crt 這個文件中;如果是開鴻的3566中控屏代碼倉請放在device/rockchip/rk3566/build/updater_config/signing_cert.crt文件中。
(2) 制作升級包
創(chuàng)建目標(biāo)文件夾
關(guān)于目標(biāo)文件夾的命名可以自定義,這里將文件夾命名為ota_package,操作如下:
osm@ubuntu:~$mkdir ota_package
osm@ubuntu:~$cd ota_package
osm@ubuntu:~/ota_package$ tree -a
.
├── system.img // 待升級的組件1
├── updater_binary // 升級相關(guān)的可執(zhí)行文件
├── updater_config // 固定格式,子文件夾管理組件配置文件
│ ├── BOARD.list // 當(dāng)前升級包支持的產(chǎn)品list
│ ├── updater_specified_config.xml // 組件配置文件
│ └── VERSION.mbn // 當(dāng)前升級包所支持的版本范圍
├── userdata.img // 待升級的組件2
└── vendor.img // 待升級的組件3
關(guān)于BOARD.list,內(nèi)容如下:
osm@ubuntu:~/ota_package/updater_config$ cat BOARD.list
HI3516
HI3518
HI3559
osm@ubuntu:~/ota_package/updater_config$
關(guān)于VERSION.mbn,內(nèi)容如下:
osm@ubuntu:~/ota_package/updater_config$ cat VERSION.mbn
Hi3516DV300-eng 10 QP1A.190711.020
Hi3516DV300-eng 10 QP1A.190711.022
osm@ubuntu:~/ota_package/updater_config$
版本名稱格式:Hi3516DV300-eng 10 QP1A.XXXXXX.{大版本號(6位)}.XXX{小版本號(3位)}。
例如:Hi3516DV300-eng 10 QP1A.190711.020。名稱中“190711”為大版本號,“020”為小版本號。
關(guān)于updater_specified_config.xml,內(nèi)容如下:
osm@ubuntu:~/ota_package/updater_config$cat updater_specified_config.xml。
<?xml version="1.0"?>
<package>
<head name="Component header information">
<info fileVersion="01" prdID="123456" softVersion="Hi3516DV300-eng 10 QP1A.190711.020" date="2021-03-11" time="12:30">head info</info>
</head>
<group name = "Component information">
<component compAddr="vendor" compId="18" resType="05" compType="0" compVer="0o00">./vendor.img</component>
<component compAddr="system" compId="18" resType="05" compType="0" compVer="0o00">./system.img</component>
</group>
</package>
osm@ubuntu:~/ota_package/updater_config$
執(zhí)行升級包制作命令(全量升級包)。
這里以鴻蒙的代碼路徑為例:
如果制作SD卡升級包需要加上-sc選項,即:python3.8 openharmony/base/update/packaging_tools/build_update.py ota_package ota_output -pk rsa_private_key2048.pem -sc。?
osm@ubuntu:~$mkdir ota_output
osm@ubuntu:~$python3.8 openharmony/base/update/packaging_tools/build_update.py ota_package ota_output -pk rsa_private_key2048.pem
執(zhí)行完之后,在ota_output下可以看到升級包:hi3516_ota_xxxxxx.zip,將其重命名為updater.zip,如果是在線升級需要將升級包放在服務(wù)器上,如果是SD卡升級需要將升級包放在SD卡的updater目錄。
2、升級
(1) OTA升級(還在調(diào)測中,敬請期待)
(2) OTA升級(跳過下載)
將升級包通過SD卡/U盤/hdc_std等工具放到設(shè)備的/data下面的自定義目錄,這里將升級包updater.zip放在/data/updater/updater目錄下。
方式一、在主分區(qū)命令行執(zhí)行:
reboot updater:–update_package=/data/updater/updater/updater.zip
方式二、在主分區(qū)命令行設(shè)置系統(tǒng)參數(shù):
param set ohos.startup.powerctrl
reboot,updater:–update_package=/data/updater/updater/updater.zip
(或調(diào)用接口 bool RebootAndInstallUpgradePackage(const std::string &miscFile,
const std::string &packageName) )
以上兩種方式原理相同,均是把參數(shù)–update_package=/data/updater/updater/updater.zip寫入misc分區(qū),后面updater進(jìn)程會去misc分區(qū)獲取該參數(shù)。
成功觸發(fā)后,開始校驗(yàn),界面如下:
校驗(yàn)通過后開始升級,界面如下:
升級成功后板子會自動重啟,至此操作完畢。
(3) SD卡升級
OTA升級優(yōu)先級高于SD卡升級:updater進(jìn)程先去misc分區(qū)獲取–update_package參數(shù),成功獲取到則進(jìn)入ota在線升級。否則進(jìn)入SD卡升級界面,進(jìn)行SD卡升級等操作。
切換分區(qū)。
這里將包含升級包的SD卡插入設(shè)備,并在主分區(qū)命令行執(zhí)行reboot updater,不傳遞–update_package參數(shù),可以直接切換到recovery分區(qū),界面如下:
選擇升級。
開始校驗(yàn)。
如果升級包制作沒有問題,板子開始驗(yàn)證升級包,顯示如下:
“Don’t remove SD Card!”
“Verify package…” //持續(xù)時間比較久,大概一二十分鐘
開始升級。
驗(yàn)證通過之后,開始升級,升級成功后板子會自動重啟,至此操作完畢。
3、調(diào)測
在升級的過程中會產(chǎn)生log文件/data/updater/log/updater_log, 包含程序運(yùn)行各個階段添加的打印信息可供調(diào)試使用。
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??