22 December 2018

Nexus 7 (2012)をAOSP 7.1.2にアップグレード

2年前にPure Nexus 6.0.1にアップグレードしていたNexus 7 (2012)が、やはり異常にレスポンスが悪く使い物にならないので、解決方法を探していた。

5ちゃんねる掲示板で、Android 7 にアップグレードすれば「驚くほど軽くなる」との書き込みが多数あり、アップグレードしてみることとする。

Google公式のAndroid 5.1.1にダウングレードする

純正のAndroidシステムに戻してから作業するため、現在配布されている最新版のAndroid 5.1.1に戻す。

Factory Images for Nexus and Pixel Devices より、『"nakasi" for Nexus 7 (Wi-Fi)』 の最新版 5.1.1 (LMY47V) をダウンロードする。

ダウンロードしたzipファイルをLinuxマシンの作業ディレクトリにコピーし、展開

$ unzip nakasi-lmy47v-factory-5a0bb059.zip

展開したディレクトリにある、ファームウエア書き込み用スクリプトを編集し、ブートローダーの書き戻しを無効化する。

flash-all.sh
# fastboot oem unlock       ← すでにブートローダのunlockはされているので、再度アンロックの必要は無い
fastboot erase boot
fastboot erase cache
fastboot erase recovery
fastboot erase system
fastboot erase userdata
# fastboot flash bootloader bootloader-grouper-4.23.img       ← ブートローダーは書き戻さない (現状のTWRPを使い続ける)
fastboot reboot-bootloader
sleep 10
fastboot -w update image-nakasi-lmy47v.zip

Android 5.1.1への書き戻し作業は、次のように行う

$ adb reboot bootloader
 ← 再起動が行われて、ブートメニューが画面表示されるまで待つ
$ fastboot devices
015d490699512345	fastboot       ← 認識されない場合は、udevルールを読み書き可能に書き換えること
$ ./flash-all.sh
erasing 'boot'...
OKAY [  0.035s]
finished. total time: 0.035s
******** Did you mean to fastboot format this ext4 partition?
erasing 'cache'...
OKAY [  0.152s]
finished. total time: 0.152s
erasing 'recovery'...
OKAY [  0.036s]
finished. total time: 0.036s
******** Did you mean to fastboot format this ext4 partition?
erasing 'system'...
OKAY [  0.366s]
finished. total time: 0.366s
******** Did you mean to fastboot format this ext4 partition?
erasing 'userdata'...
OKAY [ 10.546s]
finished. total time: 10.546s
rebooting into bootloader...
OKAY [  0.023s]
finished. total time: 0.124s
target didn't report max-download-size
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
archive does not contain 'vendor.img'
wiping userdata...
Creating filesystem with parameters:
    Size: 30080499712
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8160
    Inode size: 256
    Journal blocks: 32768
    Label: 
    Blocks: 7343872
    Block groups: 225
    Reserved block group size: 1024
Created filesystem with 11/1836000 inodes and 159268/7343872 blocks
wiping cache...
Creating filesystem with parameters:
    Size: 464519168
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7088
    Inode size: 256
    Journal blocks: 1772
    Label: 
    Blocks: 113408
    Block groups: 4
    Reserved block group size: 31
Created filesystem with 11/28352 inodes and 3654/113408 blocks
--------------------------------------------
Bootloader Version...: 4.23
Baseband Version.....: N/A
Serial Number........: 015d490699512345
--------------------------------------------
checking product...
OKAY [  0.040s]
checking version-bootloader...
OKAY [  0.027s]
sending 'boot' (5184 KB)...
OKAY [  0.706s]
writing 'boot'...
OKAY [  0.264s]
sending 'recovery' (5738 KB)...
OKAY [  0.768s]
writing 'recovery'...
OKAY [  0.234s]
erasing 'system'...
OKAY [  0.117s]
sending 'system' (649455 KB)...
OKAY [ 84.326s]
writing 'system'...
OKAY [ 36.453s]
erasing 'userdata'...
OKAY [  4.919s]
sending 'userdata' (139157 KB)...
OKAY [ 18.091s]
writing 'userdata'...
OKAY [ 12.620s]
erasing 'cache'...
OKAY [  0.088s]
sending 'cache' (9052 KB)...
OKAY [  1.206s]
writing 'cache'...
OKAY [  0.570s]
rebooting...
 
finished. total time: 160.716s
 
$ fastboot reboot

再起動され、OSが立ち上がるまで5分ほど掛かる

