どんな記事?
Pixel 7 / Pixel 7 ProのBootloader Unlockと、Magiskを用いてRootを取る手順を紹介します。
Bootloader UnlockおよびRoot化したAndroidデバイスでSafetyNetをパスする方法、決済アプリや銀行系アプリなどを使う方法については以下の記事も併せてご覧ください。
MagiskモジュールやLSPosedモジュールなどをインストールして便利に使う方法も近日中にまとめる予定です。
要点
慣れている方ならこの要点だけで理解できる内容となっています。
Magiskでパッチするのは従来のboot.imgではなくinit_boot.img
Android 13 を搭載してリリースされるデバイスの場合、汎用 RAM ディスクが boot イメージから削除され、別の init_boot イメージに配置されています。この変更により、boot イメージには GKI カーネルのみが残ります。
Android 12 以前のカーネル バージョンを引き続き使用するデバイスをアップグレードする場合、汎用 RAM ディスクは、新しい init_boot イメージを必要としない状態が維持されます。
https://source.android.com/docs/core/architecture/bootloader/partitions/generic-boot
ドキュメントを参照するとこのように書いてありました。つまりAndroid 13が初期イメージのPixel 7ではinit_boot.img
に対してパッチを当てる必要があるということです。Pixel 6の場合は初期イメージがAndroid 12でしたので、Android 13にアップデートしたあともboot.imgでOKです。
SafetyNetやPlay IntegrityもOK(追記あり)
方法は後日公開予定の記事で詳しく言及しますが、取り急ぎ追記。
詳しい記事を公開しました! 併せてご参照ください。
追記6(2023/02/12)
本家に追従する形でUniversal SafetyNet Fix v2.4.0-MOD_1.0 がリリースされています。
追記5(2023/02/10)
Universal SafetyNet Fix v2.3.1-MOD_3.0 がリリースされています。
2023/01更新およびPlayシステムアップデート後にSafetyNetやGoogle Payの認証が外れるときがあったのですが、これで解決するかな…?🤔
追記4(2023/01/10)
Universal SafetyNet Fix 2.4.0にてPlay Integrity APIのチェックを通過できるようになりました。
追記3
v2.3.1-MOD_2.0で動作するようになりました。
追記2
僕はテスト版を使ったのですが、safetynet-fix-v2.3.1-MOD_2.0だと正常に動きませんでした。
# avoid breaking encryption, set shipping level to 32 for devices >=33 to allow for software attestation.
if [[ "$(getprop ro.product.first_api_level)" -ge 33 ]]; then
resetprop ro.product.first_api_level 32
fi
API 32(Android 12L)をサポートしているデバイスなら、単に
resetprop ro.product.first_api_level 32
と修正しておけば動くはず。
追記1
Universal SafetyNet Fix MODの作者がXDAで新しいバージョンを公開していましたので試したところ、無事にSafetyNetとPlay Integrityの認証が通りました!(MEETS_STRONG_INTEGRITY以外)

Android 13以上でリリースされたデバイスはPlay Integrity APIのハードウェア認証を使用してMEETS_DEVICE_INTEGRITYおよびMEETS_STRONG_INTEGRITYに合格する必要があるのですが、実際にはro.product.first_api_level=33を検出するとハードウェア認証を行うらしくro.product.first_api_level を下げることで回避しているようです。
追記前
現時点ではSafetyNetを完全にパスすることはできていません。

Google Payや銀行系のアプリ(住信SBIなど)も使える
こちらも後日公開予定の記事で詳しく説明しますが、Google Payや銀行系のアプリも使うことができました。ソーシャルゲームに関してはプレイしないので分かりません。


Bootloader Unlock
MagiskでRootを取るには前提条件としてBootloaderのUnlockが必要です。
必要なもの
SDK Platform-Tools
Bootloader Unlockの手順
- まずは動作確認(初期不良対策)
Googleデバイスの場合BootloaderをUnlockすると保証が無効になりますので、最初にハードウェアの不良がないか確認します。正常に電源が入るかどうか、またタップの反応などを確認しておくといいです。ただしのちほど初期化されますので、アレコレ設定しても無駄になります。
- システムアップデート
Pixel 7 / Pixel 7 Proにはゼロデイアップデートが配布されていましたので、 設定 → システム → システムアップデート でアップデートを適用しておきます。
- 開発者向けオプションを有効にする
設定 → デバイス情報 → ビルド番号 を7回タップ

- USBデバッグを有効にする
設定 → システム → 開発者向けオプション → USBデバッグ

