HomeTips for NEC Terrain(改)>NEC Terrain(改) - rooted customize 編 -

■以後の記事


■一周年

 Terrain を使い始めて1年たったので、再レビュー。
 長期間使ってみて、満足度は非常に高く、乗り替えて良かったです。1年経っても、ハードウェア的にまったく劣化を感じさせません。こういう堅牢なマシンは好きです。
 あまりに良いので「予備機」も購入してしまいました。壊れても修理できないし、、、
 (今回の写真は「予備機」の Terrain のカメラで撮影しました)

・見た目
 兎に角、外観の劣化は全く無いのがすごいです。ケース未使用で何度か落っことしたりもしていますが、キズがまったく付きません。使っている材質が良いのかも。

 唯一の劣化は上部のイヤホンカバーが若干浮いてきた点↓ ここはちょっと残念。
  

・キーボード
 素晴らしく使いやすいです。キータッチは[es]よりも好き。↓キーボードの表面がテカってしまいましたが、これは避けようがないですね。

 たまにソフトキーのスマフォを使って文字を打つと使いにくくて投げたくなります。カーソル移動と範囲選択・切り貼りが何も考えず自由自在に出来るのは重要。
 やっぱりハードキーボードは最高です。

・ストレージ
 root化した時は 555MB しか使っていなかったのに、いつのまにか 670MB + 316MB = 986MB 。


 入れているアプリは殆ど変わっていないのですが、、、
 Googleアプリは更新しないようにしていますが「GooglePlay開発者サービス」「GooglePlayストア」は勝手に更新されてしまいます。これだけで 120MB 使用。
 アプリも勝手にデータが増えます。例えば Firefox はデータで 46MB キャッシュで 21MB も使っています。
Link2SD が無かったらダメでした。感謝です。

・Android と WindowsMobile
 Android 良くできています、素晴らしいです。
 Android しか使ってない人には当たり前なのでしょうが、WM と比較するとその良さが分かります(iOS は使ったこと無いので良く知りません)。
 WM は素の状態では不便極まりなく、定番フリーソフトを幾つか入れてやっと実用レベル。Android は素の状態でも結構便利に使えます。
 ただタスクの制御の考え方や、ウィンドウの制御は互いに似てますね。WM は出るのが早すぎたのかなぁと思います。

・カスタマイズ
 適度に古い為か? いろいろ手を入れる気にさせられます。
 rootを取ったり、キーを変更したり、、、まさか Androidアプリまで作ることになるとは思いませんでした。使っていて面白味が有るとも言えます。

 Android 5.0 以降は制限が増えているので、新しいデバイスに変える気がしません。
 今時だと Blackberry Priv なんかが候補なのかも知れませんが、↓はキーボードを「おまけで付けました」感が強いです。

 

 キー部分が小さすぎるし、そもそもキー数が少ないのでカーソルや CTL、SHIFT を割り付けられません。こんなのだったら Terrain の方が買いだと思います。


■不正通信を遮断

 完全root化の記事の所でちょっと出てきましたが、私はファイラーに ES ファイルエクスプローラーを使っています。
 「ES ファイルエクスプローラーを使っている」なんて言うと、人によっては「情弱なヤツ」と思われるかも知れません。ES ファイルエクスプローラーが定期的に中国(百度、baidu)のサーバに通信を流しているのは有名だからです。この事実を知っている人は大抵他のファイラーに乗り換えます。
 実際、私も乗り換え候補を幾つか試してみましたが、機能か操作性がイマイチなので乗り換える気になれません。

 という訳で乗り換えが難しいので、通信の方を遮断してみる事にします。

 AndroidのFireWallの仕組みについては Android OSでの主な通信ブロックアプリの動作方式 ←この記事が分かりやすいので一読をお薦めします。

 実はFireWallの導入はかなり初期からやっていました。 rootを取る前に使っていたのはコレ↓です。
  NoRootファイアウォール (カスタムVPN方式、root不要)
 はっきり言って、使いやすさでは NoRootファイアウォール がベストです。これ以上に使いやすいモノは無いと思います。後から出てくる iptables方式は、比較すると非常に使いにくいです。通信負荷も体感できる程の差はありません(通信速度も計測した事がありますが、差異はありませんでした)。

 以下、使い方例。
 インストールして、起動すると以下の画面。「スタート」を押します。
