こんにちは、山田ハヤオです。
最近Pixel 3やらPOCOやらを購入し、ブートローダーロックを解除して色々と遊んでいます。
カスタムROMもカスタムリカバリも入れて、MagiskでRoot取得して、最強のAndroidを構築するのはやっぱり楽しいです。
MacroDroidやSwift Backup、F-DroidなどはやっぱりRootの方が何かと便利です。
前置き
最近、マイナーなMagisk Moduleを入れて遊ぶのにハマっていたのですが、よくわからないModuleを適当にポンポンと読み込ませていたらブートループに陥りました。
「Magiskはブートループを引き起こす可能性がある」とは噂では聞いていましたが、本当に遭遇するとは思っていませんでした。
この時の自分は「適当にモジュール削除すれば直るでしょ」と思っていたのですが、そこからが大変でした。
今回のブートループはメーカーロゴの先のOSのロゴの部分で永遠に進まないというものでした。
原因特定
今回は直前にMagiskモジュールを読み込ませていたので、それが原因ではないかと思いました。
Magiskはboot.imgにパッチを当ててインストールしており、パッチを当てる前のオリジナルをバックアップしていました。
FastBootでオリジナルを書き込み、Magiskを無効化した状態で再起動すると、今までのブートループが嘘のように正常に起動しました。
しかし、この状態ではMagiskがないのでモジュールの削除もできません。
OSを起動するためにモジュールを削除する必要があるけど、削除のためにはMagisk入りのOSを起動する必要がある…というジレンマに陥りました。
ネットで見つけたけどできなかった方法
TWRPを使う
TWRPを使ってデバイスに入り、モジュールを削除するという方法です。
ですが、私の使っているPOCOはTWRPが存在しないので、この方法は使えませんでした。
(TWRP以外の)カスタムリカバリを使う
カスタムリカバリで起動後、adbを利用してモジュールを削除するという方法です。
リカバリでのadbはRoot権限を持っているのですが、肝心なモジュールが入っている/dataがマウントされておらず、手動のmountもできませんでした。
userdataパーティションは暗号化されていると聞いたので、それのせいでしょうか?
adbを利用する
OSロゴのブートループが発生した状態でUSBを接続し、adbから削除を行うというものです。
adbに入った後、以下のコマンドを実行すると全てのモジュールが削除されるそうです。
magisk --remove-modules
が、このコマンドを実行してもブートループは改善されませんでした。
最終的にうまくいった方法
こちらのサイトにある方法の一つでうまくいきました。
1. MagiskなしでOSを起動する
Magiskなしのオリジナルのboot.imgを書き込んでAndroidを起動します。
オリジナルんの
2. セーフモードで再起動する
電源ボタンを長押しした後のメニューで、再起動ボタンを長押しすると、セーフモードで再起動できます。

はるか昔に何度か使いましたが、すっかり存在を忘れていました。
3. Magiskを適用して起動する
再起動後、OSを起動するのではなくFastBootに入りMagiskのパッチを当てたboot.imgを焼きます。
直前でセーフモードに入っていることで、Magiskがセーフモードを検知し、全てのモジュールとRoot権限許可を無効化してくれるらしいです。
再起動後、直接FastBootに入れない場合
Pixelシリーズなどは、Xiaomi系と違って再起動時にボタンを押してもFastBootに入れません。
この場合の対処にちょっと苦戦しましたが、最終的に以下の方法で成功しました。
(ネットに情報もなく、自分で色々試行錯誤してました)
- adbを有効にしておく
- セーフモードで再起動をかける
- 再起動中に以下のコマンドをPCで実行する(ブートロゴが表示される前に実行してください)
adb wait-for-device shell reboot -p
- OS起動中にスマホがシャットダウンするので、電源ボタンと音量ボタンでFastBootに入る
- パッチされたboot.imgを焼く
fastboot reboot
で再起動する- パッチされたboot.imgでセーフモードで起動できる
4. 通常モードに再起動する
セーフモードではMagiskアプリは起動できないので、通常モードにそのまま再起動します。
5. 正常に起動!!
セーフモードで一度起動したことで、全てのMagiskモジュールが無効化され、正常に起動できるようになります。

あとはMagiskアプリを起動して、モジュール一覧から問題のモジュール(わからなければ全て)を削除し、再び再起動すれば完了です。
アプリのRoot権限許可やモジュールの再有効化を行ってください。
終わり
正直ここまで情報が少なくて苦労すると思っていませんでした。
無事にファクトリーリセットやらMIUIの焼き直しやらをすることなく起動できました。
また何かこういう珍しいことが起こったらブログにしようと思います。
コメント