2009年5月16日土曜日

Android Linux 2.6.29 for BeagleBoard

EMBINUXで公開されているAndroidのカーネルではHDMI端子に接続したBRAVIAに画面表示することができなかった。DSS2を使えばHDMIから画面表示できることは事前に確認できていたので,ディスプレイドライバにDSS2を使ったBeagle Board用Androidカーネルをビルドすることにする。以下はその手順。

1.  Androidの取得
repo init & sync で Android の master branch をダウンロードする。

2. Android patch の作成
Linux 2.6.29に対してのAndroid修正分の差分patchを作成する。gitを使ってtag 2.6.29とandroid-2.6.29ブランチの差分をとる。
$ cd mydroid/kernel
$ git diff 2.6.29 android-2.6.29 > android_diff-2.6.29.patch

3. Beagle Board用Linuxの取得
 linux-omapのmaster branchを持ってきて,tag  2.6.29-omap を checkoutする。
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git linux-omap-2.6
$ cd linux-omap-2.6
$ git checkout -b beagle_android-2.6.29 2.6.29-omap

4. DSS2パッチの適用
2.6.29に対するDSS2パッチをrcn-ee.comより取得・適用する。
$ wget http://www.rcn-ee.com/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer33/v2.6.29-58cf2f1-oer33.diff
$ patch -p1 < v2.6.29-58cf2f1-oer33.diff

5. Android パッチの適用
2.6.29に対するAndroid修正分のパッチを適用する。
$ patch -p1 < android_diff-2.6.29.patch

reject された部分を手で修正(2ファイル)

6. Kernel Build
dss_omap3_beagle_defconfigを元に,menuconfig で Android に必要なカーネルオプションを有効にしてカーネルをビルドする。
$ make ARCH=arm dss_omap3_beagle_defconfig
$ make ARCH=arm menuconfig
$ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage

7. Androidのビルド
EMBINUXからAndroidをrepo syncしてmakeする。
あとは,BeagleboardUbuntuに従って用意したUbuntu環境にuImageとAndroidを組み合わせればOK

8. その他
* キーボードが効かなかったが,/system/usr/{keylayout,keychars}/のファイルを chmod 666 することで解決。感謝>Android Zaurus

0 件のコメント: