攻撃は最大の防御なり

50代おやじの適当なブログです。

[Android] busyboxをインストする

2011-08-31 10:07:05 | Android
今日はbusyboxをインストしようのお話です。

こいつを入れる為にはroot権限が必要です。
まずAndroidマーケットから「busybox Installer」をインストします。
実行してInstallを押して完了。簡単ですね!



素のAndroid端末はLinuxに比べて使えるコマンドが少ないんです。
そこを拡張して色んな事が出来るようにするのがbusyboxです。
でも、もうあなたは既にbusyboxを使っているかもしれませんね。
ClockworkMod Recoveryありますよね
?あれは内部的にbusyboxが使用されています。
前にも書いた通り通常起動とリカバリーはバンク切り替えみたいな感じで中身が入れ替わるようになっています。
裏で使っていたbusyboxを今回表にも入れてやった訳です。

じゃあ折角ですからbusyboxを見てみましょう。



/system/sbinに入れたのでその中身です。
大量にシンボリックリンクが張られていますね。実はbusyboxは一つのbusyboxという塊でしかありません。
ユーザーが色々なコマンドを発行するとbusyboxが呼びだされるようになっていて
busybox側が振る舞いを変えて実行結果を返してくる仕掛けになっています。賢い奴ですね。
でも、busyboxって言うのはAndroid専用のアプリじゃなくって、組み込みLinux用に作られたツールです。
例えばダーツボードで自動計算してくれるやつありますよね?あれの中身もLinuxです。そんな限られたメモリしかないような状況下で威力を発揮します。

今回はインストーラーを使いましたが実はこのbusyboxに乗っている機能は全てではありません。
busyboxはビルド時にどの機能を組み込むか、自分が必要な物を選ぶようになっています。
ですので出来上がりは十人十色になります。
興味があれば自分専用のbusyboxをビルドしてみると面白いんじゃないですか?

busyboxをインストしましたが、入れたからといって即何かが出来るようになるわけじゃないです。
でも、アプリが暗黙的にbusyboxの機能を使っていて正常に動かない場合がままあります。
それは避けたいのでなるべく早い内にインストしておいた方が吉ですね。
この話題もうちょっと引っ張ります。

今後の予定

2011-08-30 09:48:54 | Android
最近、面白くない記事が続いていますが
今後はこんな内容を書こうかと思っています。

・busyboxをインストールする
・Rom Managerを使おう
・adbとは何か?
・adbの使い方
・Android SDKのツール達
・フォントを入れ換えてみる
・インストしたアプリは何処へ?
・dalvik-cacheって何?
・systemディレクトリの構成
・apkの中身を見てみる
・apkとodex
・bootとrecovery
・boot.imgを展開してみる
・カーネルのconfig
・変更したboot.imgを使ってみる

一応自分の覚え書きの意味で。

HTC Sensationの2.6.35.13カーネルについて

2011-08-29 09:18:05 | HTC Sensation
懲りずにHTC Sensation用のカーネル弄りを続けています。

以前、ビルドしたカーネルを突っ込むと画面が表示されなくなると書きましたが
2.3.4ROMに以前の2.6.35.10カーネルを突っ込んでも同様の現象が起こる事を確認しました。
要するに今の2.6.35.13カーネルは単なるマイナーバージョンアップではなく、何らかの変更が加えられていると言うことです。
実際に/procの情報を比較してみるとかなり変わっていますね。

現在xda等で配布されているカスタムカーネルはHTCから公開されている2.6.35.10のソースをベースにしているため
2.3.4ROMでは動かないよとか、動くとしても描画回りのシステムライブラリを2.3.3版に戻す対処が取られています。
これは一応動く様になると言うだけで描画がカクカクして使い物になりません。
カスタムカーネルはもっと出て来てもおかしくないのに、何故か少ないのはこのためです。

次に着目したのは2.3.35.13と2.3.3の組み合わせだと正常に動作する事です。
下位互換が保たれているということは、カーネルの根本に関わる構造上要因ではないと言うことになります。
今はドライバー回りを疑っていて最新版に入れ換える作業を行っています。
うちの機体はAUOのLCDが乗った機体なので、SHARPの機体は動かないとかいう落ちになるかも知れませんがね。

今回、ビルド用PCのCPUをパワーアップしました。
カーネルフルビルドで3分かからないので快適です。

間が悪い

2011-08-26 09:58:54 | 戯言
今日は職場のサーバーが止まるので 本当は休みにしようかと思っていたんですが
そんな時に限って上司が連絡をよこせとか言い出したんで取り敢えず出ておきます。
俺が直接連絡するわけではないんですが、休む暇があるのなら別の現場を手伝えと言われかねないので居た方が良いかと。