photo_norootfirewall_00

 OSから以下の警告が出ます。信用するしか無いので、チェックして「OK」
photo_norootfirewall_01 photo_norootfirewall_02

 起動するとこんな画面。アプリ単位で通信の通過・遮断を選択できます。FireFoxにチェックが入っているのは私がチェックしたからで、最初は全てチェック無しです。
photo_norootfirewall_03

 ↑ES ファイルエクスプローラーにチェックを入れていない状態で、ES ファイルエクスプローラーを起動します。
 すると、NoRootファイアウォールが未設定の通信を検知して、↓通知を上げてきます(この時点で通信はまだ通っていません)。
 通知をタップすると、右の画面が出ます。通信を通して構わないなら「許可」、遮断したいなら「ブロック」をタップします。
photo_norootfirewall_04 photo_norootfirewall_05

 上で「ブロック」を選択すると、×が付きます(例 QuickPic、 QuickPicも怪しい通信を飛ばします)。
 「許可」を選択するとチェックマークが付きます(例 Skype)。
 一度設定したアプリについて以後の通知は上がらず、設定に従い通信の許可/ブロックを行います。
photo_norootfirewall_12

 通信を全許可/全ブロックするアプリは上記で良いのですが、ES ファイルエクスプローラーはクラウドや ftpサーバのファイルも操作するので全ブロックすると支障が出ます。
 「ブロック/許可」の画面で「>」をタップすると以下の画面が出ます。
 103.235.46.149、202.108.23.85 に通信をしようとしているのが分かります(ES ファイルエクスプローラーのバージョンによってアドレスは変わることがあります)。
 「新しいカスタムフィルタ」をタップします。
photo_norootfirewall_06

 カスタムフィルタで 103.235.46.149、202.108.23.85 それぞれをブロックする定義を追加します。
photo_norootfirewall_07

 103.235.46.149、202.108.23.85 をブロックする定義を追加して、最後に全部を許可する定義を追加します。
photo_norootfirewall_08

 一覧上はこんな見え方になります。
photo_norootfirewall_09

 この状態で ES ファイルエクスプローラーを起動して、ログを見ると、通信が遮断されたのが分かります。
photo_norootfirewall_10

 さらに ES ファイルエクスプローラーから fc2 の ftpサーバにアクセスすると、ftp は問題なく通ります。
 ftpサーバはホスト名でアクセスしているが、baidu には ipアドレスでアクセスしている事も分かります(なので hosts ファイル方式では遮断できない)。
photo_norootfirewall_11

 さて、なぜに今頃になってこんな事を書いているかというと、root を取った Terrain では NoRootファイアウォール が使えないからです。
 正確に言うと NoRootファイアウォール は使えるのですが、VPN の為か? テザリングの方が使えなくなります。
 NoRootファイアウォールを止めて使える位だったら良かったのですが、テザリングするには NoRootファイアウォールをアンインストールする必要があります。

 仕方がないので代わりを探します。
 アプリ指定と ipアドレス指定のブロックが出来そうなのは以下2つ。
  DroidWall - Android Firewall (iptables方式、root要)
  AFWall+ (Android Firewall +) (iptables方式、root要)
 どちらも出来る事の本質は変わりませんが、細かい機能は AFWall+ の方が強化されています。ただ、やりたい事は DroidWall で出来てしまったので、DroidWall を使う事にしました。

 以下、使い方例。
 インストールして、起動すると以下の画面。
 iptables方式では、通信を検知して通知を上げる様な事は一切してくれません。どれを遮断するか事前に調べておく必要があります。
 アプリ単位で通信を全遮断したい場合は、そのアプリのチェックボックスをチェックします。
photo_droidwall_00.png

 以下、ipアドレス指定で遮断する手順。右下のメニューをタップして、「More」をタップします。
photo_droidwall_01.png

 「Set custom script」を選択します。
photo_droidwall_02.png

 103.235.46.149、202.108.23.85 を遮断する場合「custom script bellow」に以下の様に指定。なおこの指定はアプリ単位ではなく全体にかかります。

$IPTABLES -A "droidwall" -p TCP --destination "103.235.46.149" -j "droidwall-reject"
$IPTABLES -A "droidwall" -p TCP --destination "202.108.23.85" -j "droidwall-reject"

 「shutdown script」には以下を指定。

$IPTABLES -F "doroidwall"

