KQEMU 1.3.0pre11のインストーラ

***本記事にはプロモーションが含まれています。***

インストーラを作りました。infファイルを使った方法は、どうにもうまく動かず、以前のnsSCMを使った方法で作りました。
http://nsis.sourceforge.net/Service_Control_Manager_plugin_(install_services_and_drivers_on_NT/2K/XP)
http://www.h6.dion.ne.jp/~kazuw/qemu-win/Kqemu-1.3.0pre11-install.exe
既にKQEMUをインストールしてある場合は、コントロールパネルのプログラムの追加と削除でKQEMU virtualization module for QEMUを削除してください。新しいKQEMUは、QEMU Accelerator Moduleで登録されます。
QEMUのインストーラも合わせて作りました。
http://www.h6.dion.ne.jp/~kazuw/qemu-win/Qemu-0.9.0-install.exe
BIOSの位置が、pc-biosになっていますので、
-L "C:Program FilesQemupc-bios"
でQEMUを起動してください。
KQEMUをインストールすると、インストーラを使わないqemu-0.9.0-windows.zipのqemu.exeも加速されます。
Windows Vistaホストではテストしていません。

感染経路

***本記事にはプロモーションが含まれています。***

ウィルスに感染したという報告は出てこないようなので、とりあえず大きな問題にはならなかったようです。
どうやら、Windows XPが感染していて、ファイルの共有で共有していたLinuxホストのファイルに感染したということのようでした。今後は、アンチウィルスソフトを使ってもらえると思います。
今回は、ウィルスを非常に身近に感じた一件でした。

USBフィルタドライバがウィルスに感染していた

***本記事にはプロモーションが含まれています。***

USBフィルタドライバがウィルスWin32.Parite.bに感染していたことがわかりました。すみませんが、このファイルをインストールした人は、お使いのパソコンをアンチウイルスソフトでチェックしてください。
http://gnome.dnsalias.net/patches/libusb-win32-filter-bin-0.1.10.2.exe
サーバは、Linuxでホストされているため、どのように感染したのかわからないそうです。また、2006/11/21にダウンロードしたファイルは感染していませんでしたので、最近感染したと思われます。
ウィルスについては、なるべく予防はしていたのですけれど、自分のサイトの管理外で問題が起きてしまいました。
今後の対策としては、どうすればいいでしょう。

NSISでデバイスドライバをインストールする

***本記事にはプロモーションが含まれています。***

NSIS用のプラグインがあります。
http://nsis.sourceforge.net/InstDrv_plug-in
これを使って作ろうとしているのですが、どうもうまく動きません。以前は、infファイルを使わない方法だったのですが、infファイルを使うとサービスが起動しなくなります。また、サービスを起動させようとするとハードウェアウィザードが起動したり、サービスの停止ができなくなります。どうしてでしょう。

Windowsホスト用のKQEMUの作り方

***本記事にはプロモーションが含まれています。***

Fedora Core 4ホストで、Windows用のドライバをクロスコンパイルします。ここにあるMinGWのrpmをインストールすると作ることができました。
http://mirzam.it.vu.nl/mingw/
bitWalkのバイナリでもやってみたのですが、作ることができませんでした。
rpmをインストール後、ソースコード内でconfigureします。
./configure --enable-mingw32
make
また、ビルド時にELF用のアセンブラオプションが使われていて、クロスコンパイル環境でないと作ることができません。不便なのですがしょうがないですね。VirtualBoxを使って、Linuxゲストを動かしてコンパイルするのがよさそうです。

QEMUとKQEMUのGPL化

***本記事にはプロモーションが含まれています。***

QEMUとKQEMUがGPLになるようです。KQEMUは、それにともないソースコードが公開されています。
KQEMUがGPLになるのはいいのですが、KVMやVirtualBoxがある現状を見るとどう扱っていいのか考えてしまいますね。

MinGWのランタイムライブラリ

***本記事にはプロモーションが含まれています。***

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にダウングレードすると直ります。
最初、何が悪くて動かないかわからず、ゲストOSを3つほどだめにしてしまいました。

VirutalBoxのWindowsホストでのデバッグの仕方

***本記事にはプロモーションが含まれています。***

ソースコードから、デバッグバージョンを作ります。
kmk BUILD_TYPE=debug
実行ファイルは、outwin.x86debugbinにできます。
Windowsホストだと、VisualStudio用のプロジェクトを作っているわけではないので、実行ファイルを指定してデバッグする必要があります。次のところにやり方が書いてあります。
http://msdn2.microsoft.com/ja-jp/library/0bxe8ytt(vs.80).aspx
その後、プロジェクトのプロパティでコマンド引数を設定してデバッグ開始をすれば良いです。
実際にデバッガ上で動かしてみると、ステップ実行すると画面がフリーズしてしまうことが問題でした。ブレークポイントを指定しての実行はできるみたいです。
また、ソースコードをプロジェクトに登録しないと、ソースコード内の検索ができないことが不便かなと思います。

VirtualBoxのLinuxホストでのデバッグの仕方

***本記事にはプロモーションが含まれています。***

Linuxホストで、VirtualBoxをデバッグするのは次のようにするそうです。
まず、ソースコードからデバッグバージョンを作ります。
kmk BUILD_TYPE=debug
次に、カーネルモジュールがロードされ/dev/vboxdrvにリードライトの権限があることを確認します。
次に、ビルドしたディレクトリからVirtualBoxサービスを立ち上げます。
~/VirtualBox/.../out/.../bin $ LD_LIBRARY_PATH=. ./VBoxSVC
次に、別のターミナルから、デバッガー上でVirtualBoxを動かします。
~/ViratualBox/.../out/.../bin $ LD_LIBRARY_PATH=. gdb --args ./VirtualBox -startvm [VM NAME]
デバッグバージョンのVirtualBoxは、いろいろなところにAssertionが入っていて、おかしなとことがあればログファイルに記録されているそうです。

仮想化やクラウドについて