Top > Is01 > TryWithoutRomBurning
Table of Contents

一台のIS01でROM焼きに成功してカーネルを入れ替えたが、 そこは天邪鬼のわたくしのこと、 rootingだけしてカーネルの入れ替えはなしでどれだけできるか、 試してみたくなった。そこで、デフォルトのカーネルのまま残されている、 もう一台のIS01でいろいろやってみることにした。

前提

  • BB09
  • rooting済み(IS01 rooter)

準備

とはいえ、これだけのことでも文鎮化の可能性はあるので、 adbへのアクセスを確保できるよう、準備として次のことを行なっておく。

  1. リカバリ領域にRecovery_kitを焼いて動作確認。
  2. ブート領域にRecovery_kitを焼く。
  3. リカバリ領域にオリジナルのカーネル(ddで保存しておいたboot.img)を焼く。
  4. バックアップ(念のため。次項)。

(2011-03-20)

TitaniumBackup導入

Marketからアプリを導入するだけなので簡単だし。これでバックアップがしてあれば オールリセットもこわくないというもの。 手順は省略。Pro版だとなお良し(こういうところにお金は使うもの)。

QuickSSHD導入

有料アプリだが私にとってはほぼ必須ソフト。 最近は無料のsshdもMarketにあるようだが、昔からあるこちらのほうが 使い勝手が良いのでこちらを使う。 手順は省略。

CPUクロック変更

setprop

 # getprop persist.maxcpukhz

を実行しても空行が表示されるだけ。それでも

 # setprop persist.maxcpukhz 384200

をやってからだと、

 # getprop persist.maxcpukhz
 384200

と表示される。これでクロックが変わっているのだらうか。 あとでベンチマークソフトを入れて試してみよう。

デフォルト値は768400値なしらしい(cf.: /system/build.prop)。

(2011-03-20)

この状態でQuadrantのスコアは717でノーマルと変わらなかったし、 QuadrantのSystem informationを見たらMax freq.もCurrent freq.も 約1GHzを指していた。 やっぱりsetpropしただけじゃ変わんないくさい。

/data/local.propの書換え

/data/local.propに次の行を追加。

 persist.maxcpukhz=384200

それでリブートしたら、 QuadrantのSystem informationではMax freq.は約1GHzだが Current freq.は384MHzと表示された。 Quadrantのスコアも384とノーマルの約半分となった。

これにより、CPUのクロック変更には/system/build.propをいじらなくても済む ということが明らかになった。

CPUクロック変更のまとめ

  • root: 必要
  • /system r/w: 不要
  • カーネル入替: 不要

あれ、でも/data/local.propのパーミッションはotherでも書き換え可能になってるなぁ なんでだ?

解像度変更

解像度変更もシステムプロパティの変更によって可能なことが知られている。

setprop

なにもしない状態で

 $ getprop ro.sf.lcd_density
 240

これがデフォルト値。

 # setprop ro.sf.lcd_density 480
 # getprop ro.sf.lcd_density
 240
 # setprop ro.sf.lcd_density 192
 # getprop ro.sf.lcd_density
 240

何を入れても値は変化しない。

/data/local.propの書換え

/data/local.propに次の行を追加。

 ro.sf.lcd_density=192

それでリブートしても、

 # getprop ro.sf.lcd_density
 240

ダメ。

/system/build.propの書換え

rootで/sqlite_journals/is01root/sysremount_atmyownrisk.shを実行したあと、 /system/build.propを次のとおり変更

 --- old
 ro.sf.lcd_density=240
 --- new
 #ro.sf.lcd_density=240
 ro.sf.lcd_density=160
 ---

それでリブートすると、確かに解像度が上がっており、

 # getprop ro.sf.lcd_density
 160

おk。

あと、Spare Partsというアプリで「Compatibility Mode」のチェックを外して リブートすると幸せ。

俺には180がちょうどいいようだ

それにしても、値を小さくすると解像度が上がるというのはdensityの概念とは反する ような気がする。DPIではなくて1行の高さ当たりのドット数とか そういう数字なのだろう。

解像度変更のまとめ

  • root: 必要
  • /system r/w: 必要
  • カーネル入替: 不要

(2011-03-21)

bashを入れる

ダウンロード

android用のbashはxdaのここにある。 圧縮も何もしてないARM用のバイナリが置いてある。

インストール

  1. adb push bash /data/local/tmp/bash
  2. adb shell
  3. $ su
  4. # /sqlite_journals/is01root/sysremount_atmyownrisk.sh
  5. # cd /system/bin
  6. # mv /data/local/tmp/bash .
  7. # chmod 755 bash

shに偽装

  1. # mv sh sh.org
  2. # ln -s bash sh

bashを入れるのまとめ

  • root: 必要
  • /system r/w: 必要(置き場所を/system以外にするなら不要)
  • カーネル入替: 不要

シャッター音を消す

/system/media/audio配下にシステム音源がある。

カメラとビデオのシャッター音を消す

  1. adb shell
  2. $ su
  3. # /sqlite_journals/is01root/sysremount_atmyownrisk.sh
  4. # cd /system/media/audio/ui
  5. # mkdir org
  6. # mv camera_click* VideoRecord* org

シャッター音を消すのまとめ

  • root: 必要
  • /system r/w: 必要
  • カーネル入替: 不要

