訂正 2015/12/21:必要なファイル × SuperSU2.52→ ○ root_fire.zip、pushするファイル ×4つ→ ○5つ
先日AmazonがFireOS 5.1.1のアップデートを実施してfastboot bootコマンドを塞ぎ、root化対策をしてきましたが、二週間ほどで新たなroot化の方法がXDAで見つかりました。
一時的にroot権限を取る別の方法が見つかり、それを使ってSuperSUをインストールし恒常的にroot化します。(本体の開発者向けオプションでデバッグを有効にしておく必要があります。)
簡単にいろいろできるSuperToolもあります。手動でrootを取ったり、Gappsをインストールするのが面倒な方は、こちらを使うのも手です。
【一時的にroot権限を取る方法】電源を切り、起動してbootloaderに入る(音量アップキーをホールドしたまま、電源を入れる)。FireとPCを接続して、PCのコマンドラインから次のコマンドを実行。
fastboot oem append-cmdline "androidboot.unlocked_kernel=true" fastboot continue adb wait-for-device && adb shell
1行目で一時的にbootloaderでroot権限を取得し、2行目でそのままシステムを起動。3行目ではPCの接続を確認し、シェルに入る。シェルのプロンプトが「#」となり、一時的にroot権限が取得できる。再起動すればroot権限はなくなる。
最近suがインストールされているとセキュリティ上の理由で動作しないアプリもあるので、本体にはsuを入れたくないけど、システムを書き換えたい場合に、この一時的なroot権限は便利だと思います。システムを書き換える場合は書き換え可能にしてリマウントするのをお忘れなく。
【SuperSUをインストールする方法】root_fire.zipのZIPファイルを入手しておき、解凍して次の5つのファイルlibsupol.so、root_fire.sh、su、Superuser.apk、supolicを取り出しておく。電源を切り、起動してbootloaderに入る(音量アップキーをホールドしたまま、電源を入れる)。FireとPCを接続して、PCのコマンドラインから次のコマンドを実行。
fastboot oem append-cmdline "androidboot.unlocked_kernel=true" fastboot continue adb wait-for-device && adb remount adb push libsupol.so /data/local/tmp/ adb push root_fire.sh /data/local/tmp/ adb push su /data/local/tmp/ adb push Superuser.apk /data/local/tmp/ adb push supolicy /data/local/tmp/ adb shell chmod 777 /data/local/tmp/root_fire.sh adb shell /data/local/tmp/root_fire.sh
1行目で一時的にroot権限を取得し、2行目でそのまま再起動し、3行目でPCの接続を確認し、書き込み可能でリマウント。4~8行目でPCからファイルを/data/local/tmpに送り込み、9行目でroot_fire.shに実行権限を与え、10行目でそれを実行。本体は自動的に再起動してbootloaderに入る。
bootloaderに入ったら、次のコマンドを実行。
fastboot oem append-cmdline "androidboot.unlocked_kernel=true" fastboot continue adb wait-for-device && adb remount adb shell /system/xbin/su --install adb reboot
1行目で一時的にroot権限を取得し、2行目でそのまま再起動し、3行目でPCの接続を確認し、書き込み可能でリマウント。4行目でsuをインストールし、5行目でリブートを実行。
以上で完全なroot化は完了。
この方法もまたアップデートで塞がれてしまうかもしれませんので、OTAを以下のように無効にしましょう。
adb shell pm hide com.amazon.otaverifier adb shell pm hide com.amazon.device.software.ota adb shell pm hide com.amazon.settings.systemupdates
5.1.1の場合はDeviceSoftwareOTA.apkの拡張子を書き換えて、無効にする必要があるようです。
再度有効にする場合は次のコマンド。5.1.1の場合はDeviceSoftwareOTA.apkの拡張子を元に戻す。
adb shell pm unhide com.amazon.otaverifier adb shell pm unhide com.amazon.device.software.ota adb shell pm unhide com.amazon.settings.systemupdates
unroot(root化を元に戻す)したい場合は、Amazonのサイトからファームウェアをダウンロードして、手動でアップデートするだけです。くれぐれもbootloaderのバージョンには気を付けましょう。新しいバージョンのファームウェアをインストールすると古いバージョンに戻せません。
ただし、今のところ5.1.1のbootloaderでカスタムリカバリーを実行する方法はないので、カスタムROMをインストールしたい場合はflashfireを使うしかない。
【追伸】恐らくこの記事を読んでいる方はFireOSを使っていると思います。Rootを取って、FlashFireでgappsを入れようとしている方もいると思います。ブログのstatsを見るとこの記事だけ閲覧数が高いので、他の記事を読まれていない方が多いです。
Fireのパフォーマンスを上げる方法を書いてありますので、そちらもお読みください。gappsは最新のものではなく、20151219版をご使用ください。
fire側の/date/local/tmp/が5.3.1にはなかったのですが、代わりに入れることができる場所はあるんですか?
なければmkdirで作ればいいのではないでしょうか?