2012年2月12日日曜日

pandaboard向けLinaro Androidをビルドしてみる

LinaroのHPよりDevelopersAndroidBuild the Source Codeのリンクを辿った場所にソースコードの入手、環境構築、ビルド手順が記載されています。

ここで最初に注意ですが、ビルド環境はUbuntu 10.10を使いました。(Ubuntu 10.04ではどうやらパッケージに不足があるらしく上手くビルドが通らず。めんどくさくなって断念)
Ubuntu 10.10であれば、まあ素直にビルドが通ります。(LinaroのビルドのページにあるようにUbuntu 11.10でもいいかもしれませんが、試してはいません。)

ではまず環境構築から。
AOSPのInitializing a Build Environmentを参考に必要なパッケージをインストールしていきます。
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc

10.10ですので一応、下記も実施。(エラーが出るようでしたら、ほっといてもOK。w)
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

JDK6のインストールも手順の通り
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

それからuboot-mkimageも必要だったと思います。(記憶によると)
$ sudo apt-get install uboot-mkimage

Linaroのビルド手順のページに戻りまして、
続いては、Androidのソースコードダウンロードツールであるrepoをインストールします。
$ mkdir ~/bin
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ export PATH=$HOME/bin:$PATH
$ chmod a+x ~/bin/repo
exportでパスを通していますが(以前にも書きましたが、)再起動後は~/binへのパスは勝手に読み込まれるので毎回やる必要性はありません。

repoコマンドを使ったソースツリーのダウンロードですが、{PRODUCT_MANIFEST}は指定せよとありますので、今回はやはり"tracking-panda.xml"としてみたいと思います。
$ mkdir ~/tracking-panda
$ cd ~/tracking-panda
$ repo init -u git://android.git.linaro.org/platform/manifest.git -b linaro_android_4.0.3 -m tracking-panda.xml
(名前とメールアドレスを入力します。)
$ repo sync
これでソースツリーのダウンロードが始まりますが、かなり時間(5時間程度)がかかります。時間帯によっては切断されてしまうこともありますが、途中経過を覚えていてくれるのでそういう場合はもう一度repo syncを実行します。
Androidだけではなく、Kernel、u-bootも一式ダウンロードされます。

続いてはlinaroのビルドツール(ツールチェイン)の入手です。(保存場所や展開場所に関してはご自由に。)
$ cd ~/tracking-panda/../
$ wget --no-check-certificate http://android-build.linaro.org/builds/~linaro-android/toolchain-4.6-2011.12/5/android-toolchain-eabi-linaro-4.6-2011.12-5-2011-12-12_14-40-40-linux-x86.tar.bz2
$ tar -jxvf android-toolchain-eabi-linaro-4.6-2011.12-5-2011-12-12_14-40-40-linux-x86.tar.bz2
※android-toolchain-eabiというディレクトリに展開されます

いよいよビルドですが、TARGET_PRODUCTは"pandaboard"を指定し、TARGET_TOOLS_PREFIXは先ほど展開したツールチェインのパスを、HOST_CCといったパラメータはUbuntu 11.10向けであるため必要なしで、下記のように実行します。(並列化のための-jオプションはお好みで)
$ cd ~/tracking-panda/
$ make -j4 TARGET_PRODUCT=pandaboard TARGET_TOOLS_PREFIX=../android-toolchain-eabi/bin/arm-linux-androideabi- boottarball systemtarball userdatatarball
大体1時間ぐらいでしょうか。(VMware上で4コア、メモリ4GBで実施して)
ビルド結果は、out/target/product/pandaboard以下に "boot.tar.bz2"、"system.tar.bz2"、"userdata.tar.bz2"が出来上がります。

ビルドしたイメージのSDカードへの書き込み方法ですが、これは前回の手順と一緒です。
linaro-image-toolsをインストールしておいて、ビルド結果が格納されているディレクトリで下記コマンドを実施。
$ cd ~/tracking-panda/out/target/product/pandaboard
$ sudo linaro-android-media-create --mmc /dev/sdb --dev panda --system system.tar.bz2 --boot boot.tar.bz2 --userdata userdata.tar.bz2
※/dev/sdbの部分は認識されているSDカードのデバイスファイル名にあわせて変更すること

やはりプロプライエタリなライブラリは、下記コマンドで後入れします。
$ wget http://releases.linaro.org/12.01/android/images/landing-panda/install-binaries.sh
$ chmod a+x install-binaries.sh
$ ./install-binaries.sh /dev/sdb2
※/dev/sdbの部分はSDカードへの書き込みで使用したデバイスファイル名と合わせる

起動させてみますと、


はい。ちゃんと起動しましたね。(よかった、よかった。)

0 件のコメント:

コメントを投稿