Armadillo-440 液晶モデルで Android を簡単に試す方法を紹介します。動作させる手順は下記のようになります。
本 Howto で動作させる Android のバージョンは 2.0.1 です。
microSD カードのパーティションを二つに分割し、片方をデータ保存領域として、もう片方を Android ユーザーランドの保存領域として使用します。 データ保存領域には 100MB を割り当て、VFAT ファイルシステムでフォーマットします。 Android ユーザーランド領域には残りの容量を割り当て、ext3 ファイルシステムでフォーマットします。
microSD カードは 1GB 程度以上の容量のものを使用してください。
まずはfdiskコマンドを利用してパーティションを作成します。
Armadillo-440 の標準カーネルと標準ユーザーランドで起動して、以下のようにコマンドを実行してください。
[armadillo ~]# fdisk /dev/mmcblk0
The number of cylinders for this disk is set to 30656.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
まずは、既存のパーティションを全て削除します。
Command (m for help): d
Selected partition 1
次にパーティションを作成します。
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-30656, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-30656, default 30656): +100M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (3054-30656, default 3054):
Using default value 3054
Last cylinder or +size or +sizeM or +sizeK (3054-30656, default 30656):
Using default value 30656
最後に、パーティションの変更を microSD に書き込みます。
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
mmcblk0: p1 p2
mmcblk0: p1 p2
Syncing disks.
続いて、作成したパーティンションにファイルシステムを作成します。
まず、パーティション1(データ保存領域) を VFAT ファイルシステムでフォーマットします。
[armadillo ~]# mkdosfs /dev/mmcblk0p1
次に、パーティション2(Android ユーザーランド領域) を ext3 ファイルシステムでフォーマットします。
[armadillo ~]# mke2fs -j /dev/mmcblk0p2
パーティション1(データ保存領域)をマウントします。
[armadillo ~]# mount -t vfat /dev/mmcblk0p1 /mnt/
/mnt ディレクトリに、mp3 などのオーディオファイルをコピーしてください。
ファイルのコピーが完了したら、/mnt ディレクトリをアンマウントします。
[armadillo ~]# umount /mnt
パーティション2(Android ユーザーランド領域)をマウントします。
[armadillo ~]# mount /dev/mmcblk0p2 /mnt/
そして、マウントしたディレクトリに移動してから、Androidユーザランドのアーカイブをダウンロードします。
[armadillo ~]# cd /mnt/
[armadillo /mnt]# wget http://armadillo.atmark-techno.com/files/downloads/misc/android/android-2.0.1-a440-20100409.tar.gz
ダウンロードしたアーカイブを展開します。
[armadillo /mnt]# tar xzf android-2.0.1-a440-20100409.tar.gz
[armadillo /mnt]# ls
android/ lost+found/
android-2.0.1-a440-20100409.tar.gz
[armadillo /mnt]# cd
[armadillo ~]#
Android に対応しているカーネルをダウンロードして、フラッシュメモリに書き込みます。Armadillo-440に接続している LCD拡張ボードのリビジョンによって、適切なカーネルイメージが異なりますので、ファイル名は適宜読み替えてください。romfs ユーザーランドは標準のままで構いません。
[armadillo ~]# netflash -nkusr /dev/flash/kernel http://armadillo.atmark-techno.com/files/downloads/misc/android/linux-a400-android-20110419b.bin.gz
上記コマンドを実行すると、リブートします。リブート後は Android 対応カーネルが動作しています。
手動でコマンドを実行して、Android を起動してみます。
まず、Armadillo-440 液晶モデルの標準ユーザーランドでは Xfbdev が起動しているので、Android を起動する前に終了しておきます。
[armadillo ~]# killall Xfbdev
次に、microSD カードのパーティション2(Android ユーザーランド領域) を /mnt ディレクトリにマウントします。
[armadillo ~]# mount /dev/mmcblk0p2 /mnt/
最後に chroot コマンドを利用して Android の環境に入って起動します。起動ロゴが表示されてから、Android のホームスクリーンが立ち上がります。
[armadillo ~]# chroot /mnt/android /init
次のように /etc/config/rc.local を編集することで Android が自動的に起動するようにできます。
[armadillo ~]# vi /etc/config/rc.local
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
killall Xfbdev
mount /dev/mmcblk0p2 /mnt/
chroot /mnt/android /init
編集したあと、実行権限を付けて flatfsd コマンドでファイルを保存します。
[armadillo ~]# chmod +x /etc/config/rc.local
[armadillo ~]# flatfsd -s
次回起動時から、Android が自動で起動するようになります。
v20100409では、以下のデバイスを使用することができます。
有線LAN
オーディオ
microSD カード
また、パワーマネジメント機能が有効になっており、スクリーンブランク時にスリープモードに移行します。
v20100409では、以下の問題点があります。
スリープ後にオーディオ機能が使用できなくなる
スリープからの復帰後に、オーディオ機能が使用できなくなります。スクリーンブランクしないようにするには、「Settings」->「Sound & display」->「Screen timeout」を開き、”Never timeout” を選択してください。
Web ブラウザからファイルをダウンロードすることができない
Web ブラウザからファイルをダウンロードして、microSD カードのデータ保存領域に書き込むことができません。オーディオファイルなどは、事前に microSD カードのデータ保存領域に保存してください。
本 Howto で使用した Linux カーネルイメージを生成するためのソースコードアーカイブは以下から入手することができます。
Android対応Linuxカーネルソースコードアーカイブ(LCD拡張ボード リビジョンA用) (ver 20110419)
Android対応Linuxカーネルソースコードアーカイブ(LCD拡張ボード リビジョンB用) (ver 20110419)
ソースコードアーカイブからイメージをビルドするには、作業用 PC で以下のようにコマンドを実行します。
LCD拡張ボード リビジョンAを使用している場合
[PC ~]$ tar xzvf linux-2.6.26-at14-android-20110419a.tar.gz
[PC ~]$ cd linux-2.6.26-at-android/
[PC ~]$ make armadillo400_android_defconfig
[PC ~]$ make CROSS_COMPILE=arm-linux-gnueabi-
[PC ~]$ gzip -c arch/arm/boot/Image > linux.bin.gz
LCD拡張ボード リビジョンBを使用している場合
[PC ~]$ tar xzvf linux-2.6.26-at14-android-20110419b.tar.gz
[PC ~]$ cd linux-2.6.26-at-android/
[PC ~]$ make armadillo400_android_defconfig
[PC ~]$ make CROSS_COMPILE=arm-linux-gnueabi-
[PC ~]$ gzip -c arch/arm/boot/Image > linux.bin.gz
linux.bin.gz がカーネルイメージです。
標準カーネルとの差分は、以下から取得できます。変更点の確認などにご利用ください。
Armadillo-440用標準Linuxカーネル(linux-2.6.26-at14)とAndroid対応Linuxカーネル(LCD拡張ボード リビジョンA用)との差分 (ver 20110419)
Android対応Linuxカーネル(LCD拡張ボード リビジョンA用)とAndroid対応Linuxカーネル(LCD拡張ボード リビジョンB用)の差分 (ver 20110419)
LCD拡張ボードのリビジョン判別方法及び、エラッタの詳細はArmadillo-400シリーズリビジョン情報をご参照ください。 ↩