サイトを移転しました 5秒後に新しいサイトに移動します

新しいサイト

1. 開発環境

QEMUは、MinGW/MSYSという環境で作ることができます。SDLライブラリは、MinGWでコンパイルする必要があり、すべてのシステムはMinGWを使って作られます。

zlibが、バージョン0.6.1から必要になりました。

SDLライブラリは、ソースコードから作る必要があります。
SDL_VIDEODRIVERとして、directxが使われます。windibよりも速いですけど、キーボードがうまく動かないことがあります。たぶんdirectxを使うには、各国語ごとにパッチが必要みたいです。もしキーボードがうまく動かない場合、次のようにしてプログラムをスタートするといいと思います。
[DOS prompt] set SDL_VIDEODRIVER=windib
[DOS prompt] qemu.exe -L .......

ちなみに、/etc/profileに次の行をいれると、MSYSの起動時から有効になります。.bashrcではだめみたいです。
export SDL_VIDEODRIVER=windib

SDL_VIDEODRIVER=directxのときは、sdl.cのflagsにSW_SURFACEを設定するとフルスクリーンモードにできます。フルスクリーンにした後、ウィンドウが元に戻らないことがあります。windibのときは、VGAのテキストモードのとき画面が乱れるようです。

まず、次のファイルをホームディレクトリにダウンロードします。MSYSをc:\MSYS\1.0にインストールした場合、ホームディレクトリは、c:\MSYS\1.0\home\(your name)になります。

MinGW-3.1.0-1.exe
MSYS-1.0.10.exe
msysDTK-1.0.1.exe
gcc-core-3.3.1-20030804-1.tar.gz
gcc-g++-3.3.1-20030804-1.tar.gz
w32api-3.8.tar.gz
mingw-runtime-3.9.tar.gz

SDL-1.2.11.tar.gz
directx-devel.tar.gz こちらから
nasm.exe こちらから

zlib-1.2.3.tar.gz

注意:QEMUを作るときに、MinGWのランタイムライブラリmingw-runtime-3.11.tar.gzを使うと、QEMUが動きません。例えば、MinGW-5.1.2.exeとかMinGW-5.1.3.exeでMinGW(gcc-3.4.2)をインストールすると、このライブラリが使われるため、Windows 2000ゲストが、unhandled win32 exceptionで終了してしまいます。mingw-runtime-3.10.tar.gzにダウングレードすると直ります。

MinGW、MSYS、msysDTKをセットアップします。 /mingwディレクトリで、gccなどを展開します。 SDLライブラリをインストールします。

$ cd /mingw
$ tar zxvf ~/gcc-core-3.3.1-20030804-1.tar.gz
$ tar zxvf ~/gcc-g++-3.3.1-20030804-1.tar.gz
$ tar zxvf ~/w32api-3.8.tar.gz
$ tar zxvf ~/mingw-runtime-3.9.tar.gz

zlibは、--prefix=/mingwで、/mingw/includeと/mingw/libにインストールします。

$ tar zxvf zlib-1.2.3.tar.gz
$ cd zlib-1.2.3
$ ./configure --prefix=/mingw
$ make
$ make install
まず、DirectXのヘッダーを/usr/local/directx/includeに展開します。もし、最新のDirectX SDKを持っていたら、configure時のCPPFLAGSにそれを指定します。
$ mkdir /usr/local
$ cd /usr/local
$ mkdir directx
$ cd directx
$ tar zxvf ~/directx-devel.tar.gz
$ ls
include lib

directx.hの最後に、#define DIRECTINPUT_VERSION 0x0700 をつけてもいいかもです。

nasm.exeを/mingw/binにコピーします。
$ cd
$ cp nasm.exe /mingw/bin

SDLライブラリを作ってインストールします。CPPFLAGSを設定する必要があります。
$ cd
$ tar zxvf  SDL-1.2.11.tar.gz
$ cd SDL-1.2.11
$ patch -Z -p1 <../sdl-1.2.11-keyboard/sdl-1.2.11-keyboard.patch
$ ../sdl-1.2.11-keyboard/configure.qemu
$ make
$ make install

別のDirectXの移植はこちらから。

SDLライブラリが適切に動作することを確認してください。SDL.dllがPATHのとおったディレクトリにある必要があります。

QEMUモニターを使うには、Ctrl、Alt、2(Ctrl-Alt-2)キーを同時に押してください。ゲストOSにもどるには、Ctrl-Alt-1を使います。

プログラムの作成には、Cygwin内のMinGW環境を使うこともできます。パッチは、これを使ってください。

mingw-runtime 3.11-1は、動きません。mingw-runtime 3.10-1にダウングレードしてください。

zlibは、Cygwinのsetup.exeからインストールすることができます。MinGW/mingw-zlibにあります。/usr/include/mingwと/usr/lib/mingwにインストールされます。

SDLライブラリも、必要です。MinGW/MSYSと同様に作ることができます。

その他に、LinuxとWindowsとの間のクロスコンパイル環境があります。Linux上でプログラムを作成し、Windows上で実行することができます。適当なサイトを参照してください。kitとして配布しているところもあります。
Ronaldさんの所では、このようにしているそうです。

2. パッチの適用とMake

QEMUホームページからqemu-0.8.x.tar.gzをダウンロードし、qemu-0.8.x-xxx.patchを準備します。
同じディレクトリに置き、次のようにします。

$ tar zxvf qemu-0.8.x.tar.gz
$ cd qemu-0.8.x
$ patch -p1 <../qemu-0.8.0-xxx.patch

