ターゲットはAndroid 2.3.4です。
先に結果を書いてしまうと、なんとビルド時間10分以下でした。
基本的には"TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide"の手順になります。
"TI_Android_DevKit TI_Android_GingerBread_2_3_4_DevKit_2_1 Product Download Page"からTI_Android_GingerBread_2_3_4Sources.tar.gzをダウンロードします。
これ、約4GBありますのでダウンロードには相当時間かかります。
これ、約4GBありますのでダウンロードには相当時間かかります。
今回は、前もってさくらのクラウドに別に仮想1コアのサーバ(126円/日)を用意して、ダウンロードしておいたのを仮想12コアの方にコピーしました。
TIのサイトからのダウンロードは100~200kByte/secぐらいで、数時間かかりました。
さくらのクラウド同士でのコピー(scp -c blowfishでコピーしました)は約9MByte/secぐらいで、10分かからないです。
ソースをRAMディスクに展開します。
cd /ramdiskディレクトリ名が長いのでリネームします(単純に好みの問題です)。
tar xfz ~/TI_Android_GingerBread_2_3_4Sources.tar.gz
mv TI_Android_GingerBread_2_3_4Sources GingerBread展開されたgitのローカルリポジトリからチェックアウト(?)します。
cd GingerBread環境変数の調整等をします。実際には~/.bashrcに書いたりしました。
./.repo/repo/repo sync --local-only
export LANG=CCCACHEの設定をします。通常は~/.ccahe/が使われますが、RAMディスクを使うようにしています。
export PATH=/ramdisk/GingerBread/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
export USE_CCACHE=1ビルド用のシェルスクリプトを準備します。ビルド時間を測りたかったのと、リモートログインの都合上、ビルド中のメッセージ表示を抑制するためです。
export CCACHE_DIR=/ramdisk/ccache
mkdir -p /ramdisk/ccache
#!/bin/shmakeに-j 24を指定しています。これは最大24並列でプロセスを実行させるということです。
time > log
make TARGET_PRODUCT=beagleboard OMAPES=5.x -j 24 >> log 2>%1
time >> log
勉強会参加の他の方から「コア数の倍ぐらいがいいらしい」というので仮想12コア→-j 24としました。
ビルド実行します。/ramdisk/GingerBread/で先ほどのシェルスクリプトを実行します。
これで、AndroidのFileSystem、Linux kernel、SGX用カーネルモジュール、それぞれのビルドが一気に行われます。
結果です。ログの先頭と終端の抜粋です。
Sat Feb 11 12:47:14 JST 2012
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.4
TARGET_PRODUCT=beagleboard
……(中略)……
binary texture_benchmark -> /system/bin/texture_benchmark
Installation complete!
make[1]: Leaving directory `/ramdisk/GingerBread/hardware/ti/sgx'
Sat Feb 11 12:56:47 JST 2012
12:47:14に開始して12:56:47に完了しています。
数十分ぐらいかかるかと思いきや9分33秒でビルド完了です。
速いです。
この後は、ビルド結果を手元にダウンロードして動作確認します。
ダウンロード用にファイルを準備します。
make fs_tarballダウンロードすべきファイルは以下2つのファイルです。合計で約43MByteです。
/ramdisk/GingerBread/out/target/product/beagleboard/rootfs.tar.bz2
/ramdisk/GingerBread/kernel/arch/arm/boot/uImage
あとは手元のLinuxでの作業です。
BeagleBoard-xM用のPrebuiltイメージを使います。
tar xvfz beagleboard-xm.tar.gz
cd beagleboard-xm
rm Filesystem/rootfs_beagle_xm.tar.bz2
ダウンロードしたuImageをbeagleboard-xm/Boot_Images/にコピーします。
ダウンロードしたrootfs.tar.bz2をbeagleboard-xm/Filesystem/にコピーします。
sudo ./mkmmc-android.sh /dev/sdb (要注意)
最後の/dev/sdbは環境によって/dev/sdcだったり/dev/sddだったりします。
0 件のコメント:
コメントを投稿