母艦PCを用意する

普通のWindows PCを用意します。私はDELL VOSTRO 1500を使っています。レガシーポートのない機種なので、PlanexのURS-03 USB-シリアル変換ケーブルをあわせて使います。


それにしても、母艦って日本語的な使い方なんですかねえ。外国人に「mothership PC」といっても全く通じなかったかぐわしい思い出があります(普通にhost PCって言えよ>自分)


まずは通電するかどうかを確認しましょう。母艦PCとArmadillo-500をシリアルケーブルで接続し、仮想ターミナルで接続します。


仮想ターミナルソフトとして私はTeraTermを使っています。

シリアル通信設定でボー・レート115200、データ8bit、パリティNone、ストップ1bit、フロー制御noneであることを確認して接続します。下記のログインプロンプトが確認できればOKです。

armadillo500 login:


さて、起動時にブートローダにパラメータを渡すためには、JP1ジャンパにジャンパピンを刺して、Hermit-Atブートローダのプロンプトが出るようにしておく必要があります。


ジャンパピンをさしてリセットし、下記のコマンド入力プロンプトが出ればOKです。

armadillo500 login:Hermit-At v1.1.17 (Armadillo-500)
 compiled at 15:21:17, Apr  9 2008
hermit>

bと入力してやると、既定のNAND領域からカーネルとルートファイルシステムを読み込みブートし、先ほどと同様のログインプロンプトが出るはずです。

開発環境を準備する

アットマークテクノの準備する開発環境ATDEは、VMware上の仮想マシンとして準備されています。無料のVMware Playerで動作しますので、これらのソフトウェアをインストールします。


ダウンロード:WMware Player
ダウンロード:開発環境→ATDE(vmwareイメージ)


vmwareイメージはzipファイル形式になっているので、展開ツールで展開したのち、フォルダ内のatde2.vmxを開きます。


このような画面が立ち上がります。

カーネルのカスタマイズ

ここから先は、VMware Player内のGnome Terminal画面での作業となります。Atmark-distと呼ばれるソースコード群およびカーネルlinux-2.6.18-at3を取得します。

atmark%atde:~$ wget http://armadillo.atmark-techno.com/files/downloads/
 armadillo-500/source/dist/atmark-dist-20071214.tar.gz
atmark%atde:~$ wget http://armadillo.atmark-techno.com/files/downloads/
 armadillo-500/source/kernel/linux-2.6.18-at3.tar.gz
atmark@atde:~$ tar xf atmark-dist-20071214.tar.gz
atmark@atde:~$ tar xf linux-2.6.18-at3.tar.gz
atmark@atde:~$ mv linux-2.6.18-at3 atmark-dist-20071214
atmark@atde:~$ cd atmark-dist-20071214
atmark@atde:~/atmark-dist-20071214$ ln -s linux-2.6.18-at3
 linux-2.6.x


Android情報-ブリリアントサービスさんの2008年3月17日の日記からパッチファイルを取得して適用します。

atmark@atde:~/atmark-dist-20071214$ wget
 http://brilliant.android.googlepages.com/
 android4-linux-2.6.18at3-2.tar.bz2
atmark@atde:~/atmark-dist-20071214$ tar xf
 android4-linux-2.6.18at3-2.tar.bz2
atmark@atde:~/atmark-dist-20071214$ patch -p0 <
 android4-linux-2.6.18at3.patch

これでソースコードの準備は完了です。


次はカーネルの内容を設定します。

atmark@atde:~/atmark-dist-20071214$ make config

Vendorの項目でAtmarkTechnoと入力
AtmarkTechno Productsの項目でArmadillo-500と入力
Kernel Versionの項目でlinux-2.6.xと入力
Cross-devの項目でdefaultと入力
Libc Versionの項目でNoneと入力
Default all settingsの項目でyと入力
Customize Kernel Settingsの項目でnと入力
Customize Vendor/User Settingsの項目でnと入力
Update Default Vendor Settingsの項目でnと入力
OpenBinder IPC Driver (BINDER)でyと入力
Low Memory Killer (LOW_MEMORY_KILLER)でyと入力


最終調整を行います。変更箇所は少しなので、make menuconfigを利用します。

atmark@atde:~/atmark-dist-20071214$ make menuconfig