(2011-03-23)

不要なアプリの退避

/system/app下のアプリの退避。リブートによって有効。

不要アプリ退避・復元スクリプト

file不要アプリ退避・復元スクリプトを書いた。 ダウンロードしたらIS01上でパスの通ったディレクトリに置き、 ln hideapp unhideappをするよろし。

 hideapp foo bar ...

で/system/app下のfoo.apkとfoo.odexとbar.apkとbar.odexと...を /system/app/orgにmvする。orgディレクトリがなければ作ってくれる。 /systemが書き込み可能でないと最初のapkファイルのmv時にエラー終了する。 実行後に要リブート。

また、

 unhideapp foo bar ...

で退避したものをorgディレクトリから復元してくれる。 実行後に要リブート。

GScriptLiteか何かと併用すると吉。

退避してもよさそうなアプリのリスト

なまえせつめい俺退避フラグ
FSonesegApp
FSonesegBG
FSonesegBML_Http
ワンセグ関連o
FotaAppケータイアップデートo
MajorUpdateメジャーアップデートo
PVMtpServiceStartUSB接続のMTPモード。俺は普通のストレージ転送モードで十分o
PVWmdrmServiceDRM関連。DRMなんぞクソくらえo
MessageReceiveお知らせ受信x
SendCmailServiceCメール送信x
WISPr公衆無線LANサービス接続関連x
TalkGoogle Talkのアプリ(アプリのみ)x
Droidget2☆なウィジェットに関連したアプリx

不要なアプリの退避のまとめ

  • root: 必要
  • /system r/w: 必要
  • カーネル入替: 不要

キー位置入れ替え

http://www22.atwiki.jp/is01next/pages/37.html 参照。

キーボードのコンフィグレーションファイルまとめ

2種類のファイル群

/system/usr/keylayout/*.klハードキーとキーコードの対応関係を定義するテキストファイル。単純にキーの入れ替えとかならこっちいじるだけでOK
/system/usr/keychars/*.kcm.binキーコードと文字コードの対応関係を定義するバイナリファイルで、モディファイアキーの組み合わせも定義可

*.kl

これはテキストファイルなので見れば分かる。

*.kcm.bin

ヘッダ32バイトの後にキーマップ定義16バイトがキーの 個数分続く。キーマップ定義は先頭2ワードがキーコードで、 後半の4ワードが以下の順に並ぶ4つの文字コード。

モディファイアなし/Shift/Alt/Alt+shift

例) Pキーのキーマップ

00001d0: 2c 00 00 00 50 00 37 00 70 00 50 00 40 00 60 00 
キーコード: 0x0000002c 
文字コード[0]: 0x0070 = 'p' (単独Pキー) 
文字コード[1]: 0x0050 = 'P' (Shift+Pキー) 
文字コード[2]: 0x0040 = '@' (Alt+Pキー) 
文字コード[3]: 0x0060 = '`' (Shift+Alt+Pキー) 

その他細かい仕様はAndroidのソースでKeyCharacterMap.(cpp,h) 見ればわかる。

(2011-03-26)

準備

  1. systemをr/wマウント
     # /sqlite_journals/is01root/sysremount_atmyownrisk.sh
  2. keychars下のバックアップ
     # cd /system/usr/keychars/
     # mkdir org
     # mv *.bin org/
     # cp -p org/* .
  3. keylayoutのバックアップ
     # cd /system/usr/keylayout
     # mkdir org
     # mv *.kl org/
     # cp -p org/* .

入れ替え操作

keychars/SH_qwerty_key.kcm.bin

PCにもってきてbviで編集して書き戻す。

keylayout/SH_qwerty_key.kl

実機上で直接viで。

編集が終わったらリブートで有効化。 他に有効化の方法があったら教えてください。

変更をしたキー

keychars/SH_qwerty_key.kcm.bin

  • Alt+oに | (pipe) 文字を割り当て。

keylayout/SH_qwerty_key.kl

  • key 54 SHIFT_RIGHT を TAB に。

キー位置入れ替えのまとめ

  • root: 必要
  • /system r/w: 必要
  • カーネル入替: 不要

WiFi Adhoc接続

必要がないので試みていない。

テザリング

必要がないので試みていない。

スワップ(ダメ)

手順

 # mkswap /data/local/tmp/swapfile.swp
 mkswap: can't open '/data/local/tmp/swapfile.swp': No such file or directory

mkswapの前にファイルが存在していないとなぜかエラーになる。

 # >/data/local/tmp/swapfile.swp
 # mkswap /data/local/tmp/swapfile.swp
 Setting up swapspace version 1, size = -4096 bytes
 # swapon /data/local/tmp/swapfile.swp
 swapon: /data/local/tmp/swapfile.swp: Function not implemented

スワップ(ダメ)のまとめ

  • root: 必要
  • /system r/w: 必要
  • カーネル入替: 必要

Compcache(ダメ?)

...

CIFS

...

(2011-03-27)

sysremount_atmyownrisk.shの置き場所が/sdcard下になっていたのを /sqlite_journals下になおしました。 2chのrootスレ6のいろいろな登場人物の方々に感謝します。

(2011-07-24)

Tag: au IS01 ROM焼き kernel





添付ファイル: filehideapp.tgz 1011件 [詳細]