今の所3システム掛け持ち(但し職場は同じ)で作業しているので
忙しいのか暇なのか良く分からない状況です。
自分の時間も取れるしSEの中では楽な方だと思うんだけど、別現場の手伝いを出来るほどの余力はないのですよ。

中々上手く行きませんなぁ

2011-08-25 09:24:52 | 戯言
今やっているのは公開されているshooter(EVO 3D)カーネルのソースにpyramid分をマージする作業です。
起動はするようになったんですが画面がブラックアウトしてしまうんですよね。
lcdドライバーが変わっているのか、もうちょっと考えないとダメだね。
CyanogenModの直しも進めたいし…

そんなこんなで宵っ張りな日々が続いています。


オーバークロックカーネルを作っています

2011-08-24 10:00:33 | HTC Sensation
昨日からHTC Sensation用のオーバークロックカーネルを作っています。

昨夜はCyanogenMod用の2.6.37.6をベースにしていたんですが、どうも時間掛かりそう。
なので先ずは2.6.35.13を使って作ろうかな。

実はMSM8260ってCPUは定格でも1.5GHzまで回せるようになっています。
リテールカーネルも回せるような実装がなされているけどロックをかけてる。
そこを外してやったのがまず一つ。
後は1.8GHzまで回せるようにしたやつ。
上記の事を考えるとそんなにリスクは無さそうですね。

レスポンスと発熱を見てどちらを常用にするか決めよう。

[Android]パーミッションって何だろ?

2011-08-23 10:04:24 | Android
今回は以前書いたファイルの権限について書いて行きます。
では早速ルートディレクトリを覗いて見ましょう。



これは「ls」と言うカレントディレクトリの中身を表示するコマンドの結果です。
Androidをコマンドラインから操作する場合に頻繁に使うので少し覚えておきましょう。
行頭に「drwxr-xr-x」みたいな文字列がありますがこれがファイル等の参照権限を表しています。
最初の一文字がリソースの種別です。

- 通常ファイル
d ディレクトリ
l シンボリックリンク

シンボリックリンクはwindowsのショートカットと似たような機能ですが、そこにコピーが存在するするのと同じように扱えます。
この例だと

etc -> /system/etc

となっている場所。
etcの内容は/system/etcを参照しています。/system/etcの内容を変更した場合はetcの内容も変更されます。

その次からは3文字で一セット。ファイルとディレクトリではちょっと意味合いが違います。

ファイルの場合

 r 読み込み権限
 w 書き込み権限
 x 実行権限

ディレクトリの場合

 r ディレクトリ内容物の読み込み権限
 w ディレクトリ内への書き込み権限
 x ディレクトリ内に移動する権限

3文字が3セット並んでいます。
それぞれ所有ユーザーに対する権限、所有グループに対する権限、その他のユーザーに対する権限を表します。
グループと言うのは複数ユーザーの集合体です。

パーミッション表記の後に表示されているのがファイルの所有ユーザー、ファイルの所有グループ、ファイルサイズ、更新日時となります。
Androidは所詮一人で使う物ですのでファイル所有者は余り問題ではなく、参照権限が論点の中心となります。

この参照権限rwxの総組み合わせは8種類なので3桁の8進数表記を良く使用します。
「---------」であれば000「rwxrwxrwx」は777といった感じ。
この全ての組み合わせを覚える必要はなくAndroidの場合は2種類だけ覚えてください。

rw-r--r-- (644)

通常ファイルのパーミッション。これが一番多いかも。

rwxr-xr-x (755)

ディレクトリ及び実行ファイルのパーミッション。
/system/bin,/system/xbin等のファイルはこれじゃないと動かなくなります。

このパーミッションを変更する場合にはchmodというコマンドを使います。

chmod 644 build.prop

上記は「build.propをrw-r--r--の参照権限に変更する」という意味ですね。

このパーミッションを変更する必要性が生まれるのは、/system以下のファイルを入れ替えた場合です。
新規に入れた場合、上書きした場合に関わらず一定のパーミッションに変更されてしまうので適正なパーミッションに修正する必要があります。(ここはLinuxとちょっと違いますね)
この場合にどんなパーミッションが付与されるかはumaskによって決まっており機種毎に異なります。


要はシステムファイルを入れ替えた場合には適切なパーミッション設定をしてあげないと起動不能になる場合がありますよと言うことです。
しかし、通常通りadbで作業をしている人だったらとんでもなく変な事をしない限り復旧できます。
例えば/system/bin以下を全て644に変更してしまったとかねw それでも直せますが。
rootエクスプローラしか使えない人が起動不能にしてしまった場合はちょっと厄介ですね。
頑張ってadbを覚えるか、バックアップから戻すか、最悪はRUUで初期化か。

