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

linuxのdpiについて

はじめに

gnomeからi3に変えたときに文字やらアイコンやらが小さくなってしまったのでその対処法を書こうと思いました。画像じゃわかりにくいけどbarが小さすぎて文字がとても読みにくい。

f:id:nakano_1127:20171210144215p:plain

原因

画面が小さい割にパソコンの解像度が妙に高いことが原因だと思われます。(自分のパソコンは2560x1440)

デスクトップ環境にはコモンウィジェットツールキットやライブラリセットを使った様々な X クライアントがバンドルされており、完全なグラフィカルユーザーインターフェース (GUI) を提供します。

デスクトップ環境 - ArchWiki より

デスクトップ環境は色々やってくれていますが、i3などのウィンドウマネージャはその恩恵を受けられません。ショートカットキーとかも自分で設定する必要があります。

対策

i3のバーが小さい

Xのdpiを変更してやるといい感じの大きさになります。~/.xprofileに

xrandr --dpi 300

を追加したらうまくいきました。

Xorg - ArchWiki に乗っているようにDisplaySizeを指定してもうまく行きました。

# /etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
    Identifier             "Monitor0"
    DisplaySize	           361 203 <--ここ
EndSection

Section "Device"
    Identifier             "Device0"
    Driver                 "intel"
EndSection

Section "Screen"
    Identifier             "Screen0"
    Device                 "Device0"
    Monitor                "Monitor0"
    DefaultDepth            24
    SubSection             "Display"
        Depth               24
        Modes              "2560x1440_60.00"
    EndSubSection
EndSection

正直にディスプレイの大きさを書いてもいいのですが自分はdpiがちょうど180になるように大きさを計算しました。

f:id:nakano_1127:20171210152700p:plain

chromiumが小さい

これもArchwikiで解決します。

HiDPI - ArchWiki 

#~/ .xprofile
export GDK_DPI_SCALE=1.7
f:id:nakano_1127:20171210153848p:plain
f:id:nakano_1127:20171210153856p:plain

qtreatorが小さい

これもArchwikiで解決します。

HiDPI - ArchWiki

#~/ .xprofile
export QT_AUTO_SCREEN_SCALE_FACTOR=1
f:id:nakano_1127:20171210154123p:plain
f:id:nakano_1127:20171210154149p:plain

lightdmが小さい

webkit2greeterを使用しています

HiDPI support · Issue #48 · Antergos/web-greeter · GitHub

#/usr/share/lightdm-webkit/themes/antergos/css/style.css に↓を追加
@media screen and (max-width: 3000px)
{
       html { zoom: 2.0; }
}

eclipseの文字が小さい

あまりいい方法だと思えませんがgtkのフォントサイズを大きくします。

509669 – [HiDPI][GTK3][Linux] Wrong font size in several components

#~/.config/gtk-3.0/gtk.css
label, entry, treeview {
     font-size: 28px;
}
f:id:nakano_1127:20171210163711p:plain
f:id:nakano_1127:20171210163717p:plain

おわりに

なにかありましたらどんどんコメントをよろしくお願いします。

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

adventar.org