photo_droidwall_03.png

 ↑「OK」をタップすると登録されます。
 ES ファイルエクスプローラーを起動して「通信ログを表示する」を見ると、通信が遮断されたのが分かります。
photo_droidwall_04.png

 iptables方式であれば、テザリングも問題なく使えます
 ちなみに FireWall を使うと広告も遮断できてしまいますが、それはフリーアプリの作者に申し訳ないので控えましょう。


■バッテリー消費改善

 Terrain を使用し始めた頃からの課題ですが、バッテリーの持ちが悪すぎます。普通に使っていても充電無しで1日持ちません。
 ちなみに「Settings」-「BATTERY」画面で見ると消費電力の上位は「Screen」。それもあって、「画面の明るさ調整」を頑張ったという経緯有り、、、。

 省電力と言うと、使ってない GPS や BT を止めるという話になりがちですが、そんな当たり前の事はやった上で、その先の対策を考えます。

 root系アプリを見ていると「CPU調整」「タスクキラー」系が省電力関連アプリとして見つかりました。まずは、「CPU調整」系でメジャーっぽい
  CPU tuner
 を試してみます。
 全部、説明が英語なのでよくわらないまま適当に設定してみると、待ち受け6時間でのバッテリー低下がたった1%! になりました。
 これはスゴイ!と思いきや、待ち受け中にメールが取れない、、、画面消灯で通信を切っているのですね。
 私はメールは常に受けられないと困るので、これは目的に合いません。
 ただ、通信が待ち受け時の消費電力の大部分を使っているのは確かなようです。ちなみに、CPUのクロック調整での省電力は効果出せませんでした、、、

 続いてタスクキラー系のアプリ。
  Greenify
 最近はこれがメジャーらしいです。これは、タスクを「殺す」のでは無く「休眠」させるそうです。
 入れているのは無償版ですが、正直何を休眠すればいいのかよく分かりません。メーラーを休眠させると当たり前ですがメールを受信してくれません。
 そもそも休眠させていても良いアプリなら入れないし、、、何となく問題無さそうなアプリを幾つか休眠させましたが、体感できる効果はありません。
 (効果的な使い方、誰か教えて下さい!)

 結局、省電力面で有効な root系アプリは見つけられませんでした、、、

 root系での改善はあきらめて、通信面から探してみます。
 消費電力の大部分は通信回りなので、通信を定期的に止められれば改善できそう。
  iBattery
 で、↑こんなのが有りました。
 元々は画面消灯で通信を切る為のアプリですが、消灯中に定期的に通信を復帰させる事もできます。
 「バッテリー消費が上がるので非推奨」と説明している通り、定期復帰させると iBattery が消費電力のトップになります。ただその分を差し引いても、待ち受けのバッテリー消費は1/2〜1/3になりました。
 定期的に復帰するタイミングでメールを受ける事もでるので、これはイイです!。

 暫くこれで使っていましたが、通信復帰のタイミングで通信がたくさん動いてバッテリーを消費します。裏で同期が動いていますね。
 同期の頻度が全くブラックボックスですが、カレンダー、連絡先は頻繁に同期しているようです。
 カレンダー、連絡先、なんて充電中だけ同期してくれれば十分ですが、、、同期制御アプリを探してみましたが全同期を ON/OFF するアプリしかありません。全停止するとGmailが取れないので、それはそれで NG です。
 同期項目を選んで設定したいのですが、そんなアプリは見つけられません。

 バックライトアプリも一段落したので、例によって自作にトライしてみました。

  EcoCtl (通信と同期の省電力化) [root不要]

 制御対象の同期項目を選択、選んだ同期はバッテリー稼働中に自動で無効にします。
 & iBattery の消費電力が納得行かないので、通信 ON/OFF 処理も付けました。EcoCtl 自身はバッテリーを殆ど消費しないレベルで実装できました。
 もちろん、メール、電話も受けられます。
 待ち受け中のバッテリー低下は、体感上ゼロになったので満足です。


■バッテリー消費改善 前振り

 なかなか記事に出来なかったけど、ようやく結論が出せそう。幾つかの既存アプリを試したけど満足できるモノはなく、結局自作。
 個人的観点ではかなり改善できた。メールも受信できます。テストが終わったら公開します。
 以下、充電100%から待ち受け状態での比較。