$ ./configure
$ make

"qemu.exe"というファイルが、i386-softmmuディレクトリに、":qemu-system-ppc.exe"がppc-softmmuディレクトリに、"qemu-system-sparc.exe"がsparc-softmmuディレクトリにできます。"qemu.exe"が、PCエミュレータで、"qemu-system-ppc.exe"が、PowerPCエミュレータ、"qemu-system-sparc.exe"が、SPARCエミュレータです。

CVSからプログラムを作る場合、texi2htmlがないというエラーがでます。そのときは、
$ touch qemu-doc.html qemu-tech.html qemu.1 qemu-img.1
とすることで、コンパイルすることができます。

3. プログラムの実行

プログラムをテストするには、もし、linux.img(ハードディスクイメージ)がソースコードの一番上にあれば、i386-softmmuディレクトリで次のようにします。

i386-softmmu$ ./qemu.exe -L ../pc-bios -hda ../linux.img

ハイフン2つは必要なくなりました。すべてのオプションにハイフンを使って下さい。

4. リリースビルド

qemu-0.x.y-windows.zipを作るときは次のオプションを使っています。

./configure --enable-dsound --enable-adlib --enable-fmod --fmod-inc="/usr/local/fmodapi375win/api/inc"
   --fmod-lib="/usr/local/fmodapi375win/api/lib/libfmod.a"

その他のバイナリは、次の通りです。
./configure --enable-dsound --enable-adlib

5. ホストOS

動作環境:
Windows XP SP2 Home Edition
Windows 2000 SP4
Windows Me
Windows 98SE

Windows98がホストで動かない場合は、DirectXをインストールすると動作するようです。

SDLライブラリが、DirectX(directx)ではなく、WindowsのGDIを使うようにするには、
[DOS prompt] set SDL_VIDEODRIVER=windib
SDLライブラリが、DirectX(dsound)ではなく、WindowsのマルチメディアAPIを使うようにするには、
[DOS prompt] set SDL_AUDIODRIVER=waveout
としてからプログラムをスタートする方法もあるみたいです。
[DOS prompt] qemu.exe ........

6. ゲストOS

Small Linux form QEMU linux-test package
Red Hat Linux 7.2
Morphix
Knoppix 3.3 日本語版
Knoppix 3.7 日本語版
Windows 98SE 日本語版
WIndows 2000 日本語版

7. わかってる問題

-smpオプションが使われると、プログラムが遅くなります。こちら。

ハイパースレッドまたはマルチプロセッサのシステムでプログラムが動きません。こちら。

Windows 2003 ホストではCD-ROMが使えません。こちら。

-snapshot オプションを使っても、temporary fileがつくれません。here.

qemu-img.exe convertがうまく動かない。こちら。

DR-DOS EMS, ROX, ReactOSのバグ。 here.

ゲストOSの時間が、遅くなります。こちら。

Altキーが押された状態のままになる。こちら。

Windows 2000のdisk fullという問題。
c:\winnt\security\edb*.logが大きくなりすぎること。こちら。
dd if=/dev/zero of=w2k.img bs=1M count=8096 で8Gのディスクを作るとうまくいかず、dd if=/dev/zero of=w2k.img bs=4096 count=2000000で作るとうまくいくそうです。こちら。
インストールのみに使えるパッチ。irqを時間でリセット?こちら。
このパッチでうまくいった。こちら。こちら。
FAT32でフォーマットして、インストール後NTFSに変換するとうまくいった。こちら。
これは、パッチ。上と同じもの。こちら。
-hdachs cylinder,16,63 を使うと、win98, win2k pro, win2k server, winxp home upgrade and win2003 でインストールできる。こちらこちら。
-win2k-hack オプションがCVSには導入されました。Windows 2000をインストールするときのみ使ってください。Windows 2000をインストール後は使わないでください。 こちら。
問題は、まだあります。-win2k-hackオプションをつかっても。 こちら。

-win2k-hackというオプションがバージョン0.7.2から使えます。Windows 2000をインストールするときのみ使ってみてください。


Windows 2000で、Windows Update時に時間が正確でないといってできない。また、SSLが動かない。こちら。
マイクロソフトインストーラが動かない。SChannel failというメッセージがでる。こちら。
Windows UpdateでSP4にできない。DirectXのインストールが失敗する。こちら。

CD-ROMの変更を認識できない。アップグレード版のWindowsをインストールするときに問題になります。インストール済みのものは、エクスプローラで、CD-ROMの変更を指示した後、qemuコンソールで変更するとできるようです。こちら。

Windows XPのlicenseの問題。SP1を適用したのは大丈夫。こちら。
Windows XPで、ブートコードが480MB以降にあるとブートできない。こちら。

Windows 2000/XP で、16bitのMS-DOSプログラムを動かすと、The NTVDM CPU has encountered an handle exception. というエラーが出て動きません。こちら.
Norton Ghostを使うとpage faultのエラーがでる。こちら。

OSは、720MBなのに、実際のファイルは2.3GBもある。こちら。

Morphixのスタート時に、Ctrl-Alt-fでフルスクリーンにするとタスクバーが真っ白になり表示されません。動いているみたいですが。
TFTサーバーが動きません。動きました。
ne2000が検出されないことがあるようです。Realtek 8029のドライバを使うと動作することがあるそうです。

qemu-system-ppc.exeは、gdb上でブレークポイントを設定しないと動きません。get_time()で、何かが起こってる??−>パッチができたみたいです。


ホーム