ota updateでエラーの原因をさがす
最近telegramでota updateができないという投稿がありました。
otaの基本的なことを理解していれば対策も簡単なので今回はota updateの概要を説明します。
1.種類
otaにはfull otaとIncremental otaがあります。
1-1.full ota
full otaはandroidのversion upなどの大型updateの時に各partitionをそのまま塗りつぶす感じでupdateします。なのでupdate前にmagisk等でpartitionが改ざんされていても塗りつぶしなのでupdateは成功します。ただしデータ量が4GB前後の大容量になります。
1-2.Incremental ota
Incremental otaは各partitionに物理的なpatchを行う方法です。
メリットとしてはデータ量が少量で済みます。
ただし、update前にpartitionが改ざんされているとupdateは失敗します。
full otaもIncremental otaもhash値を確認しています。hash値が予想したものと相違するとエラーとなりota updateは失敗します。
2.対象のpartition
端末によってことなります。
Legion Y700 Gen3(TB321FU)の場合は以下のようになります。
abl
aop
aop_config
bluetooth
boot
cpucp
cpucp_dtb
devcfg
dsp
dtbo
featenabler
hyp
imagefv
init_boot
keymaster
modem
multiimgoem
multiimgqti
odm
product
pvmfw
qupfw
qweslicstore
recovery
shrm
system
system_dlkm
system_ext
tz
uefi
uefisecapp
vbmeta
vbmeta_system
vendor
vendor_boot
vendor_dlkm
xbl
xbl_config
xbl_ramdump
3.logcat
androidはlogcatというツールが準備されているので問題が発生した場合これを使用します。
例)Incremental otaを行ってエラーが出た場合
adb logcat -v color *:S update_engine:*
この場合はvendor_boot_aでhash値が予想値と相違してエラーが出ています。
こちらがlogcatの説明になります。
単語の説明
TAG 今回はupdate_engine
優先度 優先度は以下のようになります。
今回のコマンドの説明
adb logcat -v color *:S update_engine:*
カラーは好みで。
*:Sですべてを一旦出力なしにします。これによりフィルタリングが機能します。これをしないとTAGを指定しても全てが出力されます。
TAGを指定して優先度はすべてに’します。
あとはパイプを使って調べたりします。自分で試してわかりやすいようにアレンジしてください。