アプリ無し アプリ有り
photo_battery_off photo_battery_on


■画面の明るさ調整

 Terrainのバックライトの輝度の最適化にトライ。
 暗いところで使うと画面のバックライトが明るすぎて目が痛くなります。調整を最低にしても明るすぎます。
 更に気になるのがキーボードのバックライト。これがまた明るい…こんなの無くてもキーは読めるって。バッテリーを無駄にしている感が強いです。
 GooglePlayを探したところ「キーボードのバックライトを消せる」と言うのは、この3つ。
  明るさ調整
  Screen Filter
  Keyboard backlight controller

 実はバックライト問題はTerrainの使い始めの頃から気になっていて、上記アプリは初期から導入しています。
 「明るさ調整」は設定項目が一部よく分からないのと、キーのバックライト消灯がすぐ反映されない事があり。
 「Screen Filter」は特に問題は無く無難。
 「Keyboard backlight controlle」はrootが必要。root化できたので入れてみましたが、Terrainでは全く動きません(消灯しない)でした。
 更に、「明るさ調整」「Screen Filter」はどちらも画面にフィルター(半透明の暗い画面)を被せることで輝度の設定範囲よりも暗くする事ができます。ちなみにフィルターソフトは他にもたくさんあるので、スマフォの画面が明るすぎると思っている人は多いのかもしれません。

 暫く「Screen Filter」を使っていたのですが、周囲の明るさがキー印字が見えない程に暗い時にはバックライトが灯かないと困ります。当たり前ですが、、、その様な時は「Screen Filter」を止めるのですが、なんとか自動化できないかと調べてみました。
  AutomateIt

 これの有料版だとセンサー値を拾って、スクリプトっぽいモノが作れますね。
 で、わざわざ有料版を購入して試してみたんですが、、、やっぱり無理そうです。「一定明るさよりも暗くなった/明るくなった」というのを拾いたいのですが、そこまでは流石にできません。
 更に言うと、フィルター系は明るいバックライトをフィルターで無理矢理暗くしているので、バッテリーを無駄にしている感が強いです。
 後、フィルタアプリを使っていると apk からインストールする時に「インストール」ボタンが押せない(セキュリティ対策らしい)というのも地味に鬱陶しい。

 [es]の頃からですが、結局 無いモノは作るしかない 様です、、、

 という訳で、初のAndroidアプリを作ってみました。
 キーバックライトの処理を実装したところ、ほぼ同じやり方でスクリーンのバックライト輝度もコントロールできます。
 〜Android4.3では輝度自動調整をしながらベースを明るくしたり、暗くしたり出来ないので(4.4〜は標準で可)、それも合わせて実装しました。

  BKlightCtl(画面、ボタン明るさ調整) [root要]

 要rootですが、こいつのおかげで

 ・フィルタを使わずに標準の設定よりも画面を暗くする
 ・輝度範囲を任意に設定し、その幅で周囲の明るさに合わせて輝度を自動調整する。
 ・周囲が暗くなったときだけキーボードのバックライトを灯ける

 事ができます。
 手前味噌ですが、これが無い Terrain はちょっと使えません。デメリットは無いと思うので、root化済みの人にはお勧めだと思います。


■予備バッテリー

 NEC Terrain対応バッテリー3.7V 1900mAh OEM品 を amazon で売ってます。\2,480 + \500 の配送料。
 ポケゲより全然安いので、長く使う人は買っておくと良いかも。
 私は既に予備を4つ持っているので、今回は買っていません、、、

photo_battery


■SDバッファ設定

 いろいろと SD の依存度が上がったので、SD Speed Increase というアプリ(要root)を入れてみました。Google Play には無いので、ダウンロードサイトを探す必要有り。
 これで、SDカードのバッファを最大4096KBまで設定できます。
 ↓スライドバーでSDカードのバッファを最大4096KBまで設定できます、右下の炎の矢印を押すと有効化。常駐はしないらしい。
photo_SD_speed

 例によって体感ではよくわかりません。 A1 SD Bench で速度を測ってみました。ちなみに外部SDは CLASS 10 を使用しています。

キャッシュ無 1MB 2MB 4MB
photo_SD_nocache photo_SD_cache_1M photo_SD_cache_2M photo_SD_cache_4M

 外部SDには全く効果ないですな、、、システムストレージ、内部ストレージは確かに速くなっているようです。なぜか RAM も速くなっている。
 とりあえず 1MB に設定して使用中。特に不具合はありません。