CyanogenModの修正はダルい

2011-08-22 09:15:54 | HTC Sensation
Sensation用のCyanogenModの開発を続けています。

基本的にはSnap Dragon系AndroidオープンプロジェクトAuloraのmsm8660コードをCyanogenMod側にマージして行く作業です。
こんなもんで動くかな?と言うところでビルドして動かすと大体ライブラリ欠損やメソッドシンボル欠如で落ちるので
そこを補完してやるべき手段を考えて次の手を打つ感じですね。
本当は周辺のコードを読んで辻褄を合わせて行くべきなんでしょうけど、あんな大量のコードを読んでいられないので動かした放が早い。

今のPCだとccacheを使ったフルリビルドでも20分位かかるのでかなり効率が悪いです。
出来れば6コアCPUでメモリ16Gは欲しい。
そうこうしているうちに誰かが本家にpushしてくれるだろうとちょっと思っています。

明日は新洗濯機が届くんです

2011-08-19 10:00:38 | 戯言
今週の月曜日に壊れた洗濯機を直すために休みを取りました。
でも修理しなければならない場所がかなり中の方で、とても開ける気がしません。
もう20年物の洗濯機ですからとても汚いんですよ。ネジも錆びて開かないしね。

もう、ちょっと諦めて電気屋を回ってどんなもんか見てたんです。
一軒目で店のオッサンの説明を聞いたけど、それなりの値段だったので
もうちょっとしたら買います。と言って帰ってきました。

二件目ではさっき説明を受けた商品がかなり安かった。
ここの店員のオッサンは敬語を使わない人。
「へーそうなんだ」みたいな感じね。
こういう話し方する人って難しいですよね。
「誰に向かって話してんだ?」と思われても仕方ない。
嫌いな人も多いだろうなぁと思われるタイプですね。
でも、決算期で更に安くしてくれたので買いました。
脱水が壊れていてかみさんが手で絞っているので、早くしてあげないと可愛そうだしね。

明日届くので古いのの撤去と設置をやらないと。

HTC SensationのディフォルトAPN設定を変更する

2011-08-19 00:49:16 | HTC Sensation
俺はDesireからの移行組なのでSensationには銀SIMを差して使用しています。
皆さんご存じの通りSensationのソフバンAPNはディフォルトではandgobalのみですよね。
普段はOpenSoftbankにしているから全く問題ないんですが、何かの拍子でユーザーデータがワイプされた場合
勝手にandgobalに接続されてしまうので非常に嫌です。
当然すぐに機内モードに切り替えますがそれでも多少繋がっちゃう。
今の所パケ放対象外が累計で400円位になっています。
だからと言ってその度にSIMを抜くのも面倒なので、ディフォルトの設定をに変更しました。

今までのスマフォだとAPN設定は/system/etc/apns-conf.xmlにありましたがSensationは見当たりませんね。
でも普通に使うことが出来ます。apns-conf.xmlの中のバージョンをこんな風に8に変更してやればOK!



書式フォーマットも変更されていないので使い慣れたapns-conf.xmlを入れてやれば使えます。

今まで入っていたAPN設定は何処にあるのかと言うと/system/framwork/framwork-res.apkの中の
/framwork-res/res/xml/apns.xmlに記載されています。
APN設定はapns.xmlが優先でapns-conf.xmlが後記された形になります。
これだとやっぱりandgobalが先頭に来てワイプ時に接続されてしまうので
apns.xmlの中身をこんな風に削除しました。



EU版のframwork-res.apkを置いておきますので欲しい人はどうぞ。
やっぱりパスはsensation。
他のリージョン版だと多分起動しなくなったりしますのでapk managerを使って作ってみてください。
APNの設定で「初期設定にリセット」を行なうと変更が反映されます。



これだけだと面白くないのでついでにsipの3G接続設定もやってしまいます。
sipというのはAndroidに標準で搭載されたIP電話機能で、sip phone同士は無料で通話できます。
かの大震災で携帯電話が全然繋がらなかった時にsipでは余裕で連絡が取れたと言う優れた機能です。
しかし、ディフォルトではWifi経由での通話しか出来ず余り意味がありません。
そこを解除して3G経由でも使える様にします。




上記同様にframwork-res.apkの中の/framwork-res/res/values/bools.xmlに設定があります。



こんな風にtrueの所をfalseに変更してやればOK。繋がりましたね。



上のダウンロード出来る物にはこの設定も入れてあります。

では良いAndloidライフを。