- OEMロック解除を有効にする
設定 → システム → 開発者向けオプション → OEMロック解除

- Bootloaderに再起動する
USBデバッグが有効な状態でadb reboot bootloader
するか、ボリュームダウンボタンを押しながら電源ONにしてもOKです。再起動後、赤字でFastboot Modeと表示されていることを確認します。
- BootloaderをUnlockする
fastboot flashing unlock
Pixel 7 / Pro の画面にUnlockの警告が出ますので、ボリュームボタンで選択し、電源ボタンで決定します。このときデバイスは完全に初期化されますのでご注意ください。
- 再起動
Device state: unlocked になっていることを確認します。
確認できたらボリュームボタンで Start を選択し、電源ボタンを押して起動します。
- 初期設定
無事に起動したら初期設定を済ませましょう。設定 → システム → 開発者向けオプション → 自動アップデート を無効にしておきます。

Root
BootloaderのUnlockができれば、あとはもうひと息です。
必要なもの
後述手順にて詳しく説明します。
デバイスに応じたFactory Image
Magisk
Magiskを使ってRootを取る手順
- Magiskをダウンロード
Googleの最新デバイスで最新OSですので、StableよりCanaryビルドを使ったほうがいいかと思います。正式に対応したらStableビルドに切り替えてもいいですね。

- Magiskをインストール
エクスプローラでドラッグ&ドロップして転送後、デバイス側で開きインストールしてもいいですが、USBデバッグがONになっていればadb install app-release.apk
で簡単にインストールできます。
- 該当機種のFactory Imageをダウンロード
2022年10月15日現在、Pixel 7向けはpanther-td1a.220804.031-factory-2f036a47.zipが最新でした。

- ダウンロードしたFactory Imageを展開
panther-td1a.220804.031-factory-2f036a47.zipを例に進めます。

これを解凍すると……

こうなるので、panther-td1a.220804.031フォルダを開きます。

panther-td1a.220804.031フォルダの中にimage-panther-td1a.220804.031.zipがあるので、これを開いて次の手順へ。
- init_boot.imgを取り出す
Magiskでパッチするinit_boot.img
のみを解凍します。

- init_boot.imgをデバイスに転送
エクスプローラ上でドラッグ&ドロップしてコピーしてもいいですし、adb push .\init_boot.img /sdcard/Download/
などと転送してもOKです。

- Magiskでパッチを当てる
転送したinit_boot.imgにMagiskでパッチを当てます。Magiskを起動しインストールを選び、パッチするファイルの選択をタップするとファイル選択になるので、init_boot.img を選ぶと自動でパッチが適用されます。

- パッチしたinit_boot.imgをPCに転送
前項でパッチが当たったイメージはデバイスのDownloadフォルダにmagisk_patched-25203_JPU20.imgのような名前で保存されますので、それをPCに転送します。
- Bootloaderに再起動する
adb reboot bootloader
- init_boot.imgをデバイスに焼く
このとき注意したいのは、Pixel 7 / Pixel 7 Proではパッチしたイメージを焼くパーティションがinit_bootに変わっていることです。間違えるとブートループになる可能性もあるので気をつけてください。fastboot flash init_boot .\magisk_patched-****.img
普通に使うだけならvbmeta.imgを焼く必要はありませんが、あとでカスタムカーネルを焼いたりするかもという方は、やはり引き続き最初に
fastboot flash vbmeta vbmeta.img --disable-verity --disable-verification
しておいたほうがいいです。
すでにいくつかのカスタムカーネルが公開されていますが ( Despair Kernel, CleanSlate kernel, Kirisakura-Kernel, など)、いずれのカーネルも現状だとVerityとVerification両方を無効にしないと使用することができません。
開発者は少なくともVerificationについては無効にせずとも使えるようにしたいと考えているようですが、リリースまでにはしばらく時間がかかると思います。
ちなみにPixel 6向けのカスタムカーネルの場合、両方を無効にしても動作するものがリリースされるまで1~2ヶ月ほどかかったそうです。
また一度VerityとVerification両方を無効にした場合、ファクトリーイメージを使ってファームウェアを更新したら毎回必ずあらためて無効にする必要があります。
もし忘れたまま起動してしまうと、再度無効にするにはァクトリーリセットをする必要があるのでご注意ください。
参考URL
- 再起動
無事にmagisk_patched-****.img
が焼けたらfastboot reboot
で再起動します。これでMagiskによるRootが取得できているはずです。ひとまずお疲れさまでした!