■RAM & ROM の拡張

 Terrain の RAM が 1GB(実質655MB)、システムストレージが 787MB しか無い点について、改善してみます(どちらの作業も root 必須)。
 メモリ管理については「Androidのメモリ関連について検証してみた」が非常に参考になりました。ここを見ると、RAM 不足については SWAP の割り当てで対策になりそうです。
 簡単にSWAPを使えるようにするアプリには Swapper for Root がありました。
 とりあえずこいつを入れて、外部SDの fat32 にスワップファイルを作ってみると、、、効いているのか、いないのかよくわかりません。GooglePlayの説明には”to check if it work, type 'free' on Terminal app!”と書いてあるので、ターミナルから free コマンドを投入。

 shell@android:/ $ free
        total     used     free    shared   buffers
 Mem:    671144    655388    15756      0    29296
 -/+ buffers:       626092    45052
 Swap:      0      0      0

 Swapサイズはゼロのまま、、、全然効いていません。残念ながら Terrain で Swapper for Root は使えない様です。
 それでも Swap の行が表示されているので、カーネルとしては SWAP は使えそう。手作業で SD上に SWAPパーティションを用意して、割り当てを試してみることにします。
 SD上に複数のパーティションを作る手順はいろいろな所で詳しく紹介されているので割愛。
 今回は以下の様に作成。

photo_partition
 ↑NE201EXT が該当のSDカード(32GB)です。第2パーティションにext2で580MB(ここは後述のLink2SDで使用)、第3パーティションにLinuxSwapで1GBを割り当てました。

<補足>
 他の場所にはあまり書いてない、複数パーティション作成時の注意点(私はハマりました)
  @全てのパーティションを「Primaryパーティション」にする必要があります。「Logicalパーティション」が1つでも存在するSDは、Terrain はマウントできません。
  A「Primaryパーティション」が複数存在する SD を Win7 の PC に刺すと、PC は認識できません。正確に言うと初回の作業だけは出来ますが、そのSDを刺し直すとフォーマットを要求されます。
  Bなので、Terrainに刺したSDを、USB経由で作業するのが良いです。USB経由であれば、2度目以降の作業でも問題なくPCから操作できます。
  CどうしてもPCに刺して使用しなければならない場合は、フォーマット要求を無視し、Partition Wizard Freeで参照する事で、第1パーティションだけはメンテできます。ここで第1パーティションを「Logical」に変更すると、再びPCで使用できるようになります。ただし、第2パーティション以降は消失します。
<補足 終わり>

 次ぎに、作成したSWAPパーティションのデバイス名を確認します。ターミナルから「mount」コマンドを投入。

 rootfs / rootfs ro,relatime 0 0
 tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
 devpts /dev/pts devpts rw,relatime,mode=600 0 0
  :
 /dev/block/vold/179:33 /mnt/external_sd vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
  :

 /mnt/external_sd の行を探します。その前にある「/dev/block/vold/179:33」がSDカードの第1パーティションのデバイス名らしい。
 第2パーティションは「/dev/block/vold/179:34」、第3パーティションは「/dev/block/vold/179:35」らしい。
 なので、この場合 SWAP パーティションのデバイス名は「/dev/block/vold/179:35」と予想。

 次ぎに、SWAPパーティションの有効化テスト。ターミナルから以下を投入。

 SU
 busybox swapon /dev/block/vold/179:35

 エラーが出ないので成功したっぽい。確認の為に free コマンドを投入。

        total     used     free    shared   buffers
 Mem:    671144    662396     8748      0    13628
 -/+ buffers:       648768    22376
 Swap:   1054716    20616   1034100

 Swapの行の total に、作成した SWAPパーティションのサイズが入っているので成功した様です。
 最後に、有効化を自動化する為に、boot.sh に以下のコマンドを追加。追加するのは busybox のマウント以降の行です。

 busybox swapon /dev/block/vold/179:35
 echo 60 > /proc/sys/vm/swappiness
 
 2行目はSwapする頻度を調節するカーネルパラメータ、数字の部分を 0 - 100 の間で指定。大きいほどSWAPに追い出す頻度が高くなります。デフォルトが 60。
 以上で RAM の拡張?作業は完了。



 続いて、ROM(システムストレージ)の拡張手順です。システムストレージの拡張には
