Android Dev Phone 1のLinuxコンソールで遊んでみた

adb shell を知ったので、軽く遊んでみました。やたら長い実況形式のエントリはこちら 2008-12-19 - Android Dev Phone1 であそぶメモ - android-dev で、あまりに長いので、まとめました。

$ adb shell 便利

  • MacなどからUSB経由で実機のLinuxコンソールにアクセスできる。toolboxが入ってるので、そこそこのコマンド(lsやpsなどなど)が使えてるけど、busybox入れると使い慣れたコマンドが使えて便利。
  • $ adb push hoge /fuga で、Macなどの hoge ファイルを /fuga/hoge に転送できる

Dev Phone 1 のハードウエア

  • CPU: 384MHz ? ARMv6-compatible processor Features: swp half thumb fastmult edsp java
    • iPhoneは412MHzなのでちょっと遅い。型番的にも下位モデルっぽい。
  • OSが認識したメモリ: 101MB
    • iPhoneよりすくないかも
  • 内蔵Flashの空容量 以下のようになかなかカツカツ
$ df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/block/mtdblock3     67.5M     50.1M     17.4M  74% /system
/dev/block/mtdblock5     74.8M     57.6M     17.1M  77% /data
/dev/block/mtdblock4     67.5M      1.3M     66.2M   2% /cache

GCCでCのコードをcross complieして、そのまま実機のLinux上で動かせる

  • Debian (Lenny)で Embedded Debianを使い、static link にした実行形式(ELF)を実機に転送すれば、そのまま動く
  • busybox, Ruby1.8が動いた。
  • framebufferへのアクセス方法は(僕が)まだ分ってないので、画面に直接出力とかはまだできてない
  • configureでは --target=arm-linux --host=arm-linux とかやる
  • configure: error: cannot check setpgrp when cross compiling とか出た場合は環境変数で ac_cv_func_setpgrp_void=yes とかやる

その他

  • suはパスワード無しでできる
  • chown コマンドない
  • ls -la とかできない。ls -l
  • SD card (/sdcard) 上ではどうやっても chmod +x できない。おそらくFSが +xサポートしてないため?
    • そのため、実行形式のファイルは、他のディレクトリに置く必要がある。とりあえず /data とかに置いた。
  • adb pushした時のファイルの所有ユーザーはshellになる
  • uname -a : Linux localhost 2.6.25-01843-gfea26b0 #6 PREEMPT Mon Oct 6 14:13:36 PDT 2008 armv6l unknown

ちなみに android-dev.g という、Android開発者向け(もちろん普通のAndroid Marketアプリの方も含め)はてなグループ作ったので、ご興味のある方是非ご加入くださいませ。