まとめ
- Magiskでパッチするのは従来のboot.imgではなくinit_boot.img
- SafetyNetやPlay IntegrityもOK
- その状態でもGoogle Payや銀行系のアプリ(住信SBIなど)も使えた
Bootloader UnlockおよびRoot化したAndroidデバイスでSafetyNetをパスする方法、決済アプリや銀行系アプリなどを使う方法については以下の記事も併せてご覧ください。
MagiskモジュールやLSPosedモジュールなどをインストールして便利に使う方法も近日中にまとめる予定です。
僕がPixel 7用に買ったアクセサリー


コメント
vbmetaをflashせずにカスタムカーネルを焼くことは将来的にはできるんでしょうか?
結論としては、待てばリリースされる可能性はあると思います。
すでにXDAにはPixel 7シリーズ向けにいくつかカスタムカーネルが公開されています。
Despair Kernel
https://forum.xda-developers.com/t/kernel-despair-kernel.4505725/
CleanSlate kernel
https://forum.xda-developers.com/t/kernel-cleanslate-t1-4-0-s2s-adblock-vib-batterysvr-oct-24.4509793/
Kirisakura-Kernel
https://forum.xda-developers.com/t/kernel-24-10-2022-android-13-0-0-stable-kirisakura-1-0-0-for-pixel-7-pro-aka-pantah.4509795/
どれも現状だとVerityとVerification両方を無効にしないと使用することができません。
開発者は少なくともVerificationについては無効にせずとも使えるようにしたいと考えているようですが、リリースまでにはしばらく時間がかかると思います。
ちなみにPixel 6向けのカスタムカーネルの場合、両方を無効にしても動作するものがリリースされるまで1~2ヶ月ほどかかったそうです。
また一度VerityとVerification両方を無効にした場合、ファクトリーイメージを使ってファームウェアを更新したら毎回必ずあらためて無効にする必要があります。
もし忘れたまま起動してしまうと、再度無効にするにはァクトリーリセットをする必要があるのでご注意ください。
参考URL
https://forum.xda-developers.com/t/unlock-bootloader-root-pixel-7-pro-cheetah-safetynet-working-again-all-relevant-links.4502805/page-35#post-87593381
分かりやすく、とても丁寧にまとめてくださってありがとうございます!
こちらこそ! コメントありがとうございました!
分からないことがあればいつでもお気軽に!
play integrity API checkerを使ってroot化後にチェックしたところ、
MEETS_DEVICE_INTEGRITY
がokにならずに✕になってしまいます。
なにか対処法はあるでしょうか?
また、✕であることによる欠点にはどのようものがあるでしょうか?
コメントありがとうございます!
YASNACでのCTS profile matchはどうなっていますか?
こちらの記事をご参照いただき、Universal SafetyNet FixやShamikoなどを導入してから、再度チェックしてみてもらえますか?
Google Play ストア/Google Pay/開発者サービスのデータを消して再起動する必要があるかもしれません。
✕の場合はGoogle Payが使えなくなると思います。
CTS profile matchはfailになっています。
・magiskを隠す
・playサービスなどの再起動
・denylistを構築&アプリの追加
・再起動
を行いましたが変わらずです。
SafetyNetが通っていないようですね。
MOD版のUniversal SafetyNet Fixはお試しになりましたか?
お使いの機種はPixel 7シリーズでしょうか、もしMagiskのStableを使っている場合はCanaryも試してみるといいかもです。
とてもわかりやすく非常に助かります。
質問があります。
bootloaderアンロックでesim情報は消去されてしまうのでしょうか?
アンロックでのesim情報消去有無が分からず躊躇しています。
ご存知でしたらご教授いただきたいです。
よろしくお願いいたします。
コメントありがとうございます。
結論から言えばeSIMはアンロックで消えることはないと思います。
探してみたところAndroPlusさんのRakuten Miniをアンロックする記事にもそのような記述がありました。
私は入手後すぐにアンロックしたためeSIM登録状態でのアンロックはしていませんが、アンロック時はファクトリーリセットがかかります。
ROM焼きの際に何度かファクトリーリセットしたり fastboot -w などでデータパーティションをワイプしていますが、私の端末で今までeSIMが消えたことはありませんでした!
ご回答大変ありがとうございました。
なるほど、esimは大丈夫そうですね。
久しぶりにroot、magiskに挑戦してみます。
有用な情報感謝いたします。
eSIM自体はデバイスに残るはずですが、APNはたしか毎回設定し直していた気がします。
Androidにも早くeSIMの転送などが実装されるといいですね。
またなにかありましたらいつでもコメントなどいただければと思います!
root化頑張ってください!