Beagle Board xMでAndroidを動かす(ソースコードビルド編)


「Beagle Board xMでAndroidを動かす(ビルド済イメージ編)」ではテキサス・インスツルメンツ社(以下TI)が公開しているAndroidのビルド済みイメージを使ってBeagleBoard xM上でAndroidを動作させる手順について紹介しました。今回はソースコードからビルドしたAndroidをBeagleBoard xM上で動作させる方法について紹介します。自由に改造したソースコードをビルドして、それをBeagleBoard xM上で動かすことができるので、自分で取り付けたデバイスをAndroidで使うことも可能です。

TI Android Gingerbread Devkit 1.0

今回はBeagleBoard xMの開発元であるTIが提供している “TI Android Gingerbread Devkit 1.0” をビルドします。TIが推進するAndroidプロジェクトであるため、BeagleBoard xMも正式にサポートしています。

詳細は続きからどうぞ。

ソースコードのダウンロード

それでは早速ソースコードをダウンロードしましょう。
repoコマンドを使ってソースコードをダウンロードします。
(repoコマンドについては「Androidのソースコードを入手する」で解説しています)

ソースコードのダウンロードには非常に時間がかかりますので注意してください。

(ホームディレクトリにAndroidソースコードを保存するディレクトリを作成)
# export ANDROID=~/ti_android_devkit
# mkdir $ANDROID
# cd $ANDROID

(ソースコードをgitサーバからダウンロードする)
# repo init -u git://gitorious.org/rowboat/manifest.git ¥
-m TI-Android-GingerBread-2.3-DevKit-1.0.xml
# repo sync

カーネルのビルド

ソースコードのダウンロードが完了したらカーネルをビルドします。

(カーネルの格納ディレクトリに移動)
# cd $ANDROID/kernel

(BeagleBoard用のカーネル設定情報を適用)
# make ARCH=arm ¥
CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- ¥
omap3_beagle_android_defconfig

(uImageを作成する)
# make ARCH=arm ¥
CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- ¥
uImage

ルートファイルシステムのビルド

続いてルートファイルシステムのビルドを行います。

(ソースコードツリーのトップに移動し、ビルドを開始する)
# cd $ANDROID
# make TARGET_PRODUCT=beagleboard OMAPES=5.x

ルートファイルシステムのビルドも時間がかかりますが、マルチコアのCPUをお使いの場合は-jオプションを使用することで、ビルド時間を短縮することができます。

# make -j4 TARGET_PRODUCT=beagleboard OMAPES=5.x (コア数を4に指定)

Androidファイルシステムのコピー

ビルドが完了したら必要なファイルを一纏めにしておきます。

# cd $ANDROID/out/target/product/beagleboard/
# mkdir rootfs
# cp -a root/* ./rootfs/ (Androidのルートファイルシステムをコピー)
# cp -a system/* ./rootfs/system/ (systemファイル群をコピー)

ブート用SDカードの作成

ブート用SDカードのパーティション設定のために、「Beagle Board xMでAndroidを動かす(ビルド済イメージ編)」で紹介したmkmmc-android.shを使用します。
mkmmc-android.shを使用するとパーティションの設定やビルド済イメージのコピーまでを自動で行ってくれます。
一旦、mkmmc-android.shでビルド済AndroidのブートSDカードを生成してから、自分でビルドしたAndroidファイルと差し替えることで、自前のAndroidがブートするSDカードを作成します。

(Prebuiltイメージをダウンロード)
# wget http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/
02_02_00/exports/beagleboard-xm.tar.gz

# tar zxf beagleboard-xm.tar.gz
# cd beagleboard-xm/

(英語ロケールに変更)
# export LANG=C

(mkmmc-android.shを実行。SDカードのデバイスファイル(今回の例では/dev/sdb)のパスを指定する)
# sudo ./mkmmc-android.sh /dev/sdb

最後にSDカードに自分でビルドしたAndroidのバイナリファイルをコピーすれば完了です。

# cd $ANDROID/out/target/product/beagleboard/
# rm -fr /media/rootfs (rootfsが格納されているマウントポイント)
# sudo cp –fr rootfs/* /media/ (rootfsのファイル群をコピー)
# sync (SDカードの同期)
# umount /media/ (アンマウント)

作成したSDカードでブート

作成したSDカードをBeagle Board xMにセットして電源を入れます。
初回起動時は立ち上がるまでに時間がかかる場合がありますので注意してください。