Kernel/Library/Defaults Selection ---> SPACE
[] Customize Kernel Settings SPACEでチェックを付けてESCで抜ける
ESCで抜ける
Do you wish to save your new kernel configuration? ENTERで次へ
Kernel Features ---> [*] Use the ARM EABI to compile the kernel
Device Drivers ---> Misc Devices <*> Low Memory Killer
Device Drivers ---> Character Devices <*> OpenBinder IPC Driver
に*印がついていることを確認してESC連打で抜ける
Do you wish to save your new kernel configuration?

atmark@atde:~/atmark-dist-20071214$ make dep all

これで、imagesディレクトリにカスタマイズカーネルが生成されます。

カーネルのNANDへの書き込み

シリアルライン経由でカーネルをNAND領域に転送します。

VMware Playerのウインドウ上部にあるシリアルポートボタンをおして、VMware仮想マシンとシリアルポートを接続しておいてください。

atmark@atde:~/atmark-dist-20071214$ cd images
atmark@atde:~/atmark-dist-20071214/images$ hermit
 download -i linux.bin.gz -r kernel

ルートファイルシステムの取得

Android情報-ブリリアントサービスさんの2008年3月17日の日記からAndroidユーザランドイメージ(buildroot構築環境入り)を取得して展開します。

atmark@atde:~/atmark-dist-20071214/images$ cd 
atmark@atde:~wget
 http://brilliant.android.googlepages.com/android_m3-rc37a.img.tar.bz2aa
atmark@atde:~wget
 http://brilliant.android.googlepages.com/android_m3-rc37a.img.tar.bz2ab
atmark@atde:~wget
 http://brilliant.android.googlepages.com/android_m3-rc37a.img.tar.bz2ac
atmark@atde:~ cat android_m3-rc37a.img.tar.bz2a? >
 android_m3-rc37a.img.tar.bz2
atmark@atde:~ tar xf android_m3-rc37a.img.tar.bz2

しかし起動しない。。。

現況:
ブート時のログを見ますと、

Linux version 2.6.18-at3 (atmark@atde) (gcc version 4.1.2 20061115 (prerelease)
 (Debian 4.1.1-21)) #5 PREEMPT Mon May 12 14:19:35 JST 2008

とあるので、カスタマイズしたカーネルの転送には成功している模様。

init: HOW ARE YOU GENTLEMEN

と出て、vga出力に

A N D R O I D _

とも出てくるので、initおよびそれを置いてあるルートファイルシステムも読めている模様。


でも

init: reading config file
init: device init
init: mtd partition -1,
init: mtd partition 0, "nor.bootl
init: mtd partition 1, "nor.kerne
init: mtd partition 2, "nor.userl
init: mtd partition 3, "nor.confi
init: mtd partition 4, "nand.ipl"
init: mtd partition 5, "nand.kern
init: mtd partition 6, "nand.user
init: mtd partition 7, "nand.free

ここのところで刺さってしまいます。デバイスドライバを正しく読み込めていない感じなのでしょうか?むー、困った。


切ない。。。


困ったのでOmegamoon blogのやり方を試すべく、Zaurus SL-C1000ヤフオクでポチっとな(ぉ

ルートファイルシステムのNANDへの書き込み

展開されたandroid_m3-rc37a.imgをArmadillo-500のNAND領域に書き込みます。

ここからはArmadillo-500のコンソールでの作業となります。Tera Termではなくて、Gnomeに含まれているMinicomを使ってもいいですね。

armadillo500 login: guest
[guest@armadillo500 (ttymxc0) ~]$ su
Password: root
[root@armadillo500 (ttymxc0) /home/guest] # (以降プロンプト省きます)
# /bin/flash_eraseall /dev/mtd7
# fdisk /dev/mtdblock7

n→p→1→ENTER→ENTERとして領域を確保し、wで書き出します。再起動後に

# mke2fs -j /dev/mtdblock7
# mount /dev/mtdblock7 /mnt
# cd /mnt
# wget http://(どこか)/android_m3-rc37a.img
# mkdir /rfs
# mount -o loop /mnt/android_m3-rc37a.img /rfs
# (cd /rfs; tar cf - *) | (cd /mnt; tar xf -)
# sync
# umount /rfs
# umount /mnt

これで、NAND領域のmtdblock7に、androidのシステムイメージを配置できました。