2012年12月05日

QEMUでARM Ubuntuを動作させる

Linaro が公開している ARM Ubuntu を QEMU で動作させる方法を解説します。



ホスト環境は、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 をインストールすることができました。
$ 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
$ wget http://releases.linaro.org/platform/linaro-n/hwpacks/final/hwpack_linaro-vexpress_20110526-2_armel_supported.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 をコピーしました。
$ 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 の方は、不要なコマンドプロンプトが開きません。
>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

しばらく待つと、プロンプトが出ます。(そのままだと文字が小さいので、ドラッグしてウィンドウを拡大します。)

arm-ubuntu-qemu
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 の代わりに使用するだけです。

arm-ubuntu-desktop-qemu

動作は遅いですが、x86 Ubuntu と同様に、Firefox でウェブを見たり、GUI からアップデートを行ったりができます。

トラックバックURL

トラックバック一覧

必要なパッケージをインストール sudo apt-get install qemu-system-arm qemu-utils linaro からシステムイメージを取ってきて展開 wget -N http://releases.linaro.org/ubuntu/boards/lsk-vexpress/latest/lsk-vexpress-vivid_n ...

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード