UMIDIGI F2にAndroid11のGSIを焼いたときの/system(build.prop)の書き換え等について
こんにちは
今回は、Android11系のGSIを焼いたときにbuild.propなどのSystemの書き換えを行おうとした際にロゴでブートループしてしまう問題の解決策について書きたいと思います。
事象
まず、私は毎回、以前の記事でも紹介した通り、アニメーションがカクカクする問題を解決するためにbuild.propに「debug.sf.latch_unsignaled=1」を追加しているのですが、Android11系のGSIではこれを行うとbuild.propの中身が見えなくなり、再起動しようとした際、ロゴでブートループしてしまいます。
Android11では/systemの書き換えが容易にできなくなっていて、書き換えを行いたければ、phhusson氏のAOSPを例に出すと、「vndklite」版を選択する必要があります。ですが、これを焼いてもbuild.propの書き換えを行うことはできませんでした。しかし、eremitein氏の「CAOS」を焼くことで書き換えを可能としていました。
ところが、「CAOS R 2021.02.09 (beta9)」にバージョンアップしたところ、「CAOS」でも/systemの書き換えができなくなってしまいました。なので、これを解決するための方法を探しだしました。
解決策
この問題の解決策は「Systemパーティションのサイズを拡張すること」です。
Systemパーティションのサイズ拡張は以前にも記事で取り上げたことがあります。
今回はSystemの論理パーティションを拡張します。まずはいつも通り以下の作業を行います。
adb reboot bootloader
fastboot --disable-verity --disable-verification flash vbmeta (F2のROMの中にあったvbmeta.imgの保存してあるパス)
fastboot --disable-verity --disable-verification flash vbmeta_system (F2のROMの中にあったvbmeta_system.imgの保存してあるパス)
fastboot --disable-verity --disable-verification flash vbmeta_vendor (F2のROMの中にあったvbmeta_vendor.imgの保存してあるパス)
fastboot -w
fastboot reboot fastboot
fastboot erase system
fastboot delete-logical-partition product
fastboot --disable-verity --disable-verification flash system (GSIのimgファイルが保存してあるパス)
そしてここでSystemパーティションのサイズを3GiBに拡張します。
fastboot resize-logical-partition system 3221225472
これであとは再起動をして
fastboot reboot
終わりです。
これで/systemの書き換えを行えるようになっているはずです。
ブートループしてしまった場合
もし、ブートループに陥ってしまった場合は、一度電源ボタンを長押しして強制的に電源を落とし、画面が消えたタイミングで「Select Boot Mode」が出るまで電源ボタンと音量の上ボタンを同時に押し続けます。
表示されたら音量上ボタンでカーソルを動かし、「Recovery Mode」にカーソルを合わせ音量下ボタンで決定します。
次に「No Command」または「コマンドが指定されていません」と表示されたら、電源ボタンを押しながら音量上ボタンを短く押します。
そしたらRecovery Modeに入るので、音量上下ボタンでカーソルを移動し、「Reboot to bootloader」に合わせて電源ボタンで決定します。
※注意:上の「Select Boot Mode」とは操作方法が違います。カーソル移動は「音量上下ボタン」決定は「電源ボタン」です。
これでいつも通りのFastbootモードに入るので、以下の作業を行い、
fastboot --disable-verity --disable-verification flash vbmeta (F2のROMの中にあったvbmeta.imgの保存してあるパス)
fastboot --disable-verity --disable-verification flash vbmeta_system (F2のROMの中にあったvbmeta_system.imgの保存してあるパス)
fastboot --disable-verity --disable-verification flash vbmeta_vendor (F2のROMの中にあったvbmeta_vendor.imgの保存してあるパス)
「fastboot -w」は行わずFastbootdモードに入ってSystemを焼き直しましょう。
fastboot reboot fastboot
fastboot erase system
fastboot --disable-verity --disable-verification flash system (GSIのimgファイルが保存してあるパス)
そしてSystemパーティションのサイズを拡張して再起動をしたら終わりです。
fastboot resize-logical-partition system 3221225472
fastboot reboot
以上です。
おまけ
おまけとして「CAOS」を入れたときにChromeがなく、Playストアからもインストールできない問題、セットアップ画面がないためGoogleドライブのバックアップから復元できない問題について書きたいと思います。
CAOSにChromeがない問題とセットアップ画面がない問題の解決策
CAOSにChromeがない問題とセットアップ画面がない問題の解決のカギは「Dirty Flash」です。Dirty Flashはユーザーデータを残したままほかのROMやGSIを焼くことです。基本的にCAOSはPhhsson氏のAOSPがベースなのでAOSPをDirty Flashで焼いてしまってもちゃんと動きます。なのでこれを利用します。
まず、例によってPhhusson氏のAOSPを焼きます。その後、一度そのままセットアップをしてしまってください。これでAOSPにはセットアップ画面があるため少なくともバックアップから復元された状態を復元できるはずです。
復元が終わったら、Fastbootモードに入ります。
adb reboot bootloader
そしていつもの以下のコマンドを入れて
fastboot --disable-verity --disable-verification flash vbmeta (F2のROMの中にあったvbmeta.imgの保存してあるパス)
fastboot --disable-verity --disable-verification flash vbmeta_system (F2のROMの中にあったvbmeta_system.imgの保存してあるパス)
fastboot --disable-verity --disable-verification flash vbmeta_vendor (F2のROMの中にあったvbmeta_vendor.imgの保存してあるパス)
ここまではいつもと同じですが、次が違います。「fastboot -w」ではすべてのデータが消えてしまうので、キャッシュのみ消すため以下のコマンドを入れます。
fastboot erase cache
そしてFastbootdモードに入ります。
fastboot reboot fastboot
次に現在入っているSystemを消して、CAOSを焼きます。
fastboot erase system
fastboot --disable-verity --disable-verification flash system (GSIのimgファイルが保存してあるパス)
必要に応じて、今回の記事のメインだったSystemパーティションのサイズを拡張してください。
fastboot resize-logical-partition system 3221225472
あとは再起動だけです。
fastboot reboot
これでバックアップから復元された状態かつ、Chromeがインストールされている状態になっているはずです。
まとめ
いかがだったでしょうか。私と同じように/Systemの書き換えが行えず困っている人の参考になれば幸いです。このおかげで私はAndroid11でUMIDIGI F2を常用できそうなので良かったです。また、AOSPでは、メーカー名が「unknown」デバイス名が「Phh-Treble with GApps」になってしまいますが、CAOSではしっかりVendorから読み取ってくれるためおすすめです。ほかにも便利な変更が施されているためこちらを使うほうがいいと思います。
ということで今回はここまでにしたいと思います。
ではまた