Android用のユーザーランドの構築

今回はAndroid用のユーザーランドの構築方法を解説します。

ユーザーランドのファイル群はAndroidエミュレーターから吸い出したものを使用します。
他にも方法はありますが、比較的簡単だと思われる方法を紹介していきます。

NANDをext3でフォーマットする

ユーザーランド構築用にArmadillo-500のNANDをext3でフォーマットしておきます。
アットマークテクノさんの記事の"コンパクトフラッシュシステム構築"以下が参考になります。

  • フラッシュの消去
flash_eraseall /dev/mtd7
fdisk /dev/mtdblock7

linuxのプライマリパーティションを作成します。
※解説を単純化するためにswap領域等の設定はしません。

  • ext3でフォーマット
mke2fs -j /dev/mtdblock7
  • mount出来ることを確認
mount /dev/mtdblock7 /mnt

これでひとまずArmadillo側の準備ができました。

busyboxエミュレータに入れる

eabiでarm向けクロスコンパイルしたbusyboxを用意してエミュレータ上に配置します。
既にコンパイルしたものBennoさんのサイトにあるので、ありがたく使用させていただきます。
当然buildroot等でコンパイルしたものでも問題ありません。

Androidエミュレータの実行ファイルと同じ場所にbusyboxを置き、エミュレータを起動してから
以下のようにしてbusyboxエミュレータファイルシステム上に配置します。

adb push busybox ./

エミュレータからファイルを吸い出す

busybox経由でtarコマンドが使えるため、エミュレータ内部で圧縮して、圧縮後に取り出します。
エミュレータファイルシステムの空き容量があまり残っていないので、数回に分けるとよいでしょう。

  • 圧縮
adb shell ./busybox tar c -f /data.tar /data

※/data以下がdata.tarに圧縮されます。

  • 取り出し
adb pull /data.tar ./

※data.tarがエミュレータと同じ場所に取り出されます。

上記で取り出したファイルをひとつの圧縮ファイルにしておきます。

ArmadilloのNANDに展開

wgetで上記で作成した圧縮ファイルを取得して、NANDに展開します。
Webサーバーを立て、圧縮ファイルを置いておきます。
※ファイル名は仮に"android.tar.gz"としておきます。

  • android.tar.gzを取得して展開
mount /dev/mtdblock7 /mnt
cd /mnt
wget http://hoge/android.tar.gz
tar xvzf android.tar.gz

※"hoge"はWebサーバーのアドレス。
※SDカードが使えればSDカードから直接NAND上に展開してもOKです。

これで後はNANDをrootfsに設定してブートするようにすれば、いよいよAndroidの起動です。