Fastboot ROMを手作りする方法
ヘッダーは全然関係ないです。
Nothing phone(1)やRedmi Note 10 JEのFastoot ROMを公開していますが、「そもそもどんな方法でやっているの?」と思う方がいそうだったので勝手に書き殴る事にします。この方法を行なえばStockのROMを公式で戻す手段がない機種(Nothing、Redmi Note 10 JE、Rakuten Mini、Android Oneなど)でも一応戻す事が可能になったり、boot.imgにパッチを当ててrootにするなど色々な事が行えます。
1.下準備
Fastboot ROMを作る前に以下の準備が必要です。
Bootloader Unlockを行なった機種
SUが内蔵されたGSI(Phh-AOSPやLineageOS GSIなど)またはMagiskをパッチしたboot.img
DSU Sideloader
adbとfastbootを構築した環境
バッチファイルを作る能力
Bootloader Unlockは第一前提になります。これがやれないと作成はまずできません。次にFastboot ROMの作成にはroot権限が必要となります。Magiskでのroot環境かSUが内蔵されたGSIをDSU Sideloaderでインストールさせる事が必要になります。
推奨は断然後者です。理由は後述で。
2.コマンドでimgを抜く
root権限で一定のコマンドを流す事でimgとしてファイルを抜く事ができます。つまり、それを行なってbootやvbmetaなどのimgを抜いているのです。
先ほどのMagiskかDSUの説明をした事には理由があります。Magiskの環境であれば即席で作成は行えますが、パッチをしていない状態のboot.imgを抜く事ができません。Google内蔵のアップデートを採用した機種ではアップデートに失敗をする可能性が存在するので、できるだけ生のboot.imgを抜きたいという事でDSUを推奨しています。例外ですが、Web上にパッチをしていないboot.imgが存在するのであればそれを使用する事で回避ができます。しかし、これは例外中の例外と見なして良いでしょう。
では、imgを保存する為に必要なコマンドなどの操作を行ないましょう。GSIのSUかMagiskのSUで以下の操作をします。
これを行なう事でsdcard内にbackup_imgのフォルダが作成され、各種imgが保存されています。DSUを使用する場合はストレージ容量の設定を16GBに設定した方が良いでしょう。
3.backup_imgをPCに移す&不要なファイルを消す
数分でimgが抜けているので保存されたフォルダをPCへコピーします。内部には固有情報などのファイルが存在するのでそれを除外する作業を行ないます。同時に目的のROMが格納されているアクティブスロットも確認します。
fastbootで
fastboot getvar all
を実行してアクティブなスロットを確認します。大量のログの中に
(bootloader) current-slot:
の項目があるので確認をしましょう。これがaであればAのスロット上、bであればBのスロット上でROMが稼働しています。
imgはaとb両方を保存しているのでアクティブになっている物だけ(aであればboot_a.img)を残して削除と固有情報などのファイルを削除を手作業でやりましょう…(バッチ作れたら早いと思います)
必要なimgの一覧はこちらです
abl
aop
bluetooth
boot
cpucp
devcfg
dsp
devcfg
dsp
dtbo
featherenabler
hyp
imagefv
keymaster
modem
multiimgoem
qupfw
shrm
super
tz
uefisecapp
vbmeta
vbmeta_system
vendor_boot
xbl
xbl_config
となります。一部にCriticalパーティションがアンロックされていないと焼けない物も存在しますが、それのアンロックは必要に応じてなので必ずする必要はありません。必要なimgは機種によって異なる可能性があります。
4.バッチファイルの作成
手作業でimgを焼くのは面倒なのでバッチを作成しましょう。
一例となりますがこんな感じで作れば基本的に焼けると思います。
バッチの一例
物によってはアクティブスロットを切り替えないと起動ができなかったりと性格が変わった物も存在します。Xiaomiの場合は「fastboot flash boot_ab」と書くと両方のスロットに焼ける事もあるようです。ここで補足ですが、vbmetaの箇所に「fastboot flash vbmeta --disable-verity --disable-verification」のオプションを付ける事はオススメしません。それを行なうとOTAが失敗する事が起きる可能性があります。GSIを使う事がない限りはオプションは外しておきましょう。
5.Fastboot ROMの完成
作ったROMを試しに焼いて起動をしたのであれば完全に成功です。boot.imgをパッチをしてMagiskでのrootやモジュールも使えるようになります。バージョンごとにこの作業を行なえばダウングレードも可能になります。ダウングレード時は「fastboot -w」か「リカバリーからwipe userdata」を実行しないと起動をしない場合があります。後はアーカイブにしてネットの海に流すなり個人で管理など好きにしてください。
おまけ: super.imgのスパースイメージ化
super.img(systemやvendorなどがまとまった奴)をスパースイメージ(simg)化するとROM焼き時の時間が短縮できたりします。WSLやVirtualBoxの仮想環境で「img2simg」を使用してsuper.imgをスパースイメージに変換する事ができます。余裕がある人はやっておくと捗るかもしれません。
…こんな感じで常日頃に作成をしています。
NothingでDSUが使えない事に悩まされた理由はそれだったのでした。XDA上に生のboot.imgがあったのでどうにか作成できたのですが、DSUから抜いた方が効率は段違いに良いです。XDAに公開もしていますが、一定のユーザーが難癖を付け始めた事で精神的に疲れたので憂さ晴らしに書き殴りました。文章がおかしい部分や不明な所はコメントをくれれば反応すると思います。
以上