MinGWでQEMUをビルドしてみる。

ARMの仮想環境を作ってみるメモ。

UbuntuはVMWare上の仮想環境にあるのだけれど。仮想環境で仮想環境を動かすってどうなのということで。

ビルドが面倒であれば「QEMU ON WINDOWS」さまでビルド済みのQEMUが入手可能。(Windows7 x64環境で動作確認した。)

参考

KMC Staff Blog」さまの「ARMのQEMUをソースからビルドして, その上でDebianを動かす」を参考にした。

※ちなみに、Ubuntu上での手順も確認済み。

前提

  • Windows7 x64上のMinGWを使用。(OpenOCDをビルドする時に使ったもの)
  • MinGWにwgetを導入してファイルを取得する手順とする。
  • mingwPORTは使わない。(ファイルのリンク切れがある模様)

zlibの導入

情報はzlibのサイトを参照。

下記を実行してソースコードのアーカイブファイルを取得。

wget http://zlib.net/zlib-1.2.5.tar.gz

アーカイブを展開してConfigureしてみる。

tar zxvf zlib-1.2.5.tar.gz
cd zlib-1.2.5
./configure --prefix=/mingw

すると、

Checking for gcc...
Please use win32/Makefile.gcc instead.

と出るので、対処法どおり

vim win32/Makefile.gcc

で”Makefile.gcc”ファイルを開いて「IMPLIB = libzdll.a」の下辺りに

BINARY_PATH=/mingw/bin
INCLUDE_PATH=/mingw/include
LIBRARY_PATH=/mingw/lib

を追加後、

make -f win32/Makefile.gcc
make install -f win32/Makefile.gcc

を実行してビルド・インストールする。

SDLの導入

情報はSDLのサイトを参照。

下記を実行してソースコードのアーカイブファイルを取得。

wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz

アーカイブを展開してビルド・インストール。

tar zxvf SDL-1.2.14.tar.gz
cd SDL-1.2.14
./configure --prefix=/mingw --disable-shared
make
make install

QEMUの導入

0.14.1を導入してみる。

他のバージョンが欲しい場合はこちらから入手。

下記を実行してソースコードのアーカイブファイルを取得。

wget http://ftp.twaren.net/Unix/NonGNU/qemu/qemu-0.14.1.tar.gz

アーカイブをを展開してビルド・インストール。

tar zxvf qemu-0.14.1.tar.gz
cd qemu-0.14.1
configure --target-list=arm-softmmu --disable-docs
make
make install

QEMUは”C:\Program Files\Qemu“にインストールされる。

このままだと”libssp-0.dll“が無いと怒られるため、”C:\MinGW\bin“にある”libssp-0.dll“を”C:\Program Files\Qemu“にコピーする。

QEMUの起動

参考と同様に

http://people.debian.org/~aurel32/qemu/armel/initrd.img-2.6.32-5-versatile
http://people.debian.org/~aurel32/qemu/armel/vmlinuz-2.6.32-5-versatile
http://people.debian.org/~aurel32/qemu/armel/debian_squeeze_armel_standard.qcow2

を取得し”C:\Program Files\Qemu“に置いた後、コマンドラインを起動して

cd "c:\Program Files\QEMU"
qemu-system-arm -M versatilepb -m 256 -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda debian_squeeze_armel_standard.qcow2 -append "root=/dev/sda1"

を実行したところ、無事起動した。

おまけ

最初にMinGW上で動かすものだと思って、Configure時に「–prefix=/home/QEMU」としてQEMU上にインストールしたら、既存のイメージを起動すると

Begin: Mounting root file system ... /init: line 216: syntax error: 0xC:/MinGW/msys/1.0/dev/xxx

とかで、rootfsをマウントする時MinGWの/devの下を見にいくらしく、Panicしてしまう。

“-append”で指定しているカーネルオプション”root=/dev/sda1″がよろしくないみたいで、外して起動すればinitramfsでは起動するから何かが間違っているんだろうけれど、調べるのも面倒だしWindows側では動くから、とりあえずこれで良いことにする。

ちなみに、VM上のUbuntuに導入するなら

apt-get install libsdl1.2-dev

した後にQEMUの導入と同じ手順で、アーカイブ展開・ビルド・インストールでOKだった。

一応キャプチャしたけれど、仮想の中の仮想だからどの程度動くのかはわかりません。


コメント

タイトルとURLをコピーしました