わたねこコーリング

野良プログラマ発、日々のアウトプット

Nexus7 を Factory Image で初期化する

3年程使っている Nexus7 で、Lollipop にアプデした頃からおかしな現象が見られるようになりました。日本語の特定の文字が表示されなかったり線か網がかかったような表示になるというもの。調べたら、ああそうそう、こんな感じ(↓)。

detail.chiebukuro.yahoo.co.jp

「設定」からリセットする方法だと、この不具合は解消できないようで、上記質問への回答にある「Factory Image の焼き直し」ってのを試してみることに。ネットで調べながら進めていったのですが、参考にした記事は若干古い(3〜4年前くらい)ものが多く、今では事情が違う部分もあるようなので、今回の手順を備忘録として書き残しておきます。尚、当方環境は Nexus7 (Nakasi) + Mac OSX 10.9.5 なので、異なる環境の方は適宜読み替えられたし。

手順はおおまかに以下のようになります。

  1. 手持ちのパソコンにて、Google Developers から自分の機種に合った Factory Image ファイルをダウンロードして解凍する。
  2. Factory Image の書き換えには fastboot というコマンドが必要なので、これも入手してパソコンにインストールしておく。
  3. Nexus のブートローダを起動して、パソコンに USB 接続する。
  4. パソコンにて Factory Image に同梱されていたシェルスクリプトを実行して、ブートイメージを書き換える。

まず(1)ですが、 Factory Image は機種毎に異なるものが用意されているので、自分の機種を知る必要があります。Nexus の「設定」で確認すると「Model : ME370T」とあったのですが、これは Nakasi というコードネームに該当するみたい。という訳でここから MD5 チェックサム 32624479e2f24d07fd04a2099a163604 の 5.1.1 イメージをゲット。ダブルクリックして解凍すると、中に flash-all.sh というテキストファイルがあって、これがイメージファイル書き換えのシェルスクリプトとのこと。参考にした記事にはスクリプト最終行にある

fastboot -w update image-nakasi-lmy47v.zip 

から -w を削除しておけってのがありました。どういうことかと調べたら -w はユーザデータとキャッシュファイルを消去するオプションらしく、要は自分のデータ類を残しておきたかったら -w 無しがいいよ、ということでしょう。ご尤もなので従ってみます。

次いで(2)ですが、ネットの参考記事には Android SDKインスコしろってのもあったんですが、やってみると SDK には fastboot が含まれていないようだったので、ここから入手しました。ダウンロードに同梱されている ADB-Install-Mac.sh を下記のようにターミナルから実行します。

$ sh ADB-Install-Mac.sh 
This will install ADB and Fastboot on your computer.
Root Permissions required. Please type your password.
Password: (←ここで管理者パスワードを入力)
Changed directory to /Users/yourname/Downloads/Android
Moving ADB
ADB Moved to /usr/bin/adb
moving Fastboot
Fastboot moved to /usr/bin/fastboot
You may now run Android Debug Bridge and Fastboot commands
Have a nice day.

さて、パソコン側の用意が出来たので(3)を。Nexus の電源とボリュームダウンキーを長押しして再起動し、こんな画面が表示されれば OK。
f:id:mariyudu:20150907134030p:plain

USB ケーブルで Nexus とパソコンと接続したら、いよいよ(4)のブートイメージ書き換え。ターミナルから実行した様子です(↓)。

$ sh flash-all.sh 
...
(bootloader) erasing userdata...
(bootloader) erasing userdata done
(bootloader) erasing cache...
(bootloader) erasing cache done
(bootloader) unlocking...
(bootloader) Bootloader is unlocked now.
OKAY [ 28.433s]
finished. total time: 28.433s
erasing 'boot'...
OKAY [  0.034s]
finished. total time: 0.036s
erasing 'cache'...
OKAY [  0.089s]
finished. total time: 0.089s
erasing 'recovery'...
OKAY [  0.033s]
finished. total time: 0.033s
erasing 'system'...
OKAY [  0.703s]
finished. total time: 0.703s
erasing 'userdata'...
OKAY [  4.964s]
finished. total time: 4.965s
sending 'bootloader' (2100 KB)...
OKAY [  0.303s]
writing 'bootloader'...
OKAY [  1.220s]
finished. total time: 1.523s
rebooting into bootloader...
OKAY [  0.019s]
finished. total time: 0.020s
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
--------------------------------------------
Bootloader Version...: 4.23
Baseband Version.....: N/A
Serial Number........: (註:ひみつですw)
--------------------------------------------
checking product...
OKAY [  0.040s]
checking version-bootloader...
OKAY [  0.027s]
sending 'boot' (5184 KB)...
OKAY [  0.711s]
writing 'boot'...
OKAY [  0.222s]
sending 'recovery' (5738 KB)...
OKAY [  0.773s]
writing 'recovery'...
OKAY [  0.237s]
sending 'system' (649455 KB)...
OKAY [ 85.181s]
writing 'system'...
OKAY [ 36.497s]
rebooting...

finished. total time: 123.835s

実行に2分くらいかかりました。これが終わると Nexus が再起動を2回ほど繰り返して(2回目の起動時間が長かった…)、めでたく Lollipop が起動されました。不具合もちゃんと解消されたようです、ふう。

しかしこの作業、一般ユーザにはちょっとハードルが高いですよねぇ。GUI 上で実行可能な初期化ツールとか出してくれないのかしら > Google さん