SSブログ

GingerBread 2.3.4のビルドの続きをやってみる [beagleboard]

前回はソースコードのダウンロードまでやったので,その続きをやってみる.

DevKitのダウンロード.ディレクトリはお好みで.
cd ~/
wget http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/TI_Android_GingerBread_2_3_4_DevKit_2_1/exports/TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz

ダウンロードしたら展開.
tar xzvf TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz

Tool chainにパスを通しておく.
export PATH=~/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

これも実際は.bash_profileに書いておく.

そしたらいよいよビルド作業開始.
まずx-loader.
cd ~/rowboat-android/x-loader/
make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- omap3beagle_config
make CROSS_COMPILE=arm-eabi-

これで,x-loader/下にx-load.binが生成される.
そしたらx-load.binからMLOファイルを生成する.
ちなみに,BeagleBoard-xMのブートシーケンスでは,bootromからx-loader(MLO)が起動され,そのあとu-bootが起動してからLinux(android)が起動するというようになっているようだ.
x-load.binからMLOを生成するにはsignGPというツールを使うのだが,こいつはさっきダウンロードしたDevKitに含まれてる.参考サイトの説明によれば,signGPはx-loaderディレクトリにコピーしろとあるので,コピーしてから実行する.最後にファイル名をMLOにしたら完了だ.
cd ~/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/signGP/
cp signGP ~/rowboat-android/x-loader/
cd ~/rowboat-android/x-loader/
./signGP ./x-load.bin 
mv x-load.bin.ift MLO


そしたら次はu-boot.
cd ~/rowboat-android/u-boot/
make CROSS_COMPILE=arm-eabi- distclean
make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_config
make ARCH=arm CROSS_COMPILE=arm-eabi- 

これで,u-boot/下にu-boot.binが生成される.

で,kernelのビルド.
cd ~/rowboat-android/kernel/
make ARCH=arm CROSS_COMPILE=arm-eabi- distclean
make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_android_defconfig
make ARCH=arm CROSS_COMPILE=arm-eabi- uImage

そこそこ時間がかかる.


そしたら,Android filesystemのビルド.
そのままビルドしようとするとエラーとワーニングが出るので,ちょっと対策.

まずエラー対策.
以下のファイルを修正する.
~/rowboat-android/frameworks/base/libs/utils/Android.mk
変更前:
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
変更後:(-fpermissiveを追加)
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive

次にワーニング対策.
以下のファイルを修正する.
~/rowboat-android/build/core/combo/HOST_linux-x86.mk
変更前:
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
変更後:(ーU_FORTIFY_SOURCEを追加)
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

で,ビルド.
cd ~/rowboat-android/
make TARGET_PRODUCT=beagleboard OMAPES=5.x -j2

最後の「-j2」ってところの数字はビルドするマシンの環境(プロセッサ数)によって変わる.参考サイトによればプロセッサ数の2倍の値にしろとあるので-j2とした(うちのビルドマシンは古いのでシングルプロセッサなのである...).

で,こいつはkernelのビルドよりもずっと時間がかかる.
気長に待ちましょう.

終わったら,root filesystemのtarballを作る.
cd ~/rowboat-android/out/target/product/beagleboard
mkdir android_rootfs
cp -r root/* android_rootfs
cp -r system android_rootfs
sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2


あとちょっと...
boot scriptを作成.
cd ~/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-bootscr

mkbootscrを編集.setenvのところを以下のように書き換える.
setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=off omap_vout.vid1_static_vrfb_alloc=y vram=8M omapfb.vram=0:8M'

書き換えて保存したら,
./mkbootscr

これでboot.scrができる.

SDカードの作成.
まず必要なものを1つのディレクトリに集める.
cd ~/rowboat-android
mkdir image_folder
cp kernel/arch/arm/boot/uImage image_folder/
cp u-boot/u-boot.bin image_folder/
cp x-loader/MLO image_folder/
cp ~/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-bootscr/boot.scr image_folder/
cp out/target/product/beagleboard/rootfs.tar.bz2 image_folder/
cp ~/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-mmc/mkmmc-android.sh image_folder/

そしたらSDカードに書き込み.
export LANG=C
cd image_folder
sudo ./mkmmc-android.sh /dev/sdb MLO u-boot.bin uImage boot.scr rootfs.tar.bz2

で,完了です.おつかれさまでした.

これで,BeagleBoard-xMにセットして電源ON!してやれば,Androidが起動するはずです.
nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。