WindowsホストでのVirtualBoxの作り方

ここにビルドの仕方が書いてあります。
http://www.virtualbox.org/wiki/Windows%20build%20instructions
VisualC++と、Platform SDK、DirectX SDK、Windows DDKを順にインストールします。
VisualC++は、Express Editionを使いました。
MinGWは、MinGW-3.1.0-1.exeをインストールし、gcc-3.3.1などをC:MinGWディレクトリで展開しました。
SDLは、ソースコードからVC++を使って作りましたが、Development Librariesにあるものでも良いと思います。ソースコード内に、VisualC.zipというファイルがあるので、展開するとプロジェクトを開くことができます。
自分で作った場合は、
include
lib/SDL.dll
lib/SDL.lib
lib/SDLmain.lib
のように配置されている必要があります。
XercesとXalan。
VC++ Express Editionで作ろうとしたけど、作れなかった。VC6用のバイナリを使ってみることにした。
Q...をViusalC++ Express Edition用に作る。
ここにやり方が書いてある。
http://qtwin.sourceforge.net/qt3-win32/compile-msvc-2005.php
まず、コマンドプロンプトの環境整備です。
C:Program FilesMicrosoft Visual Studio 8Common7Toolsvsvars32.batに、PlatformSDKのPATH、INCLUDE、LIBを加えた。加える位置は、@goto endの前です。
@set PATH=C:Program FilesMicrosoft Platform SDK for Windows Server 2003 R2bin;%PATH%
@set INCLUDE=C:Program FilesMicrosoft Platform SDK for Windows Server 2003 R2Include;%INCLUDE%
@set LIB=C:Program FilesMicrosoft Platform SDK for Windows Server 2003 R2Lib;%LIB%
qt-3のconfigure.batを実行する前に、環境変数をセットした。QMAKESPECには、win32-msvc2005を指定した。
set QTDIR=C:qt-3
set PATH=%QTDIR%bin;%PATH%
set QMAKESPEC=win32-msvc2005
コンパイル後、qt-3libの中にdynamicというフォルダを作り、lib/qtmain.libをlibdynamicqtmain.libにコピーしました。また、libqt-mt3.libをlibdynamicqt-mt333.libに名前を変えてコピーしました。また、binqt-mt3.dllをbinqt-mt333.dllに名前を変えてコピーしました。これは、configure.vbsを実行するときにチェックされるからです。ただ、このように変更して本当に大丈夫なのかはどうかは、わかりません。
[追記:configure.vbsのlib/dynamic/qt-mt33*.libとなっているところをlib/dynamic/qt-mt3*.libに変更して、qt3のlibファイルをdynamicに丸ごとコピーするとVirtualBox.exeができたそうです。こちらのほう良いと思います。]
以上で、ライブラリの整備はおしまいです。
次に、ソースコードの先頭でcscript configure.vbsを実行します。次のようなオプションをつけて実行しました。
cscript configure.vbs --with-DDK=C:WINDDK3790.1830 --with-MinGW=C:MinGW --with-libSDL="C:Program FilesSDL-1.2.11" --with-Xerces="C:Program Filesxerces-c-windows_2000-msvc_60" --with-Xalan="C:Program FilesXalan-C_1_10_0-win32-msvc_60" --with-Qt="C:Qt-3" --with-VC-Express-Edition
このとき、kBuildがアップデートされていると、kmk.exe --versionが起動できないというエラーになってしまうようです。そのときは、kBuildbinwin.x86フォルダを別のところに移動し、元の位置に移動しなおすと動きました。これは、NTFSで他のコンピュータで作ったフォルダにはアクセス制限がかかるからです。正式にはセーフモードで起動しなおしてアクセス権を設定し直すみたいです。
ライブラリの位置は、実行する環境によって変えてください。結論から言うと、Express Editionでコンパイルする場合は、Xerces、Xalan、QTのライブラリは必要ではありませんでした。
そして、env.batを実行してからkmkを実行します。
env.bat
kmk
このとき、kBuildのりビジョン3以前では、自分のPCでは、Cygwinがインストールしてあるためkmkを実行しようとするとエラーになってしまいました。そこで、VirtualBoxのサイトの説明にある通りCygiwn1.dllをkBuildbinx86.bincygwin1.dllにコピーしたらコンパイルが始まりました。また、途中yasmを使うところで、"アクセスが拒否されました”と表示されてコンパイルが止まってしまいました。そこで、一旦vboxtoolswin.x86binフォルダを別のフォルダに移動して、同じ場所にコピーしなおしました。すると、yasmが実行可能になりました。
以上で、コンパイルは終了しました。
cd outwin.x86debugbin
VBoxBFE.exe -cdrom Knoppix.iso -boot d
で動きました。-boot dを指定しないとCD-ROMから起動しないです。VisualC++ Express Editionを使っているため他のGUIのプログラムは作られません。また、comregister.cmdとかないのでする必要がありません。実際のところQTとかのライブラリはVBoxBFE.exeのみでは必要ありませんでした。
SUPUninstall
SUPInstall
で、カーネルドライバのアンインストールとインストールができるようですが、まだ試していません。
以上で、VisualC++ Express Editionを使ってVirtualBoxを作ってみたのでした。