Link2SD を使用します。
 Link2SD の特長は以下3点(Link2SD FAQ から抜粋)
  @ネイティブのSD格納方式に比べ、内部ストレージからより多くの領域を解放することができる。
  Aシンボリックリンクを作成することで、ファイルがSDに格納されていても Android には内部ストレージに格納されている様に見える。そのため全てのアプリ(ウィジェット、サービス、ライブ壁紙など)をSDにリンクすることができる。
  BPCにSDカードをマウントしている時にも、SDにリンクしたアプリはすべて利用できる。

 インストールする前に、外部SDカードの第2パーティション(これ以外の場所は不可)に LINK用の領域を作る必要があります。手順は、SWAPパーティションを作る時と変わりません。ファイルシステムは ext2、ext3 いずれも使える様ですが、機種によっては ext2 / 1GB以下でないと不具合が出るという報告も有り。左記を外す理由もないので、ext2 / 580MB (2016/12現在 1GB)で作成しました。
 パーティションの準備が出来たらインストールします。

 ↓インストール完了後の初回起動で、以下のメッセージが出ます。作成したパーティションのファイルシステムを指定して「OK」
photo_Link2SD_01

 ↓エラーが出ますが無視して「OK」。
photo_Link2SD_02

 電源を入れ直します。再起動後↓通知領域に警告が出るので、タップ。
photo_Link2SD_03

 ↓今すぐクイックリブートを選択
photo_Link2SD_04

 ソフトリブートします。リブート後は通知領域の警告は出ない筈。Link2SD を起動、右上のメニューを開いて「ストレージ情報」を表示。
 ↓第2パーティションが認識されていれば成功(テスト時の画面なのでサイズが合ってませんね、、、)。
photo_Link2SD_05

 ↓「リンクを作成」でSDへ移動、「リンクを解除」で戻し、「SDカードに移動」は標準のSDカード移動です。
photo_Link2SD_06

 この状態でも問題なく使えますが、電源を入れ直す度に「今すぐクイックリブート」を行う必要があります。なぜマウントスクリプトの作成に失敗するのか? Link2SD FAQ を見ると、「install-recovery.sh」の更新が出来ないと失敗するとの事(ここに起動時のコマンドを追加するのはメジャーな手段の様です)。Terrain にはこのファイルが存在しません。
 代わりに、boot.sh にマウントコマンドを追記すれば解決しそうです。
 第2パーティションが認識されている状態で、ターミナルから「mount」を投入。ext2 を含む行を探すと以下の様な行が見つかります。

 /dev/block/vold/179:34 /data/sdext2 ext2 rw,relatime,errors=continue 0 0

 このようにマウントさせる為に、boot.sh に以下を追加します。

 mount -t ext2 /dev/block/vold/179:34 /data/sdext2

 boot.sh を修正して電源を入れ直すと、警告が出ずに第2パーティションが認識される様になりました。これでシステムストレージの空き問題は解決
 補足1) Linux の コマンドは詳しくないので、今回は師匠にいろいろ助けてもらいました。
 補足2) [es] の頃から極少リソースに最低限の物を入れて使うのに慣れているので、実際は困ってないんですけどね。


■完全root化完了 2015/4/21 最新情報で更新

 root化用ファイル(rooting.7z)を入手したので、予備用の Terrain でトライしました。
 adbコマンドが使用でき(ここの@Aを実施、B以降は不要)、かつ WEB に接続できる(処理中に追加ファイルをダウンロードします)PC が必要。Terrain側は処理テンポラリで使う SDカードが刺さっている必要があります。あと、Terrainは初期化しておけ、と書かれていますね。

<補足>
 今までの情報から files\install.sh および boot.sh を以下に直してから処理した方が良いかもしれません(私は直しました)。
■install.sh(直さなくても、直接不具合は無いみたい)
@mv sqlite3 .system/bin
 ↓
 mv sqlite3 .system/xbin
Amv preferred-apn.xml /data/data/com.android.providers.telephony/shared_prefs
 ↓
 mkdir /data/data/com.android.providers.telephony/shared_prefs/
 mv preferred-apn.xml /data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml
■boot.sh(setpropexに待ちを入れる & 想定外のリブートループを回避)
Bsetpropex att.service.entitlement false
 ↓
 .system/xbin/busybox test -f /system/xbin/busybox && sleep 30
 .system/xbin/busybox test -f /system/xbin/busybox && setpropex att.service.entitlement false
