が変なところで躓きました。
以下は流れを追いながら。
1. 環境変数の設定
$ export ANDROID=/home/sola/android/armadillo440-droid
2. Android ソースコードのダウンロード
$ mkdir -p $ANDROID
$ cd $ANDROID
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.1_r2
$ repo sync
ダウンロード完了まで待つ。
3. Armadillo-440 用の変更ファイル、追加ファイルを適用する
$ wget http://android-development-environment.googlecode.com/files/vendor_sola-armadillo440-android2.1_v1.tar.gz
$ tar zxvf vendor_sola-armadillo440-android2.1_v1.tar.gz -C $ANDROID/vendor/
$ $ANDROID/vendor/sola/a440/patch/armadillo440-patch.sh
kernel のビルドを行う箇所で躓きました。
4. kernel をビルドする
$ cd $ANDROID
$ wget http://armadillo.atmark-techno.com/files/downloads/misc/android/linux-2.6.26-at7-android-20100409.tar.gz
$ tar zxvf linux-2.6.26-at7-android-20100409.tar.gz
$ cd linux-2.6.26-at-android
$ wget http://android-development-environment.googlecode.com/files/armadillo400_android_defconfig
$ mv armadillo400_android_defconfig arch/arm/configs/
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- armadillo400_android_defconfig
ここまでは順調にできたのですが以下でエラーになります。
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc がないと言われます。そんなはずはないんですが。。確認すればあります。絶対パスで指定してもダメ。
試行錯誤している途中にあることに気づきます。
こんな現象。
--------------------
% ls /home/user1
hoge1/ hoge2/ bin/ aaa bbb ccc
% /home/user1
bash: /home/user1: はディレクトリです
% ls /home/user1/bin/hoge
-rwxrwxrwx 1 user1 staff 20K Oct 24 2004 bin/hoge
% /home/user1/bin/hoge
bash: /home/user1/bin/hoge: No such file or directory
--------------------
ls コマンドでは存在するのに実行しようとするとファイルが存在しないと言われます。意味がわかりません。ここはかなり悩みました。
実は、このtar.gz 固められていたファイル群は32bit でしか動かないものだったようです。64bitマシンでも大丈夫だと思ってたのですが。。。Ubuntu環境を作ってたのですがその際にUbuntu9.04 64bit のOSを使ってたのです。まさかのOS再インストール。32bit で入れ直したところ無事動きました。
解決後は、以下の作業に続きます。
$ gzip -c arch/arm/boot/Image > linux.bin.gz
5. Android をビルドする
$ cd $ANDROID
$ echo "TARGET_PRODUCT:=a440" > buildspec.mk
$ make -j2
6. Armadillo-440 にのせるイメージを作成する
$ cd $ANDROID
$ $ANDROID/vendor/sola/a440/image/armadillo440-image.sh
$ANDROID/vendor/sola/a440/image/android
が作成される。
これを、ブート用の SD か USB メモリにコピーする。
以下は、まだやっていません。これからです。ここまできてるのに!
7. Armadillo-440 で Android を起動する
kernel の書き込み。
以下は操作例。
Linux PC で hermit を使用することを想定。
$ sudo hermit download --input-file $ANDROID/linux-2.6.26-at-android/linux.bin.gz --region kernel --port /dev/ttyUSB0
ユーザランドの展開。
以下は操作例。SD カードを /mnt/sdcard にマウントした場合。
$ sudo cp -a $ANDROID/vendor/sola/a440/image/android/* -C /mnt/sdcard/
hermit のブートパラメータ変更。
chroot による起動だと時間がかかるため、直接 Android を起動させる。
hermit> setenv console=ttymxc1 root=/dev/mmcblk0p2 init=/init noinitrd rootwait