Fedore Core 4ホストでのVirtualBoxの作り方

Fedora Core 4ホストでVirtualBoxをビルドしてみました。その時のメモです。
ビルドに必要なものは、こちらに書いてあります。1つづつ確認していきます。
http://www.virtualbox.org/wiki/Linux%20build%20instructions
dev86は、rpmfindで探してきました。Fedora Core 5用のしか無かったのですが、それをインストールしました。
http://linuxsoft.cern.ch/fedora/linux/core/5/i386/os/repodata/repoview/dev86-0-0.16.17-2.1.html
rpm -ivh dev86-0.16.17-2.1.i386.rpm
次のrpmをインストールしました。
yum install uuid
yum install uuid-c++
yum install uuid-devel
yum install qt-devel
SDLとSDL-develは、QEMUを動かすときにインストール済みなので省略。もっと必要だったかもしれませんがメモし忘れてしまいました。
Intelのサイトからiaslを持ってきます。acpica-unix-20061109.tar.gzをダウンロードします。
http://www.intel.com/technology/iapc/acpi/downloads.htm
tar zxvf acpica-unix-20061109.tar.gz
cd acpica-unix-20061109/compile
make
cp iasl /usr/local/bin
Xerces-cは、FC4用のrpmが無いので自分でコンパイル、インストールします。
http://xml.apache.org/xerces-c/
tar zxvf xerces-c-current.tar.gz
export XERCESCROOT=/home/kazu/xerces-c-src_2_7_0
cd $XERCESCROOT
./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread
gmake
make install
Xalan-cも同様に自分でコンパイル、インストールしました。
http://xml.apache.org/xalan-c/
tar zxvf Xalan-C_1_10_0-src.tar.gz
export XERCESCROOT=/home/kazu/xerces-c-src_2_7_0
export XALANCROOT=/home/kazu/xml-xalan
./runConfigure -p linux -c gcc -x g++
make clean
make
make install
XercesとXalanは、/usr/local/libにインストールされるので、そのライブラリのロードパスを指定します。
/etc/ld.so.conf.d/libxalan.confと言うファイルをつくって、次の内容を書きます。ファイルの名前は、拡張子が.confであればなんでもいいです。

/usr/local/lib

そして、設定を反映させます。
su
/sbin/ldconfig
exit
これで、開発環境の整備は終わりです。VirtualBoxのconfigureで環境のチェックをしているので、何か無いと言われたらインストールしてください。
次に、VirtualBoxのソースをコンパイルしました。
svn co http://virutalbox.org/src/vbox/trunk vbox
cd vbox
ここで、configureスクリプトで環境のチェックをするのですが、-lXcursorがリンクできなくて止まってしまいます。LIBRARY_PATHで、X Windowのライブラリのパスを指定しないといけないです。
また、QTの位置を指定しないといけないです。
LIBRARY_PATH=/usr/X11R6/lib ./configure --with-qt-dir=/usr/lib/qt-3.3
正常に終了すれば、env.shというファイルができます。
source ./env.sh
プログラムをビルドします。
kvm all
できたら、カーネルドライバをビルドします。
cd out/linux.x86/release/bin/src
make
ここで、ドライバをロードし、属性を指定します。オープンソースでないバイナリは、/etc/groupにvboxusersを作って、そのグループだけ動作するようにしているようですが、とりあえずこうしないと動きませんでした。
su
/sbin/insmod ./vboxdrv.ko
chmod a+rw /dev/vboxdrv
exit
一般ユーザになってプログラムを起動します。
cd ..
LD_LIBRARY_PATH=. ./VBoxSVC &
LD_LIBRARY_PATH=. ./VirtualBox
VirtualBoxの画面が出てくると思います。ドライバが使えないと言うエラーが出たら、ちゃんとロードして/dev/vboxdrvがあり、属性が指定してあるか確認してください。
VirtualBoxのサイトでは、DebianとGentooについての記述があって、Fedora Coreでの作成は考慮されていないようなので、けっこう手間がかかりました。

