Howto

Armadillo-440 で Android を使ってみる

Armadillo-440 液晶モデルで Android を簡単に試す方法を紹介します。動作させる手順は下記のようになります。

  1. microSD を初期化する
  2. オーディオファイルを microSD にコピーする
  3. Anrdoid ユーザーランドを microSD にコピーする
  4. カーネルを書き換える
  5. Anrdoid を起動する
  6. Android を自動的に起動させる

本 Howto で動作させる Android のバージョンは 2.0.1 です。

1. microSD を初期化する

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

2. オーディオファイルを microSD にコピーする

パーティション1(データ保存領域)をマウントします。

[armadillo ~]# mount -t vfat /dev/mmcblk0p1 /mnt/

/mnt ディレクトリに、mp3 などのオーディオファイルをコピーしてください。

ファイルのコピーが完了したら、/mnt ディレクトリをアンマウントします。

[armadillo ~]# umount /mnt

3. Anrdoid ユーザーランドを microSD にコピーする

パーティション2(Android ユーザーランド領域)をマウントします。

[armadillo ~]# mount /dev/mmcblk0p2 /mnt/

そして、マウントしたディレクトリに移動してから、Androidユーザランドのアーカイブをダウンロードします。

[armadillo ~]# cd /mnt/
[armadillo /mnt]# wget https://download.atmark-techno.com/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 ~]#

4. カーネルを書き換える

Android に対応しているカーネルをダウンロードして、フラッシュメモリに書き込みます。Armadillo-440に接続している LCD拡張ボードのリビジョンによって、適切なカーネルイメージが異なりますので、ファイル名は適宜読み替えてください。romfs ユーザーランドは標準のままで構いません。

[armadillo ~]# netflash -nkusr /dev/flash/kernel https://download.atmark-techno.com/misc/android/linux-a400-android-20110419b.bin.gz

上記コマンドを実行すると、リブートします。リブート後は Android 対応カーネルが動作しています。

5. Anrdoidを起動する

手動でコマンドを実行して、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

6. Android を自動的に起動させる

次のように /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では、以下のデバイスを使用することができます。

  1. 有線LAN

  2. オーディオ

  3. microSD カード

また、パワーマネジメント機能が有効になっており、スクリーンブランク時にスリープモードに移行します。

既知の問題点

v20100409では、以下の問題点があります。

  1. スリープ後にオーディオ機能が使用できなくなる

    スリープからの復帰後に、オーディオ機能が使用できなくなります。スクリーンブランクしないようにするには、「Settings」->「Sound & display」->「Screen timeout」を開き、"Never timeout" を選択してください。

  2. Web ブラウザからファイルをダウンロードすることができない

    Web ブラウザからファイルをダウンロードして、microSD カードのデータ保存領域に書き込むことができません。オーディオファイルなどは、事前に microSD カードのデータ保存領域に保存してください。

Appendix 1: カーネルイメージのビルド

ソースコードアーカイブからイメージをビルドするには、作業用 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 がカーネルイメージです。