Miracast目的で「Fire TV Stick」を購入したのですが、届いてから「Nexus5X」には、Miracastの機能がないことに気づき、急遽Nexus5Xのrootを取得してMiracastの機能を使えるようにしました。
Nexus5Xでroot取得後、Miracastを使えるように設定した記事はこちら
Nexus5XでMiracastを使用できるようにするには、root権限を取得する必要があります。
スマートフォンのroot取得を考えたときに必ず目にするのが「失敗すると起動しなくなる」という情報です。
いわゆる再起動ループや文鎮化といった症状ですね。
こういったリスクは、ハードウェア改造系の話ではよくあります。
だから説明サイトなどにも「自己責任でおこなってください」と注意書きが書いてあるわけですね。
大抵は手順をしっかり確認しないで間違えた場合に起こるんですよね。
わたしは注意深いので複数のサイトを渡り歩き、情報を集めてroot取得への手順を作り、rootの取得に成功しました。
root取得するまでになんども再起動ループや文鎮化を経由しましたけどね。
しっかり調べていたつもりでも、調べ足りていなかったんです。
メインで使用中のスマートフォンが起動不能になると、すごく焦りますね。
といわけで今回は、わたしがNexus5Xのroot取得にあたり遭遇したトラブルとそこからの対処・復旧方法を紹介します。
本内容は、わたしのNexus5Xの場合です。
必ずしもあなたの環境で上手くいくとは限りませんので、実施する場合は自己責任でおこなってください。
間違っていたroot取得手順
Nexus5Xのrootを取得するにあたり、複数のサイトを参考にしてroot取得への手順を作りました。
あるサイトの情報をベースにして、意味や理由がはっきりしない部分を他のサイトの情報で補った形です。
しかしベースにしたサイトの情報に誤りがあったため、起動不能になってしまったんです。
間違った情報を正しいと信じてしまったのは、自分がまだ理解できていなかったことが原因だと反省しました。
それ以外の部分ではとても助かったので、参考にしたサイト名は伏せます。
わたしが作ったroot取得への手順を書いておきます。
この手順には、起動不能になる可能性が高い部分が多く含まれています。
- 端末のバックアップ
- ブートローダーアンロック
- 工場出荷状態に初期化
- カスタムリカバリTWRPのインストール
- 改造版boot.imgをROMに焼く
- SuperSUをインストールしてroot化完了
- バックアップを復元
いかがでしょうか?
なにやらそれっぽい感じがして上手くいきそうな気がしませんか?
わたしはこの方法で、再起動ループと文鎮化を経由してrootを取得しました。
この手順に沿って、どの手順が駄目だったかトラブルの内容と対処・復旧方法を残しておきます。
端末のバックアップ
端末のroot取得には「ブートローダーをアンロックする」という作業を行う必要があります。
この作業を行うと端末のデータがすべて消えてしまうので、アンロック前にバックアップが必要です。
今回root化するNexus5Xがメインで使用中の端末だったので、念には念を入れて複数の方法でバックアップを取りました。
バックアップの内容に関しては、別の記事を用意しましたので参考にしてください。
バックアップに関しては、問題なく実施できました。
わたしはLINEのトーク履歴は消えても良かったのでバックアップしませんでしたが、残したい人は少し手順が増えるくらいでしょうか。
ブートローダーアンロック
次にブートローダーのアンロックを行いました。
この作業を行った段階で端末は保証対象外になります。
この作業では、Nexus5Xの[開発者向けオプション]を使用するので、[設定]アプリから[端末情報]-[ビルド番号]を7回タップして表示しておきます。
- Nexus5Xの[設定]-[開発者向けオプション]-[OEMロック解除]をオンにする
- Nexus5Xの電源を落とす
- ボリュームダウンボタンを押しながら電源ボタンを長押ししてブートローダーを起動
- パソコンと接続してfastbootコマンドを実行
以下のfastbootコマンドを実行するとブートローダーがアンロックされて、端末のデータはすべて消えます。
> fastboot oem unlock
実行後、処理が完了するまでしばらく待つことになります。
この作業も問題なく実施完了です。
工場出荷状態に初期化
ブートローダーアンロック後に端末をリカバリモードから工場出荷状態に初期化するという手順です。
この手順ですが、必要ありませんでした。
事前に調べた情報だと、次の手順の「カスタムリカバリTWRPのインストール」の前に端末を初期状態にした方が良いとの事だったので、この手順を入れました。
ブートローダーアンロック直後なら、工場出荷状態に初期化されているので必要なかったんですよね。
というわけで次に進みましょう。
カスタムリカバリTWRPのインストール
- カスタムリカバリTWRPをダウンロード
- Nexus5Xの電源を落とす
- ボリュームダウンボタンを押しながら電源ボタンを長押ししてブートローダーを起動
- パソコンと接続してfastbootコマンドを実行
カスタムリカバリTWRPをダウンロードします。
Nexus5Xの場合は以下のページから最新版をパソコンにダウンロード
ダウンロードしたTWRPのimgファイルを指定してfastbootコマンドを実行します。
> fastboot flash recovery ( TWRPの.imgのパス )
ここでのトラブル
トラブルというほどではないのですが、fastbootコマンドを実行する際に端末をブートローダーを起動しておくという情報がはっきりと書いてなかったため、少し悩みました。
対処方法
よく考えたらブートローダーアンロックのときに、fastbootコマンドを実行する際はブートローダーを起動していたので、同じようにブートローダーを起動した状態でコマンドを実行すればよいだけでした。
改造版boot.imgをROMに焼く
root取得済の改造版boot.imgを導入する作業ですが、ここでは詳細は書きません。
なぜかというと、それは......
最大のトラブル発生
今回の作業での最大のトラブル、再起動ループから文鎮化まで発生したからです。
改造版boot.img導入後、端末を再起動したら起動しませんでした。
いつまで待っても起動画面がおわりません。
仕方ないので一度電源を落として再度入れなおしますが、状況は変わりませんでした。
ならばとブートローダーを起動して、ボリュームボタンで中央の表示をRecovery modeに切り替えて電源ボタンで決定、「コマンドが指定されていません。」画面で電源ボタンを押しながらボリュームアップボタンを押します。
これでリカバリモードに入れるのですが、リカバリモードに入ると何故かTWRPではなく通常のリカバリモードが起動しました。
「もう初期化してやりなおそう」
そう思って、リカバリモードから「Wipe data/factory reset」を選択して待つこと数分
......Nexus5Xが文鎮化しました。
電源ボタンを操作しても、反応がありません。
メインで使っている端末が文鎮化ですよ。
対処方法
このような状態になった場合、多くのひとは諦めてしまうかもしれませんね。
保証も効かないし、文鎮化=壊れたというイメージがあるからです。
しかし、わたしはroot化の手順を調べているときにある言葉を見つけていたので、希望を持っていました。
その言葉は......
「Nexusは、ちょっとやそっとじゃ再起不能にならない」
というものです。
その言葉が正しいならば、このうんともすんとも言わないNexus5Xを何とかする方法があるはずです。
結論をいうと、次の方法でブートローダーを起動することができました。
ボリュームアップ・ダウンボタンを押しながら電源ボタンを10秒間押し続ける
これで無事にfastbootコマンドが使える状態になりました。
fastbootコマンドさえ使えれば、Googleからファクトリーイメージをダウンロードしてきて焼き直すことができます。
以下のページ「"bullhead" for Nexus 5X」の一覧からイメージをダウンロードしました。
復旧手順をまとめると次のようになります。
- パソコンにGoogleからファクトリーイメージをダウンロード
- ダウンロードしたzipファイルを解凍
- Nexus5Xのボリュームアップ・ダウンボタンを押しながら電源ボタンを10秒間押し続けてブートローダーを起動
- パソコンと接続して先ほど解凍したフォルダ内にある「flash-all.bat」ダブルクリックして実行
- しばらく待つ
これで正常に起動しました。
カスタムリカバリTWRPも消えてしまっているので、再度TWRPのインストールからやり直しですが、もう改造版boot.imgは入れません。
なぜならroot化に改造版boot.imgは必須ではなかったからです。
SuperSUをインストールしてroot化完了
参考にしたサイトが改造版boot.imgとSuperSUのインストールが順番に入れているような記載だったので、両方を行うつもりで改造版boot.imgを入れて文鎮化してしまいましたが、よく考えたら両方は必要ありません。
改造版boot.imgはroot取得済みのROMで、SuperSUは通常のROMでrootを取得するためのソフトウェアです。
改造版boot.imgとSuperSUは、それぞれの方法でrootの取得を行う、同じ役割の物といえます。
ということで、わたしは通常のROMにカスタムリカバリTWRPを入れるところまでは成功しているので、ソフト的にrootを取得する「SuperSU」を採用することにしました。
SuperSUの導入手順は以下です。
- SuperSUのzipファイルをNexus5Xにダウンロードしておく
- ブートローダーを起動
- ボリュームボタンでRecovery modeを選択して電源ボタンを押してリカバリモード起動
- TWRPが起動するので「Swipe to Allow Modification」を左から右にスワイプ
- 「Install」をタップ
- SuperSUのzipファイルが保存されているフォルダに移動
- SuperSUのzipファイルをタップ
- 「Swipe to Confirm Flash」を左から右にスワイプ
- 「Successful」と表示されれば、インストール完了
- 「Reboot System」をタップしてNexus5Xを再起動
これでrootの取得は完了なのですが、この手順を行う中でちょっとしたトラブルが起きました。
ここでのトラブル
TWRP導入後、SuperSUのzipファイルをダウンロードするために端末を起動して、ダウンロード後に再起動してリカバリモードに入っても通常のリカバリモードになってしまい、TWRPが起動しないんです。
なにかおかしいと思い、対処方法を探しました。
対処方法
調べてみるとどうやら「recovery-from-boot.bak」というファイルがあると、再起動時に通常のリカバリモードになってしまうようです。
そうとわかればrecovery-from-boot.bakをリネームしてしまいましょう。
削除してもいいみたいですが、/system内のファイルなので念のためです。
adb shellからリネームでもよいですが、今回は「ESファイルエクスプローラ」というアプリをRootエクスプローラをオンにして使用し、手軽にファイル名を変更しました。
- SuperSUのzipファイルをNexus5Xにダウンロードしておく
- ブートローダーを起動
- TWRPを導入
- 再起動することなくボリュームボタンでRecovery modeを選択して電源ボタンを押してリカバリモード起動
- TWRPが起動するので「Swipe to Allow Modification」を左から右にスワイプ
- 「Install」をタップ
- SuperSUのzipファイルが保存されているフォルダに移動
- SuperSUのzipファイルをタップ
- 「Swipe to Confirm Flash」を左から右にスワイプ
- 「Successful」と表示されれば、インストール完了
- 「Reboot System」をタップしてNexus5Xを再起動
- 起動したら
- ESファイルエクスプローラをPlayStoreからインストール
- ESファイルエクスプローラを起動
- メニューから「Rootエクスプローラ」をオンにする
- SuperSUの許可ダイアログで権限を許可する
- /systemに移動してrecovery-from-boot.bakを_recovery-from-boot.bakにリネーム
ファイル名にアンダーバーをつけました。
ちょっと手順が長くなって見づらいですね。
TWRPの導入からSuperSUの導入までに再起動せず、最初の端末起動でrecovery-from-boot.bakをリネームなり削除すれば大丈夫です。
バックアップを復元
バックアップの復元は、以下の記事の方法で基本的には問題ありません。
しかしわたしの場合は、Nexus5XでMiracastを使うのが目的だったので、ここでもトラブル発生です。
リストアのトラブル
わたしはAndroid7.1.1でrootを取得したのですが、Nexus5XでMiracastを使うにはAndroid 6系である必要があったのです。
そのため「Andoroid6.1.1に入れ替えて再度root化」という作業をしたんです。
ここで発生したのが、adbバックアップは低いバージョンへの復元ができないという問題です。
これができないと困るので、もうひと頑張りしました。
対処方法
「android backup extractor」というツールでバックアップファイルを作り直します。
パソコンで「android backup extractor」をダウンロードして、Javaのポリシーを書き換えてAES256が使えるようにします。
そしてコマンドプロンプトからバックアップした際のパスワードを指定して以下のようにツールを実行します。
> java -jar abe.jar unpack backup.ab backup.tar ( パスワード )
このように一度、バックアップファイルをtarに変換してから......
> java -jar abe.jar pack backup.tar repack.ab ( パスワード )
再度、もとの形式に変換することでバージョンチェックの情報が書き換えられます。
これをadbでリカバリしたところ、Android7.1.1でとったバックアップをAndroid6.1.1に問題なく復元できました。
OSバージョンが違うので、リカバリできていない部分がある可能性もありますが、ひとまず良しとしました。
おわりに
参考になったでしょうか。
このサイトではroot取得の方法を書くつもりはなく、失敗からの対処方法のみ書くつもりでしたが、なんだかんだでroot化の手順が全部入ってしまいました。
最終的にわかったroot取得のスマートな流れは、以下のような感じです。
- 端末のバックアップ
- ブートローダーアンロック
- カスタムリカバリTWRPのインストール
- 再起動しないでSuperSUをインストールしてroot化
- recovery-from-boot.bakをリネーム
- バックアップを復元
ここに書かれている方法は、わたしが行った方法です。
あなたの環境で同じように動作するとは限りませんので、参考にする場合は自己責任でお願いします。
わたしは途中で何度もトラブっていますからね。
さてroot取得してNexus5XでもMiracastが使えるようになったので「Fire TV Stick」で遊んでみようかな。
Nexus5XでもMiracastが使えるようした記事はこちら