Open Embedded Software Foundation 今村 謙之
日本Androidの会 出村 成和

BeagleBoardでビルドする

 では、BeagleBoard上での作業に移りましょう。今回は、一般的なBeagleBoardでAndroidを動かすための基本作業までを行います。実際の改造などは、次回以降に解説していきます。基本的な手順は、次のようになります。

(1)リポジトリからソースコードを取得
(2)カーネルのビルド(コンパイル)
(3)モジュールのビルド
(4)Android(ユーザーランド)のビルド
(5)カーネルとAndroidのセットアップ
(6)BeagleBoardのセットアップ

 まずは、GitHubリポジトリから、OESFのEmbedded Masterのソースコードを取得します*2。ローカルマシンのダウンロード先は、「/home/oesf/em1」として解説を進めます。

 Gitリポジトリからソースコードを取得するために「clone」コマンドを利用します*3

$ git clone git://github.com/OESF/
Embedded-Master-ARM -o EmbeddedMaster-1.0.0 
このマークで改行

 ダウンロードが終わったら、ビルドしたいところですが、その前に環境変数を一つ設定しておきます。これは、長いディレクトリ名を入力する手間を省くためのものです。

$ export ANDROID=/home/oesf/em1/Embedded-Master-ARM 

 さらに、BeagleBoard向けカーネルは、ブートローダーに「U-Boot」を利用するため、その「mkimage」をインストールします。mkimageは、通常のLinuxカーネルのビルドで作られる「zImage」や「bzImage」などをU-Boot用のフォーマットに変換するためのツールです。

$ sudo apt-get install uboot-mkimage 

 では、BeagleBoard向けカーネルのビルドを図3のように行います。

図3●BeagleBoard向けカーネルのビルド
[画像のクリックで拡大表示]

 ここでやっと、苦労して構築したクロスコンパイル環境が利用されています。具体的には、「ARCH」パラメータでクロスコンパイル先のCPUアーキテクチャを指定して、「CROSS_COMPILE」パラメータでクロスコンパイル関連ツールを指定しています。

 次に、必要なモジュールを、あるべき場所にコピーします。

$ cp drivers/net/wireless/rt2x00/*.ko $ANDROID/
vendor/ti/omap3beagle 

 通常のLinuxカーネルのビルドにおいて「make modules_install」に相当します。モジュールをインストールするものです。

 続いて、Android一式のビルドとなります。これは、Linuxでいえばユーザーランド部のビルドです。Linuxであればディストリビューションという形でビルド済みのものが提供されていますが、Androidでの開発の場合には、自分で準備する必要があります。

$ cd $ANDROID 
$ source ./build/envsetup.sh 
$ choosecombo 1 1 omap3beagle 3 
$ make 

 これは、先ほど「ANDROID」変数で設定したディレクトリに入り、ファイルをスクリプトとして読み込む「source」コマンドで、Androidのビルドに必要なシェルスクリプト「envsetup.sh」を利用可能にしています。次いで、envsetup.shの中にある「choosecombo」コマンドで、コンパイルに必要な環境変数を設定します。この環境変数は自分で選択し設定できます。ターゲットボードのCPUアーキテクチャやクロスコンパイル環境のホストマシンのOSなど各種あります。これらを使って「make」でビルドを実行します。

 これだけで、ビルドは終了となります。実際には、Androidならではのビルド手法により、ビルドされているのですが、それは次回に解説します。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら