DELL Streakをroot化してやったこと(1)

root化が済んで、ぐりぐりいじり倒しているので、実際に弄った部分について何回かに分けてエントリしてみようと思います。
まず最初にやったのは、「組み込みLinuxの十徳ナイフ」と名高いbusyboxを使えるようにする作業だったんですが……。
普通なら、まずbusyboxのバイナリを探してダウンロードして来ようか、って話になるのですが、今回は必要ありません。何故ならDELL Streakでは、標準のROMに最初からbusyboxが含まれているからです。
ずっと前からなのか、今回のビルド17957で加わったのかは判りませんが、/system/binディレクトリの中にしっかりと入っています。

$ ls -l /system/bin/busybox*
-rwxr-xr-x root     shell     1745016 2011-02-21 15:19 busybox_1P8P1

ファイル名から判るようにバージョンは1.8.1で、最新の安定版1.18.5に比べてやや古い感じがしますが、せっかく入っているので*1これを利用します。ということでおもむろにTerminal Emulatorを開いて、バキバキとコマンドを打っていきます。
ADBシェルを使う場合でも同様にコマンドを入力します。コマンドプロンプトからadb -d shellと打ってシェルに入れば、あとは全く同じです。やはり慣れたPCのほうがキー操作がしやすいでしょうし、DELL Streakでやるよりも楽かもしれません。ただ、suコマンドを打った後に、DELL Streak側で出る[Superuserリクエスト]のダイアログで許可を出すのを忘れないように。

$ su
# mkdir /data/busybox/
# cd /data/busybox
# ln -s /system/bin/busybox_1P8P1 ./busybox
# ./busybox --install -s ./
# rm ./su
# exit 
$ 

これでOK。/data/busyboxディレクトリにパスを通せば、busyboxでサポートされているコマンド群が使えるようになります。
ちなみに --installは内蔵しているコマンド群のシンボリックリンクを作成するオプション、-sはその作成場所を指定するオプションです。全てのコマンドを入力し終わった後にls /data/busyboxとしてみれば、コマンドの実行ファイル(のように見えるシンボリックリンク)がたくさん作成されているのが判ると思います。
インストール先を/data/busyboxにしたのは、WEBで徘徊していたときに見かけることが多かったのと、下手に書き換えたら危険なsystem領域にインストールするよりは、data領域の方がマシだろうと思ったからです。data領域内なら、rootさえ取れていれば、system領域への書き込みが許可されていなくても設定が出来ますし。
なお、最後にsuを削除しているのは、busyboxに内蔵のsuコマンドがAndroid環境では正常に動作しないので、/system/binディレクトリ内にある本来のsuコマンドと競合しないようにするためです。su以外にも競合するコマンドがいくつかあるので、パスを通すときにも、出来るなら/data/busyboxはパスの最後に追加するのがオススメです。
私が使っているAndroid Terminal Emulatorの場合、起動時に実行する初期コマンドを設定できるので、そこで設定してあります。設定するコマンドはこんな感じです。

export PATH=$PATH:/data/busybox

見たまま、パスの最後に /data/busyboxディレクトリを加えているだけです。標準では/data/local/binをパスの先頭に追加するコマンドが入力されていますが、DELL Streakには/data/local/binは存在しないので、気にせず上書きしちゃいましょう。
ADBシェルから使うときにも、このパス設定は必要です。ただし保存されないので、起動するたびに毎回入力しないといけませんが……。
また、アプリによってはbusyboxのパスの指定が必要な場合がありますが、その場合はパスとしての/data/busyboxか、ファイル名まで込みの/data/busybox/busyboxでいけるはずです。もちろん、あえて/system/binや/system/bin/busybox_1P8P1を指定するのもアリですが(^^;)。

*1:何と言ってもストレージの容量を食わないのが利点ですし、この手のツールはバージョン毎の差異が小さく、セキュリティパッチを除けば、多少古くても余り影響が無いので。