ホスト環境は、Windows7 64bit です。(基本的には Linux 環境でも同じはずです。)
ターゲット環境は、QEMU の ARM Versatile Express 評価ボードです。
QEMU は、以前解説した環境でビルドした、32bit Windows 版を使用しました。バージョンは 1.1.2 です。
※ pragma で coroutine-win32.c の最適化をオフにしてビルドしました。現在 QEMU ON WINDOWS のサイトでは、MinGW gcc-4.7.2-1 を使用しているようなので、gcc をアップデートすれば、このハックは不要になるかもしれません。(未確認)
ARM Ubuntu の構築環境は、VMWare 上の Ubuntu 11.10 64bit を使用しました。
起動までの手順は 3 段階です。(1) と (2) は VMWare 上の作業、(3) はホストの Windows 環境となります。
(1) ARM Ubuntu の SD イメージファイルを作成する。
(2) (1) のイメージファイルから initrd と vmlinuz を取り出す。
(3) QEMU の仮想 SD ドライブとして (1) のイメージファイルを使用し、(2) で取り出した initrd と vmlinuz で起動する。
参考サイト:Testing with Linux on ARM architecture using QEMU
(1) ARM Ubuntu の SD イメージファイルを作成する。
私の環境では、特に設定しなくても、apt-get で linaro-image-tools をインストールすることができました。
ターゲット環境は、QEMU の ARM Versatile Express 評価ボードです。
QEMU は、以前解説した環境でビルドした、32bit Windows 版を使用しました。バージョンは 1.1.2 です。
※ pragma で coroutine-win32.c の最適化をオフにしてビルドしました。現在 QEMU ON WINDOWS のサイトでは、MinGW gcc-4.7.2-1 を使用しているようなので、gcc をアップデートすれば、このハックは不要になるかもしれません。(未確認)
ARM Ubuntu の構築環境は、VMWare 上の Ubuntu 11.10 64bit を使用しました。
起動までの手順は 3 段階です。(1) と (2) は VMWare 上の作業、(3) はホストの Windows 環境となります。
(1) ARM Ubuntu の SD イメージファイルを作成する。
(2) (1) のイメージファイルから initrd と vmlinuz を取り出す。
(3) QEMU の仮想 SD ドライブとして (1) のイメージファイルを使用し、(2) で取り出した initrd と vmlinuz で起動する。
参考サイト:Testing with Linux on ARM architecture using QEMU
(1) ARM Ubuntu の SD イメージファイルを作成する。
私の環境では、特に設定しなくても、apt-get で linaro-image-tools をインストールすることができました。
$ sudo apt-get update
$ sudo apt-get install linaro-image-tools
上記サイトを参考に、ファイルを取得し、Versatile Express 向けの SD イメージファイルを作成します。成功すると、vexpress.img というファイルが作成されます。
$ wget http://releases.linaro.org/platform/linaro-n/nano/final/linaro-natty-nano-tar-20110527-1.tar.gz
$ linaro-media-create --image_file vexpress.img --dev vexpress --binary linaro-natty-nano-tar-20110527-1.tar.gz --hwpack hwpack_linaro-vexpress_20110526-2_armel_supported.tar.gz
途中、何回か質問されますが、全て y と答えました。必要なツール類などが自動的にインストールされるようです。
(2) initrd と vmlinuz を取り出す。
イメージファイルを /mnt/tmp 以下にマウントして、/mnt/tmp/boot から、initrd と vmlinuz を Windows 環境にコピーします。今回は vmlinuz-2.6.38-1003-linaro-vexpress と initrd.img-2.6.38-1003-linaro-vexpress をコピーしました。
(2) initrd と vmlinuz を取り出す。
イメージファイルを /mnt/tmp 以下にマウントして、/mnt/tmp/boot から、initrd と vmlinuz を Windows 環境にコピーします。今回は vmlinuz-2.6.38-1003-linaro-vexpress と initrd.img-2.6.38-1003-linaro-vexpress をコピーしました。
$ sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } /partition 2/ { print $7*512; }')" -t auto vexpress.img /mnt/tmp
(3) QEMU の起動
MSYS からの実行は問題があるようなので、Windows のコマンドプロンプトから実行します。(ビルドに使用した MinGW 環境の bin から、QEMU の exe と同じフォルダに必要な dll をコピーしておく必要があります。)
(1) で作成した vexpress.img と、(2) で取り出した vmlinuz-2.6.38-1003-linaro-vexpress と initrd.img-2.6.38-1003-linaro-vexpress が存在するフォルダで、qemu-system-armw.exe を以下のように実行します。(exe ファイルへの PATH は、適宜読みかえてください。)
※ qemu-system-arm.exe はコンソールアプリで、armw は Windows アプリです。armw の方は、不要なコマンドプロンプトが開きません。
MSYS からの実行は問題があるようなので、Windows のコマンドプロンプトから実行します。(ビルドに使用した MinGW 環境の bin から、QEMU の exe と同じフォルダに必要な dll をコピーしておく必要があります。)
(1) で作成した vexpress.img と、(2) で取り出した vmlinuz-2.6.38-1003-linaro-vexpress と initrd.img-2.6.38-1003-linaro-vexpress が存在するフォルダで、qemu-system-armw.exe を以下のように実行します。(exe ファイルへの PATH は、適宜読みかえてください。)
※ qemu-system-arm.exe はコンソールアプリで、armw は Windows アプリです。armw の方は、不要なコマンドプロンプトが開きません。
>c:\path\to\qemu-system-armw.exe -M vexpress-a9 -kernel vmlinuz-2.6.38-1003-linaro-vexpress -initrd initrd.img-2.6.38-1003-linaro-vexpress -m 512 -append "root=/dev/mmcblk0p2 vga=normal mem=512M devtmpfs.mount=0 rw" -drive file=vexpress.img,if=sd,cache=writeback
しばらく待つと、プロンプトが出ます。(そのままだと文字が小さいので、ドラッグしてウィンドウを拡大します。)
poweroff で終了すると、自動的に QEMU も終了するようです。
デスクトップ版 Ubuntu も、同じ initrd と vmlinuz で起動できました。
http://releases.linaro.org/images/12.03/oneiric/ubuntu-desktop/vexpress-a9-ubuntu-desktop.img.gz
上記ファイルを展開してできる vexpress-a9-ubuntu-desktop.img を、vexpress.img の代わりに使用するだけです。
動作は遅いですが、x86 Ubuntu と同様に、Firefox でウェブを見たり、GUI からアップデートを行ったりができます。
0 件のコメント:
コメントを投稿