Armadillo-220 用の romfs.img.gz を qemu で動かす

出張中でも Armadillo の開発がしたい!

でも、ただでさえコンピュータ2、3台を持って行っている身としては、これ以上 Armadillo とかも鞄に忍ばせたくはない・・・



そこで、ARM CPU もエミュレーションできる QEMU を使って、それっぽく Armadillo-220 用の romfs を動かしてみました。

※ この記事は完全な Armadillo のエミュレーションを行うものではありません

QEMU インストール

まずは、QEMU をインストールします。

MacOS X Snow Leopard



$ sudo port install qemu +target_arm

Debian GNU/Linux 5.0.4 (lenny)



# apt-get install qemu

起動するカーネルのダウンロード

こちらのサイトで起動するイメージを公開してくださっています。

http://people.debian.org/~aurel32/qemu/arm/


$ wget http://people.debian.org/~aurel32/qemu/arm/vmlinuz-2.6.18-6-versatile

romfs の作り直し

Armadillo はシリアルポートのデバイス名が ttyAM0 ですが、上記のカーネルは ttyAMA0 です。

このままだと起動してもコンソールがなく、何もできないので romfs のイメージをループバックファイルシステムでマウントして、ちょっといじります。


# gunzip romfs.img.gz
# mount -o loop romfs.img /mnt
# vi /mnt/etc/inittab
〜編集〜
# vi /mnt/etc/securetty
〜編集〜
# sync
# umount /mnt
::respawn:/sbin/getty -L 115200 ttyAM0 vt102

::respawn:/sbin/getty -L 115200 ttyAM1 vt102



::respawn:/sbin/getty -L 115200 console vt102

::respawn:/sbin/getty -L 115200 ttyAM0 vt102

::respawn:/sbin/getty -L 115200 ttyAM1 vt102





ttyAM0

ttyAM1

tty1



console

ttyAM0

ttyAM1

tty1


起動

MacOS X Snow Leopard


$ sudo /opt/local/bin/qemu-system-arm -M versatilepb -cpu arm926 -m 32 -smp 1 -usb -kernel vmlinuz-2.6.18-6-versatile -append "ramdisk_size=12288 root=/dev/ram0 console=ttyAMA0" -initrd romfs.img -serial stdio

Debian GNU/Linux 5.0.4 (lenny)


# qemu-system-arm -M versatilepb -cpu arm926 -m 32 -smp 1 -usb -kernel vmlinuz-2.6.18-6-versatile -append "ramdisk_size=12288 root=/dev/ram0 console=ttyAMA0" -initrd romfs.img -serial stdio

Armadillo用のカーネルではないので、微妙な動作の違いなどはあるでしょうけど、

(一番大きいのが flatfsd が使えない点だが、-mtdblock オプションを使えばなんとかなるかも?)

ほぼそのままの形の romfs がエミュレータ上で動くと言うことは、

(シリアルコンソールが必要なく、ネットワークアクセスのみであれば、一切変更不要。)

手元に Armadillo本体が無い場合、

いろいろなテストを行い場合に結構有益なのではないでしょうか。