AOSP 7.1.2 にアップグレードするために必要なファイルを揃える

参考にしたのは xda 『[ROM][NZH54D][2018/12/05][Asus Nexus 7 2012 WiFi/3G][F2FS/EXT4]Android 7.x AOSP』 の掲示板。

また、日本語の情報として 『Nexus 7(2012) Wi-Fi版にAndroid 7.1.2 AOSPを焼く方法!』や『Nexus 7 (2012)をAndroid 7.1.2にバージョンアップ』なども参考にする。

AOSP 7.1.2

現在でもAOSP 7.1.2は1ヶ月に1回程度更新が続いているようで
Build 20181208
Build 20181112
Build 20181016

Build 20170410 (7.1.2当初)

今回は最新版 aosp_grouper-7.1.2-ota-eng-20181208.ds.zip を使う

Beans GApps Mini

Androidの基本システムに、次のGoogleの管理システムを組み込む

xda 『[GAPPS] [7.1.2] [ARM/ARM64] [July 25th] Beans GApps

ダウンロードは、Beans GApps全てのバージョンを格納したページから最新版 BeansGapps-Mini-7.1.x-20170725.zip ダウンロードして用いた。

Nexus 7用 TWRP

この機会に、ブートローダも最新版にアップグレードする

TWRP for Asus Nexus 7 2012 Wi-Fiに掲載されいている最新版、twrp-3.2.3-0-grouper.img をダウンロードする

AOSP 7.1.2 にアップグレードする

・ AOSP 7.1.2 (aosp_grouper-7.1.2-ota-eng-20181208.ds.zip)
・ Beans GApps Mini (BeansGapps-Mini-7.1.x-20170725.zip)
・ TWRP (twrp-3.2.3-0-grouper.img)

これら3つのファイルを、Nexus 7 (2012)のダウンロードディレクトリ (/storage/emulated/0/Download)にコピーする。

再起動しブートメニューを表示し、リカバリーメニュー(TWRP)に進む。

$ adb reboot bootloader

ブートメニューが表示されれば、PCとのUSB接続を切り離してから、ボリュームキーで『Recovery Mode』を選択し、電源ボタンで起動する。

TWRPが起動するので、次の順序で作業を行う。

1.ユーザ領域以外のWipe

  Wipeメニューより、「Dalvik Cache」「System」「Data」「Cache」のみをWipe。
  ユーザ領域は、AOSPやBeans GAppsの更新ファイルがあるので消去しない。

2.AOSP 7.1.2の書き込みとリブート

  戻るボタンをタップしメインメニューに戻る。
  Installを選択し、aosp_grouper-7.1.2-ota-eng-20181208.ds.zip を書き込む。
  戻るボタンをタップしメインメニューに戻る。
  RebootメニューのRecoveryを選択し実行。

3.再起動後、Beans GAppsの書き込みとリブート

  TWRPのメインメニューまで進む。
  Installを選択し、BeansGapps-Mini-7.1.x-20170725.zip を書き込む。
  書き込みが終われば Reboot System を選択し実行。

再起動し、数分待てばAOSP 7.1.2が使えるようになる。

なお、Wipeで「Internal Storage」まで消去してしまった場合は、TWRPのメインメニューを表示した状態でUSBケーブルをパソコンに接続し、

TWRPのAdvancedメニューのADB Sideloadを選択実行する。

パソコン側で

$ adb sideload aosp_grouper-7.1.2-ota-eng-20181208.ds.zip

のように、ファイルを転送して直接書き込む方法を使う。

TWRPをアップグレードする

$ adb reboot bootloader
 ← 再起動が行われて、ブートメニューが画面表示されるまで待つ
$ fastboot devices
015d490699512345	fastboot       ← 認識されない場合は、udevルールを読み書き可能に書き換えること
$ fastboot flash recovery twrp-3.2.3-0-grouper.img
target didn't report max-download-size
sending 'recovery' (9790 KB)...
OKAY [  1.239s]
writing 'recovery'...
OKAY [  0.526s]
finished. total time: 1.765s
 
$ fastboot reboot

Magiskを使ってroot権限取得

xda 『 [2018.12.8] Magisk v18.0 - Root & Universal Systemless Interface [Android 5.0+] 』 を用いると root化ができる。

インストーラ : Magisk-v18.0.zip
アンインストーラ : Magisk-uninstaller-20181208.zip

これらのファイルを TWRP で書き込むだけで root化・unroot化が可能。 インストール作業の詳細は 『 How to Install Magisk 』 に詳しく書かれている。