Lollypopになってしまった悲しいNexus7をもとのバージョンに戻す

はじめに

hardoffでだいぶ昔にかったnexus7がandroid5.0だか5.1になっていてだいぶ重かった。最初はroot化する実験台のために買ったからどうでも良かったけど最初のバージョンはどれほどのものだったのか気になってのでやってみたい。

端末の状態

  • nexus7(2012年版)
  • 買ったときはv5.0以降
  • 一回windowsNexus Tool Kitでrootをとった
  • rootを取ったときにbootloaderのunlockをしてしまった
  • rootを取ったときにリカバリ領域がTWRPに書き換わってしまった
  • その後も何回かuserdataとbootとsystemはwipeしてはCustomRomを入れてる

androidの主要なパーティション構成

androidはデータをフラッシュメモリに蓄えている。romとは言ってもフラッシュromと言われるromで書き換えができる。androidの主要なパーティションは下のようになってる。

ブートイメージは普段端末を起動するときに使われるイメージ。リカバリイメージはrecoveryモードで起動したときに使われるイメージ。この2つを含めた工場出荷時のいくつかのイメージはfactoryimageとしてzip形式で配布されている。

今回の目的はNexus7をandroid4.xにすることなのでbootとsystemとuserdataにfactoryimageを焼いてあげれば良いということになる。

fastbootについて

androidブートローダーは一番最初に動かさられるプログラムであり、カーネルに制御を任せるところまで持っていってくれる。ブートローダーの仕事はそれだけではなくfastbootモードというものを持っている。root化したことのある人は見たことのあるドロイドくんが手術されてる画面である。

f:id:nakano_1127:20171217120631p:plain

Nexus7は電源が切れた状態で電源ボタンと音量小ボタンを長押ししてfastbootモードに入る。

fastbootモードにすると何が嬉しいかというとパソコンからパーティションの中のデータを消したりイメージを焼いたりできるようになるのである。

今回はNexus Tool Kitとかいう甘えではなくこのモードからコマンドを叩いて焼いていく。

実際にやってみようの一歩手前

自分はarchlinuxを使っている。archlinuxはいいぞ。

adbとfastbootを入れる

windowsだとandroidSDKとかをごにょごにょするが縁のない存在なので割愛する。

root化といったらadbという風潮があり、とても人気のように見受けられるが今回は出番なし。fastbootを主に使う。↓のコマンドでadb,fastbootが入る。 

# pacman -S android-tools
nexus7のドライバを入れる

Get the Google USB Driver | Android Studio によるとWindowsでのみGoogle USB Driverが必要なようだ。

linuxはちょっと楽で Run Apps on a Hardware Device | Android Studio をみて/etc/udev/rules.d/51-android.rulesを作成するそうです。

archlinuxはかなり楽で、とあるパッケージを導入すれば良さそう。

Android - ArchWiki 

とゆうことでここもたった一つのコマンドを打つだけで良さそう。

# pacman -S android-udev

ドライバがなかったからなのか最初fastbootが使えなかった。厳密に言うと使ってもデバイスになんの影響もなかった。

factoryimageをダウンロード

https://developers.google.com/android/images#nakasi からfactoryimageをダウンロード(わざわざwgetを使う必要はない)

$ wget https://dl.google.com/dl/android/aosp/nakasi-jzo54k-factory-25cab35c.zip //~/workspaceにて
$ unzip nakasi-jzo54k-factory-25cab35c.zip //解凍

実際にやってみよう

fastbootコマンドはgitのようにfastboot <command>の形で実行する。

詳しいことはfastboot -hでhelpをみるといい。

factoryimageのzipの中にあった*.shも参考になる。

fastbootコマンドを受け付けるようにする

電源ボタンと小ボタンを長押しでfastbootモードにする。そのあとusbとpcをつなぐ。

$ fastboot devices

で繋がってるデバイスを確認できる。何も出ない場合は何かがおかしい。

パーティションの中身を消去する
$ fastboot erase boot
$ fastboot erase system
$ fastboot erase userdata

いちおうcacheも消しておく

$ fastboot erase cache
それぞれのパーティションにイメージを焼く
$ fastboot flash boot boot.img
$ fastboot flash system system.img
$ fastboot flash userdata userdata.img

自分は今回リカバリー領域は残してるのでやってないがTWRPとかのカスタムリカバリを消したい場合は同じようにやればいいと思う。

reboot
$ fastboot reboot

動作確認のために再起動...

f:id:nakano_1127:20171217141449p:plain
f:id:nakano_1127:20171217141454p:plain
f:id:nakano_1127:20171217141459p:plain
f:id:nakano_1127:20171217141659p:plain

初期設定をしたら完成!!!

おわりに

最初出会ったときとは比べ物にならないくらい早くなった。早くなったからと言って普段から使おうとは思わないけどもっさもさよりかはいいと思う。

 

参考:

Androidを支える技術〈II〉──真のマルチタスクに挑んだモバイルOSの心臓部 (WEB+DB PRESS plus)
 

 これを昨日よんでroot化とrom焼きで何をしてたかがはっきりとは言わないが分かった気になったのでのでやってみた。blog書きながらぶっつけ本番でコマンド叩いてたから途中で問題にぶつかってたら結構やばかった。

 

この記事は SPC同好会 Advent Calendar 2017 - Adventar 17日目の記事です。

記事の内容二回も変えてしまいすいませんでした。

adventar.org