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
展開したディレクトリにある、ファームウエア書き込み用スクリプトを編集し、ブートローダーの書き戻しを無効化する。
# 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分ほど掛かる
Nexus 7 (2012) Android 5.1.1 メイン画面とアプリドロワ画面
Nexus 7 (2012) Android 5.1.1 ストレージ容量とメモリー容量
Nexus 7 (2012) Android 5.1.1 システム情報画面
Android 5.1.1 ダウングレード時に書き込み失敗する
2020年6月、オークションで売却するためにAOSP 7.1.2から5.1.1 (LMY47V)にダウングレードした。その時にいくつかエラーが発生したが、その一つがこれ
$ fastboot devices 015d4906995ff812 fastboot ← fastbootコマンドで認識されるのを確認後… $ ./flash-all.sh ← この記事の最初のところで「改変」した書き込みスクリプトを実行 erasing 'boot'... OKAY [ 0.034s] finished. total time: 0.034s ******** Did you mean to fastboot format this ext4 partition? erasing 'cache'... OKAY [ 0.137s] finished. total time: 0.137s erasing 'recovery'... OKAY [ 0.034s] finished. total time: 0.034s ******** Did you mean to fastboot format this ext4 partition? erasing 'system'... OKAY [ 0.371s] finished. total time: 0.371s ******** Did you mean to fastboot format this ext4 partition? erasing 'userdata'... OKAY [ 8.904s] finished. total time: 8.904s rebooting into bootloader... OKAY [ 0.023s] finished. total time: 0.074s extracting android-info.txt (0 MB)... extracting boot.img (5 MB)... target didn't report max-download-size archive does not contain 'boot.sig' archive does not contain 'dtbo.img' archive does not contain 'dt.img' extracting recovery.img (5 MB)... archive does not contain 'recovery.sig' extracting system.img (634 MB)... archive does not contain 'system.sig' archive does not contain 'vbmeta.img' archive does not contain 'vendor.img' wiping userdata... Couldn't parse erase-block-size '0x'. Couldn't parse logical-block-size '0x'. mke2fs 1.44.1 (24-Mar-2018) /tmp/TemporaryFile-0BgOmh: Unimplemented ext2 library function while setting up superblock /usr/lib/android-sdk/platform-tools/mke2fs failed with status 1 mke2fs failed: 1 error: Cannot generate image for userdata
Google検索してみると、対処方法が2つあるようだ。
対処方法1 : fastboot update
コマンドの -w
スイッチを除去する
fastboot -w update image-nakasi-lmy47v.zip↓ 次のように変更
fastboot update image-nakasi-lmy47v.zip
対処方法2 : image-nakasi-lmy47v.zip を解凍し、スクリプトを修正
# 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 flash recovery recovery.img fastboot flash boot boot.img fastboot flash system system.img fastboot flash userdata userdata.img
今回は「2」のzipファイルを展開する方法を採用し、ファームウエアを書き込んだ。このことによる弊害は次のセクションで…
$ ./flash-all.sh
erasing 'boot'...
OKAY [ 0.026s]
finished. total time: 0.026s
******** Did you mean to fastboot format this ext4 partition?
erasing 'cache'...
OKAY [ 0.092s]
finished. total time: 0.092s
erasing 'recovery'...
OKAY [ 0.026s]
finished. total time: 0.026s
******** Did you mean to fastboot format this ext4 partition?
erasing 'system'...
OKAY [ 0.118s]
finished. total time: 0.118s
******** Did you mean to fastboot format this ext4 partition?
erasing 'userdata'...
OKAY [ 4.938s]
finished. total time: 4.938s
rebooting into bootloader...
OKAY [ 0.023s]
finished. total time: 0.074s
target didn't report max-download-size ← ここから下が、zip解凍したimgを書き込んでいくスクリプト修正部分
sending 'recovery' (5738 KB)...
OKAY [ 0.722s]
writing 'recovery'...
OKAY [ 0.292s]
finished. total time: 1.014s
target didn't report max-download-size
sending 'boot' (5184 KB)...
OKAY [ 0.654s]
writing 'boot'...
OKAY [ 0.214s]
finished. total time: 0.869s
target didn't report max-download-size
erasing 'system'...
OKAY [ 0.118s]
sending 'system' (649455 KB)...
OKAY [ 78.940s]
writing 'system'...
OKAY [ 36.435s]
finished. total time: 115.492s
target didn't report max-download-size
erasing 'userdata'...
OKAY [ 4.931s]
sending 'userdata' (104289 KB)...
OKAY [ 12.683s]
writing 'userdata'...
OKAY [ 10.571s]
finished. total time: 28.186s
vm@M720q-Ubuntu1804:~/Desktop/nakasi-lmy47v$ fastboot reboot
rebooting...
finished. total time: 0.074s
ストレージが6 GBytesしか認識されない
fastboot update
コマンドでuserdataを作成せずファームウエアを書き込んでしまったため、意図せず、userdata領域のクリアと確保がされていないという不具合が出てしまった。
Androidを再起動後、設定 → ストレージ で表示される「ストレージの量」がたったの6GBytesしか認識されていない。
対処方法は、設定 → バックアップとリセット → データの初期化 を行うと、ストレージが再フォーマットされるので正しい値(30GBytes)が認識される。
最終的に、fastboot コマンドでユーザー領域が正しく認識されたか数値で確認できる
$ fastboot getvar all
(bootloader) version-bootloader: 4.23
(bootloader) version-baseband: N/A
(bootloader) version-hardware: unknown
(bootloader) version-cdma: N/A
(bootloader) variant: grouper
(bootloader) serialno: 015d4906995ff812
(bootloader) product: grouper
(bootloader) secure: no
(bootloader) unlocked: yes
(bootloader) uart-on: no
(bootloader) partition-size:bootloader: 0x0000000000600000
(bootloader) partition-type:bootloader: emmc
(bootloader) partition-size:recovery: 0x0000000000c00000
(bootloader) partition-type:recovery: emmc
(bootloader) partition-size:boot: 0x0000000000800000
(bootloader) partition-type:boot: emmc
(bootloader) partition-size:system: 0x0000000028a00000
(bootloader) partition-type:system: ext4
(bootloader) partition-size:cache: 0x000000001bb00000
(bootloader) partition-type:cache: ext4
(bootloader) partition-size:userdata: 0x0000000700f00000
(bootloader) partition-type:userdata: ext4
all:
finished. total time: 0.206s
0x700f00000 → 30,080,499,712 Bytes (28.01GBytes)
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 』 に詳しく書かれている。