Csetprop ctl.restart surfacefinger
 setprop ctl.restart zygote
 ↓
 .system/xbin/busybox test -f /system/xbin/busybox && setprop ctl.restart surfacefinger
 .system/xbin/busybox test -f /system/xbin/busybox && setprop ctl.restart zygote
<補足 終わり>

 Terrain の USB debugging をオンにして、PC と USB で接続。
 PC から do.cmd を実行すると、コマンドプロンプトが起動して処理がはじまります。

 7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
 Processing archive: files.7z
 Extracting files\busybox
 Extracting files\dvz
  :
  :
 長いので省略
  :
  :
 -----------------------------------------------
  check your device & install Xposed Framework.
 -----------------------------------------------
 1. tap [Framework]
 2. tap [Install/Update]
 3. Allow Superuser Request
   tap [Remember choice forever] and [Allow]

 と表示されたら、Terrainの画面を見て、
  「フレームワーク」→「インストール/更新」→”SU権限を要求しています”→「ずっと」→「許可」(Terrainの言語設定で指示通り英語で出る時と、日本語で出る場合有り)
 とタップします。
 後は勝手に2回リブートして処理完了。
 全部勝手にやってくれるので、一時rootを取るよりも簡単です。電源を入れなおしても、起動途中で勝手にリブートして自動でroot化します。

 作業が終わったらAPNを設定し直します(作業前の指定は外れます)。初期登録情報が↓下記の様に追加されていて、基本この中で合う物を選択します。自分でAPNを追加すると電源を入れ直した時に再設定が必要になるみたいでした。この情報は files\apns-conf.xml の内容がroot化処理時に登録されていると思われます。使っている SIM の情報が無い人は apns-conf.xml に追加してroot化すると上手く行くかも。
root_apn.png

 ↓作業後のストレージの状態、残念ながら空きは増えません。
root_Storage

 ↓esファイルエクスプローラで設定を変えると root が使えるようになる
root_es01

 ↓例えば /data/local/tmp 配下、boot.sh はココに有る。電源を入れ直した後に動くシェルは /data/local/tmp/boot.sh です。更にfont等は、.system の下に有り。
root_es01

 ↓Wi-Fiテザリングもそのまま使えます(Win7から使えないと思ったら、Win7側でWi-FiのDHCPを無効にしていたのが原因)。
root_tethering

 ↓テザリング接続されると Wi-Fi Hotspot Clients に表示されます。最大10台接続できるらしい。
root_tethering

<おまけ> キーマップ置き換え自動化の覚え書き
 ・以下を追記した boot.sh を用意(追記するのは当然、#soft reboot よりも上)

#Keymap remount(add)
test -f .system/usr/keychars/keypad_8960.kcm && mount -o bind /data/local/tmp/.system/usr/keychars/keypad_8960.kcm /system/usr/keychars/keypad_8960.kcm
test -f .system/usr/keylayout/keypad_8960.kl && mount -o bind /data/local/tmp/.system/usr/keylayout/keypad_8960.kl /system/usr/keylayout/keypad_8960.kl

 ・書き換えた boot.sh、置き換え用 keypad_8960.kcm、keypad_8960.kl をPCの 〜\android-sdk配下に置く。
 ・Terrain の USB debugging をオンにして、PC と USB で接続。
 ・PC でコマンドプロンプトを起動し、〜\android-sdk 配下へカレントディレクトリを移動。
 ・以下のコマンドを順次投入し、boot.sh、keypad_8960.kcm、keypad_8960.kl を Terrain に送り込む

adb push keypad_8960.kcm /data/local/tmp/.system/usr/keychars/keypad_8960.kcm
adb push keypad_8960.kl /data/local/tmp/.system/usr/keylayout/keypad_8960.kl
adb push boot.sh /data/local/tmp/

 ・以下のコマンドを投入して、boot.shの実行権を修正。

adb shell
cd /data/local/tmp
chmod 755 boot.sh

 ・コマンドプロンプトを終了。Terrain の電源を入れ直す。

 以上でキーマップが変わります。もちろん、電源を入れ直しても変更は保持されます。
<おまけ 終わり>


■以前の記事

inserted by FC2 system inserted by FC2 system