■
Lollypopになってしまった悲しいNexus7をもとのバージョンに戻す
はじめに
hardoffでだいぶ昔にかったnexus7がandroid5.0だか5.1になっていてだいぶ重かった。最初はroot化する実験台のために買ったからどうでも良かったけど最初のバージョンはどれほどのものだったのか気になってのでやってみたい。
端末の状態
- nexus7(2012年版)
- 買ったときはv5.0以降
- 一回windowsのNexus Tool Kitでrootをとった
- rootを取ったときにbootloaderのunlockをしてしまった
- rootを取ったときにリカバリ領域がTWRPに書き換わってしまった
- その後も何回かuserdataとbootとsystemはwipeしてはCustomRomを入れてる
androidの主要なパーティション構成
androidはデータをフラッシュメモリに蓄えている。romとは言ってもフラッシュromと言われるromで書き換えができる。androidの主要なパーティションは下のようになってる。
- aboot...bootloaderが保存されているパーティション
- boot...ブートイメージが保存されてるパーティション
- cache...バックアップとかで使われるパーティション
- recovery...リカバリイメージが保存されているパーティション
- system.../systemにmountされるパーティション
- userdata.../dataにmountされるパーティション
ブートイメージは普段端末を起動するときに使われるイメージ。リカバリイメージはrecoveryモードで起動したときに使われるイメージ。この2つを含めた工場出荷時のいくつかのイメージはfactoryimageとしてzip形式で配布されている。
今回の目的はNexus7をandroid4.xにすることなのでbootとsystemとuserdataにfactoryimageを焼いてあげれば良いということになる。
fastbootについて
androidのブートローダーは一番最初に動かさられるプログラムであり、カーネルに制御を任せるところまで持っていってくれる。ブートローダーの仕事はそれだけではなくfastbootモードというものを持っている。root化したことのある人は見たことのあるドロイドくんが手術されてる画面である。
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はかなり楽で、とあるパッケージを導入すれば良さそう。
とゆうことでここもたった一つのコマンドを打つだけで良さそう。
# 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
動作確認のために再起動...
初期設定をしたら完成!!!
おわりに
最初出会ったときとは比べ物にならないくらい早くなった。早くなったからと言って普段から使おうとは思わないけどもっさもさよりかはいいと思う。
参考:
Androidを支える技術〈II〉──真のマルチタスクに挑んだモバイルOSの心臓部 (WEB+DB PRESS plus)
- 作者: 有野和真
- 出版社/メーカー: 技術評論社
- 発売日: 2017/03/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
これを昨日よんでroot化とrom焼きで何をしてたかがはっきりとは言わないが分かった気になったのでのでやってみた。blog書きながらぶっつけ本番でコマンド叩いてたから途中で問題にぶつかってたら結構やばかった。
この記事は SPC同好会 Advent Calendar 2017 - Adventar 17日目の記事です。
記事の内容二回も変えてしまいすいませんでした。
linuxのdpiについて
はじめに
gnomeからi3に変えたときに文字やらアイコンやらが小さくなってしまったのでその対処法を書こうと思いました。画像じゃわかりにくいけどbarが小さすぎて文字がとても読みにくい。
原因
画面が小さい割にパソコンの解像度が妙に高いことが原因だと思われます。(自分のパソコンは2560x1440)
デスクトップ環境にはコモンウィジェットツールキットやライブラリセットを使った様々な X クライアントがバンドルされており、完全なグラフィカルユーザーインターフェース (GUI) を提供します。
デスクトップ環境は色々やってくれていますが、i3などのウィンドウマネージャはその恩恵を受けられません。ショートカットキーとかも自分で設定する必要があります。
対策
i3のバーが小さい
Xのdpiを変更してやるといい感じの大きさになります。~/.xprofileに
を追加したらうまくいきました。
Xorg - ArchWiki に乗っているようにDisplaySizeを指定してもうまく行きました。
正直にディスプレイの大きさを書いてもいいのですが自分はdpiがちょうど180になるように大きさを計算しました。
chromiumが小さい
これもArchwikiで解決します。
qtreatorが小さい
これもArchwikiで解決します。
lightdmが小さい
webkit2greeterを使用しています
HiDPI support · Issue #48 · Antergos/web-greeter · GitHub
eclipseの文字が小さい
あまりいい方法だと思えませんがgtkのフォントサイズを大きくします。
509669 – [HiDPI][GTK3][Linux] Wrong font size in several components
おわりに
なにかありましたらどんどんコメントをよろしくお願いします。
この記事はSPC同好会 Advent Calendar 2017の10日目です。