VirtualBoxとWindows Vistaホスト

Windows VistaホストでVirtualBoxをインストールし、実行すると次のようなエラーが出ることがあるそうです。
Failed to create the VirtualBox COM object.
The application will now terminate.
Callee RC: REGDB_E_CLASSNOTREG (0x80040154)
その時は、C:Program FilesInnoTek VirtualBoxに行き、
VBoxSVC /ReRegServer
regsvr32 VBoxC.dll
とすると良いそうです。

VirtualBoxの記事

VirtualBoxのインタビュー記事を見つけた。NewsForgeの日本語訳です。InnoTekは、かなり前から仮想化に取り組んでいたようですね。
「現在、当社が抱えている仮想化のエキスパート集団はヨーロッパで最大の規模を誇る」ですって。すごい自信ですね。
http://opentechpress.jp/enterprise/article.pl?sid=07/01/18/0134249

VirtalBoxのオプション

VirtualBoxで新しいOSを試す時は、次のようにするのが良いそうです。
プログラムの起動は、次のようにします。
VBoxSDL -startvm VM-NAME
VM-NAMEは、VirtualBoxとかで作った名前です。また、そのときにつけるオプションは、
-nopatm
-nocsam
-norawr0
これらのオプションを組み合わせると、QEMUのエミュレーションに近くなるそうです。

VirtualBoxの速さ

ここに、native、VirtualBox、VMwareのスピードを比較した表が載っています。ドイツ語だけど。
VMwareといい線を行っているようです。実機の半分から1/3くらいの速さでしょうか。
http://www.heise.de/open/artikel/83678/1
AcceleratedKnoppixの起動時間は、KDEデスクトップで約1分、icewmデスクトップで約45秒です。でも、Morphixは起動しませんでした。Knoppix 3.8だと約1分20秒くらいでした。
Bochsが第一世代、QEMUが第二世代とすると、VirtualBoxは第三世代のエミュレータかなと思ったりします。オープンソースのプログラムで実用的なスピードでエミュレーションができるのを見るのは、何か楽しかったりします。
それに、サイトにある解説を読んでいると、Intel VT/AMD-Vは、使うと返って遅くなったりするから積極的には使わないんだという記述があったりして面白いです。

VirtualBox

InnoTekから、VirtualBoxという新しいエミュレータがリリースされたようです。
コマーシャルライセンスとオープンソースライセンスのデュアルライセンスです。コマーシャルライセンスのバイナリも個人で使う場合は無料との事です。
対応しているホストはWindowsとLinuxで、バイナリが用意されています。特筆すべきは、MacやOS/2も開発が進んでいるとの事。ゲストは、Windows XP/2000/Vista、Linuxなどですが、OS/2 WarpもIntel VTがあればサポートしているそうです。
InnoTekって、OS/2のドライバを作っていた会社でしたっけ。
オープンソースのほうは機能限定版ですが、自分でビルドできるみたい。ただ、非常に多くのツールを必要としていて、Windowsホストだと、VisualStudioもいるみたいです。今度、作ってみようと思いますけど。
http://www.virtualbox.org/

CD-ROMドライブとリードオンリー

CD-ROMドライブの修正をしました。CreateFileが、管理者のときはリードライトでオープンできるのですが、制限付きユーザーだとリードオンリーでしかオープンできないのが原因でした。0.7.2のときは、openを使っていて問題にならなかったです。
また、CD-ROMのファイルにリードオンリーの属性が付いていると使えない問題も直しています。
某掲示板は、アク禁で使えないのでした。
http://www.h6.dion.ne.jp/~kazuw/qemu-win/qemu-20070114-windows.zip