以下省略!

タイダルウ(ry 毎日1記事執筆運動実施中。

Nexus 7(2012 Wi-Fi)にカスタムROM入れてみた&F2FSにしてみた

f:id:abyssluke:20151119191243p:plain:w200:leftカスタムROMの方が快適なのかなぁ、とNexus 7(2012 Wi-Fi)にCyanogenMod 12.1(CM12.1)を導入。ついでにデータ・キャッシュ領域をNANDフラッシュメモリに最適化されたファイルシステム f2fs(リンク先は英語)にしてみた。長いので続きを読むから。

目次

前提条件など

Android SDKを導入し、adb/fastbootが使える状態にしておく。
ブートローダーをアンロックしておく。
ブートローダーモードで起動してfastboot oem unlock。データは消去されるので注意。
・USBデバッグを有効化した状態でNexus 7をUSBケーブルでPCに接続しておく。
・もちろん充電はちゃんとしておく。

・TWRPはテーマを導入していない状態で説明している。テーマを導入している場合は一部項目が異なることがあるので注意。

ROM/GAppsをダウンロード

CyanogenModのサイトからsnapshotのzipファイルをダウンロードする。新しもの好きの人はnightlyビルドもある(ただし不安定)。
CyanogenMod Downloads

Google Playなどを使えるようにするためGAppsもダウンロードする。公開されているGAppsのビルドは多数あるが、CyanogenModのWikiで紹介されているものだと毎日ビルドされているOpenGAppsというものがある。バージョンにあったものをダウンロードすること(CM12.1はAndroid 5.1ベース)。
The Open GApps Project
system領域の容量的な意味でpicoかnanoをダウンロードする。micro以上はインストールしようとすると容量不足と怒られる。
他のアプリは後からダウンロードすれば済むのであまり問題ないかと。

TWRPを導入

自分はStockROM(純正ROM)のOTAアップデートの都合上純正リカバリに戻していたため、CyanogenModをインストールできるようにリカバリ領域にTWRP(Team Win Recovery Project)を焼く必要がある(CWMでもいいけどタッチ操作できるTWRPを推奨)。
TWRPのサイトから(執筆時点で)最新版のtwrp-2.8.7.0-grouper.imgをダウンロードする。
その後ブートローダーモード(adb reboot bootloaderか電源オフ状態で電源+上長押し)で再起動しfastbootで焼く。

$ adb reboot bootloader
$ fastboot flash recovery /path/to/twrp-2.8.7.0-grouper.img
(補足)Linux環境でwaiting for deviceのまま進まない場合

adbやfastbootでwaiting for deviceから進まない場合はroot権限で実行すればなんとかなる。なんとかならない場合はUSBデバッグが有効かどうか確認したり、USBケーブルを別のポートに挿し直してみるとか。

一般ユーザー(plugdevグループ所属)でもadb/fastbootできるようにするにはudevルールを追加する。
UDEV - CyanogenMod

# echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0664", GROUP="plugdev"' > /etc/udev/rules.d/51-android.rules
# udevadm trigger

ROMバックアップ・ワイプ

adb reboot recoveryか、ブートローダーモードからRecovery Mode選択でTWRPを起動し、Backupから現行のROMやデータをバックアップする。圧縮推奨(Enable compression.にチェックを入れる)。
その後バックアップをPCなどにコピーしておいてから、Wipe→Advanced WipeからDalvik Cache/Cache/System/Dataを選択してWipeする。
この時点でデータ(内蔵ストレージ含む)はすべて消滅する。内蔵ストレージのデータを保存しておきたい場合は予めPCなりに内容をコピーしておくべし(一応バックアップはあるが)。

F2FSに変更

Wipe→Advanced Wipeを開き、Cacheを選択してRepair or Change File System→Change File System→F2FSを選択→スワイプ。
Dataも同じ要領で行う。

ZIP達をコピーしてROM/GAppsを焼く

すでに接続しているとは思うが、USBケーブルでPCと接続し、ダウンロードしたZIPをInternal Storageに転送する。
MTPモードなので注意。

コピーしたらInstallからROMのzipを選択、スワイプしてInstall。
その後にGAppsのzipを選択、Install。すべて完了したらReboot

初期設定

初回起動(CMのアップデートでも同じだけど)は結構時間かかるのでしばらく待つ。
無事起動したら初期設定を行う。言語選択では初期状態でEnglishが選択されているので日本語を選択。
そのあとは画面の指示に従い設定すればOK。以前のROMでデータのバックアップを有効化していて、かつアプリの復元をする場合は初期設定完了後一旦CyanogenModデフォルトのホーム画面にはなるが、復元処理にかなり時間がかかるので注意(ステータスバーに状態が表示される)。

カスタムROMを入れてみて

f:id:abyssluke:20151119191257p:plain:w200:leftそこそこ快適になった感。StockROMよりも動作の引っかかりが軽減されている気がする(まぁ引っかかる時は引っかかるけど)。F2FSの恩恵も受けているのかな。
CyanogenMod特有の機能 LiveDisplay*1Nexus 7(2012)では動作が重たくなる原因になるらしいので切っておいたほうが吉。
ちなみに画像はDiskInfoというアプリでcache/data領域がf2fsになっているか確かめた時の図。

そういえば最初Euphoria-OSも入れてみたんですよ

最初CyanogenModなど様々なROMをミックスしたEuphoria-OSというのも入れてみたのだが、突然動作が重たくなる謎現象が起きてたりしていた*2。非公式ビルドを焼いても改善しなかったので、ふとf2fsにしてみようと思いCyanogenModを焼いたのは秘密。CyanogenModのほうがちゃんと更新されている感あるし、Euphoria-OS(の使っているカーネル)はどうやらf2fsには対応していないらしいので(対応しているカーネル焼けばよかったのかもしれないが)。

一応Euphoria-OSのリンク貼っておきますね。
公式コミュニティ:Euphoria-OS - コミュニティ - Google+
公式ビルド 2015/08/22版:Euphoria-OS-1.1-grouper-OFFICIAL-20150822.zip | by mitchdavis for Nexus 7
非公式ビルド:downloads for Asus Nexus 7 by GtrCraft | AndroidFileHost.com | Download GApps, PA GApps, Roms, Kernels, Themes, Firmware and more. Free file hosting for all Android developers

*1:時間帯に応じて画面の色温度を変更する機能

*2:LiveDisplayを切れば軽くなったのかもしれないが真偽は不明