目次
注意事項
ブートローダーアンロックやカスタムリカバリ導入、root化によって、メーカーの補償は一切きかなくなります。また作業中にデータが消えたり、端末が起動しなくなってしまったとしても、当方では一切責任は負えません。
全て自己責任で作業を行ってください。
Android 6.0 Marshmallowのroot化について
Android 6.0 Marshmallowを搭載したNexusデバイスをroot化するには、root権限の特権を無くすことでセキュリティを強固にするSELinuxのモードを「Enforcing」のままではなく「Permissive」に変更する必要があります。SELinuxのEnforcingとPermissiveの違いは、Enforcingがセキュリティポリシーの設定で許可されていないアクセスがあった場合にそのアクセスを拒否してログに出力するのに対し、Permissiveはセキュリティポリシーに違反するアクセスであってもアクセスを許可してログに出力します。
つまり、Android 6.0のNexus6をroot化することでセキュリティレベルを下げるることになります。あくまでも自己責任で作業してください。
また、Android 6.0 Marshmallowの新機能などの詳細はこちらを参照してください。
Android 6.0 Marshmallow(マシュマロ)の新機能・変更点・使い方まとめ。
2015/10/11
SuperSU開発者のChainFire氏が、SELinuxをEnforcingのままでroot化できるSuperSU v2.50をリリースしました。
Android6.0のNexusでSELinuxをEnforcingのままroot化できるSuperSU v2.50 BETAがリリース。
このページで紹介する手順は、SuperSU v2.52を使ってSELinuxをEnforcingに保った状態でroot化する方法です。
2015/10/31
ChainFire氏が/systemを改変せずにroot化できるSuperSU v2.56をリリースしました。
root化の手順はこれまでと同じで改造版のboot.imgを焼いた後にSuperSUのzipファイルをインストールする必要があります。最新のroot化方法の変更点は、root化済みNexusデバイスのOTAアップデートの際にこれまではファクトリーイメージのsystem.imgとboot.imgを焼く必要があったのが、boot.imgのみを焼きなおすだけでよくなった点です。
また、/systemも改変するこれまでのroot化方法は失敗するとブートループになっていたのが、新しい方法ではroot化には失敗するもののきちんと起動するようになっています。
ChainFire氏によると新しいroot化手法は開発途中の段階で、ファクトリーリセットするとroot権限やPINが消えるなどバグも多く存在します。
なお、/systemを改変することでroot権限を取得する以前のboot.imgはすでにリンクが消されているので、今後root化する際は新しい手法のものになります。
準備しておくこと
1.Nexus6のブートローダーをアンロックしておく。ブートローダーのアンロック手順はNexus6のブートローダーアンロック方法。を参照してください。なお、ブートローダーをアンロックすることで端末内にあるアプリやアプリのデータだけでなくストレージ内の写真なども全て消えます。必要なデータは先にバックアップしておくことをおすすめします。
2.PCのブラウザからhttps://twrp.me/devices/motorolanexus6.htmlにアクセスしてカスタムリカバリTWRPの最新版(2015/10/11現在の最新版はtwrp-2.8.7.1-shamu.img)をダウンロードしておく。
3.Nexus6のSELinuxをEnforcingのままroot化するために、PCのブラウザからhttp://forum.xda-developers.com/apps/supersu/wip-android-6-0-marshmellow-t3219344にアクセスしてChainFire氏が作成した改造版boot.imgをダウンロードし、解凍しておく。
Nexus6 Android 6.0のroot化方法・手順
準備が整ったら、Nexus6 Android 6.0をroot化していきます。Nexus6をファクトリーリセットする
まず、Nexus6をファクトリーリセットします。ファクトリーリセットしなくてもroot化できる場合もありますが、私が数回試したことろファクトリーリセットなしではブートループになることもあったので、先に初期化しておくことをおすすめします。ブートローダーを起動してボリュームダウンボタンを2回押します。
「RECOVERY MODE」が表示されたら電源ボタンで決定します。
!マークがついている倒れたドロイド君が表示されたら、電源ボタンを押しながらボリュームアップボタンを押します。
Android 6.0標準のリカバリが表示されるので、ボリュームボタンを押して「Wipe data/factory reset」を選び、電源ボタンを押します。
ファクトリーリセットをするとストレージ内も含めてすべてのデータが消えて初期化されます。問題なければボリュームボタンで「Yes」を選んで電源ボタンを押します。
「Data wipe complete.」と表示されれば、Nexus6の初期化は完了です。
ボリュームボタンで「Reboot to bootloader」を選んで電源ボタンを押し、ブートローダーを起動させます。
ブートローダーが起動すればOKです。
ChainFire氏作成のboot.imgをNexus6に導入する
Android 6.0にアップデート後のNexus6をroot化するための改造版boot.imgのフォルダを開き、開いたスペースでShiftキーを押しながら「コマンドウィンドウをここで開く」をクリックします。コマンドプロンプトが起動するので、「fastboot flash boot 」と入力します。bootの後には半角で1文字分スペースを空けます。
boot.imgをドラッグ&ドロップでコマンドプロンプトに持っていきます。
boot.imgをコマンドプロンプト上に移動したら、Enterキーを押してboot.imgを焼きます。「finished.total time:~」と表示されれば改造版boot.imgの導入は完了です。
Nexus6にTWRPを導入する
ダウンロードしておいたTWRPをNexus6に導入します。導入方法はNexus6にカスタムリカバリ TWRPを導入する方法。を参照してください。TWRPの導入まで終わったらNexus6を一度起動します。
私の場合、ここでブートループになってしまうこともありました。ブートループになった場合は、Android 6.0のファクトリーイメージのCache.img以外をすべて焼いて初めから作業してみてください。
なお、本来であれば全てのファクトリーイメージを導入する必要はありませんが、一部のimgファイルのみ焼くと原因の切り分けなどに無駄に時間がかかることがあるため、原因が分からない場合はcache以外のすべてのファイルを焼いてまっさらなAndroid 6.0の状態にすることをおすすめします。
Nexus6にSuperSUをインストールする
Nexus6にSuperSUをダウンロードします。なお、以下の手順では一度Nexus6を起動してダウンロードする手順を消化していますが、adbコマンドが分かる人はPCにSuperSUのzipファイルをダウンロードしてTWRPが起動したままの状態でadb push~で送ってあげると手間が省けます。
Nexus6が起動したら初期設定を済ませ、Nexus6のブラウザからhttps://download.chainfire.eu/743/SuperSU/BETA-SuperSU-v2.52.zipにアクセスしてSuperSU 2.52をダウンロードします。
「BETA-SuperSU-v2.52.zip」のダウンロードが終わったら、一度電源を落として電源ボタンとボリュームダウンボタンを同時に長押ししてブートローダーを起動します。ちなみに、一度電源を落とさなくても、起動した状態で電源ボタンとボリュームダウンボタンを超長押しするとそのままブートローダーが起動します。超長押しの方はスクリーンショットが1枚強制的に撮影されてしまうので、好みの方法でブートローダーを起動してください。
ブートローダーが起動したら「RECOVERY」を選んでTWRPを起動し、「Install」をタップしてSuperSUをインストールします。
SuperSUをタップして選んで「Swipe to Confirm Flash」を右にスライドします。
SuperSUのインストールが終わったら「Reboot System」をタップして再起動させ、無事起動すればNexus6のSELinuxをEnforcingのままのroot化は完了です。
SELinuxModeChangerでSELinuxがEnforcingであることを確認する
Nexus6のroot化が完了したら、SELinuxModeChangerを使ってNexus6のSELinuxがEnforcingになっているか確認します。SELinuxModeChangerは以前はGoogle Playからインストールできましたが、SELinuxModeChangerがGoogle Playポリシーに反するということで削除されてしまっているため、XDAからapkファイルを直接ダウンロードします。
[APP]SELinuxModeChanger
インストールが終わったらSELinuxModeChangerを起動します。スーパーユーザーリクエストが表示されるので「許可」をタップすると、現在のSELinuxのモードを確認できます。グレーアウトしている方が現在のモードなので、Nexus6のSELinuxはEnforcingのままでroot化されていることが分かります。
SELinuxがEnforcingでは使えないrootアプリあり
root権限が必要なアプリの中には、Android 6.0でSELinuxがEnforcingの状態では使えないものが多いです。例えば、Titanium Backupはアプリ+データの復元をしようとしても復元中のポップアップが延々と表示されて完了しません。
また、LMT Launcherも戻るキーなどを押しても動作しないなど、SELinuxをEnforcingにした状態ではrootedである恩恵がほぼない状態です。各アプリ開発者が今後対応アップデートを実施するとは思いますが、現状はAndroid 6.0のNexusデバイスでrootアプリを使いたいならPermissiveにしておく他ありません。
SELinuxがEnforcingなAndroid 6.0のNesus6をPermissiveに変更するには、先ほどインストールしたSELinuxModeChangerを使います。
SELinuxModeChangerを起動して「PERMISSIVE」をタップするだけで、SELinuxをEnforcingからPermissiveに変更できます。
Permissiveに変更したら、Titanium Backupの復元もできるようになりました。
Android 6.0のNexus6のroot化はブートループになってしまうこともしばしばあるので、作業前にバックアップを取って作業することを強くおすすめします。
Android 6.0にアップデート後のNexus6のroot化方法・手順は以上です。