からくりブログ

株式会社からくり社員のブログです

AndroidのOSをビルドしてみよう その2

こんにちは、前回はAndroidのOSをビルドしてみようでAndroid 4.2.2のビルドを失敗してしまいましたので、今回は失敗した原因の調査とビルドしたバイナリで起動確認を行おうと思います。

まずは TI-Android-JB-4.2.2-DevKit-4.1.1 DeveloperGuideに記載されている手順と実際に自分が行った手順を一つ一つ確認していきます。
手順を確認したところToolchainのPATHに差異がありました。
参考サイトには以下のPATHを通すように記載されていましたが

prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin

自分はビルド環境として用意したubuntuが64bitだったため以下のように書き換えていました。

prebuilts/gcc/linux-x86_64/arm/arm-eabi-4.6/bin

ここが問題なのでは?と思い参考サイトどおりに修正してビルドを再チャレンジしたところ、あっさりビルドが成功しました。
素人が余計な事をすると碌な結果にならないですね。。。

気を取り直して、次にブートスクリプトであるuEnv.txtを作成します。
テキストエディタを起動して以下の内容をuEnv.txtとして新規作成します。

bootargs=console=ttyO0,115200n8 androidboot.console=ttyO0 mem=512M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait init=/init ip=off
bootcmd=mmc rescan ; fatload mmc 0 81000000 uImage ; bootm 81000000
uenvcmd=boot

これで必要なものがそろいましたので生成されたバイナリで起動確認を行います。
前回の記事にちらっと書きましたが BeagleBone Blackで動作させようとしているので以前の記事の<a href=”https://www.kara-kuri.jp/blog/?p=804>マイコン初心者が BeagleBone で遊んでみよう という話 のようにバイナリをmicro SDに書き込む必要があります。
まずはインストールスクリプトのmkmmc-android.shを使用するための下準備を行います。
micro SDに書き込むroot filesystem のアーカイブを作成します。
作成には以下のコマンドを実行します。

$ cd TI_Android_JB_4.2.2_DevKit_4.1.1/out/target/product/beagleboneblack
$ mkdir android_rootfs
$ cp -r root/* android_rootfs
$ cp -r system android_rootfs
$ ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2

次は作成したバイナリをimage_folderにコピーします。

$ cd TI_Android_JB_4.2.2_DevKit_4.1.1
$ mkdir image_folder
$ cp uEnv.txt image_folder
$ cp kernel/arch/arm/boot/uImage image_folder
$ cp u-boot/u-boot.img image_folder
$ cp u-boot/MLO image_folder
$ cp out/target/product/beagleboneblack/rootfs.tar.bz2 image_folder
$ cp -r external/ti_android_utilities/Media_Clips image_folder
$ cp external/ti_android_utilities/make_distribution.sh image_folder

これで下準備完了です。
micro SDをPCに挿して以下のコマンドを実行するとイメージの書き込みができます。
#micro SDのマウント先は環境依存のため適宜確認が必要です

$ export LANG=C
$ sudo ./mkmmc-android.sh /dev/mmcblk0 MLO u-boot.img uImage uEnv.txt rootfs.tar.bz2 Media_Clips

スクリプトが正しく動作した場合はmicro SDのパーティションが4つできているはずです。

micro SDをBeagleBoneに挿して起動確認。
正常に起動できることを確認できました。

無事にビルドと動作確認ができましたので、次回はソースに手を加えて動作させてみたいと思います。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>