2010年07月29日

QEMUでAndroidのポーティングの練習

以前ARMのQEMUでDebianを動かすのを紹介しました。今回は同じような方法でAndroidを動かしてみます。

なぜこんなことをしてみたのかというと、それはAndroidのポーティングの練習になると思ったからです。標準の(素の)QEMUには仮想ボードとしてARMのversatileボードがサポートされています。つまり、versatileボードにAndroidのポーティングをしてみます。



開発マシンにはUbuntu 9.04(x86-64)を使用しています。

QEMUのビルド

このページを参考にしてください。今回は最新の0.12.5を使用しました。

$ sudo apt-get install libsdl1.2-dev
$ tar xvf qemu-0.12.5.tar.gz 
$ mkdir obj
$ cd obj
$ ../qemu-0.12.5/configure --target-list=arm-softmmu
$ make -j4

Linuxカーネルのダウンロード

Androidのソースリポジトリからカーネルのソースを持ってきます。今回は最新のandroid-2.6.35ブランチを使用しました。

$ git clone git://android.git.kernel.org/kernel/common.git
$ cd common
$ git checkout -b android-2.6.35-versatilepb origin/android-2.6.35

Linuxカーネルのビルド

$ export ARCH=arm
$ export CROSS_COMPILE=$ANDROID_TOP/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
$ make versatile_defconfig
$ make menuconfig

まずversatile用にコンフィグを行い、それにDocumentation/android.txtを見て、必要なカーネルのコンフィグを追加していきます。また、NFSから起動するためのコンフィグはこのページを参考にしてください。

$ make

Androidのビルド

このページにしたがって、Androidのソースをダウンロードしてパッチを当てます。ただしarmv7ではQEMUがうまく動かないのでarmv5te-vfpでビルドします。

$ export TARGET_ARCH_VARIANT=armv5te-vfp
$ export WITH_JIT=true
$ time make -j4 showcommands 2>&1 |tee make.log

このページにしたがってNFS用のルートファイルシステムを作ります。今回は /export/android/root-2.2_r1.1-armv5te-vfp-jit に置きました。

起動

QEMUをビルドしたディレクトリを $QEMU_WORK, NFSサーバのIPアドレスを192.168.xx.xx とすると

$ $QEMU_WORK/arm-softmmu/qemu-system-arm -M versatilepb -m 256 -serial stdio -kernel arch/arm/boot/zImage \
 -append "root=/dev/nfs rw nfsroot=192.168.xx.xx:/export/android/root-2.2_r1.1-armv5te-vfp-jit ip=dhcp rootwait init=/init console=ttyAMA0"

色がおかしいですが、起動しました。色がおかしい原因はフレームバッファの色数が仮想ボードとAndroidで食い違っているためだと思います。(いや、黒と白の部分は合っているのでrgbの順番が違うのかな?Debianを動かしたときには正しい色で表示されました。)

qemu_android1

qemu_android2

qemu_android3









F1がmenuキーに割り当てられているので、F1でスクリーンをアンロックできます。

ブラウザも動いています。

ToDo

起動はしましたが、まだまだ足りないところがあります。

  • 表示の色がおかしい。
  • マウスカーソルが表示されないので不便。
  • 「戻る」ボタンが割り当てられていない。
  • 現在時刻が1970年1月1日になってしまう。
  • SDメモリカードは未確認。
  • オーディオは未確認。

このあたりを調べて直していくことで経験値を上げてみてください。Enjoy!



トラックバックURL

トラックバック一覧

1. クロス開発でのQEMU まとめ(基礎編)  [ KMC Staff Blog ]   2010年10月07日 16:01
ここまでのQEMUの記事のリンク集です。 なお、CELFテクニカルジャンボリーにて、時間をいただきましたので、このあたりについて話をさせていただきます。 (3月5日 中野サンプラザ 入場無料) よろしければご参加ください。

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード