VirtualBox OSE版 をビルドする

ここではVirtualBox OSE版のバージョン2.1.4と2.2.2のコンパイル方法を説明します。
バージョン2.1.4と2.2.2の違い、どちらを使ったら良いのかが分からない場合は 仮想PCを活用するを読んで参考にして下さい。

  • バージョン3.0.4がリリースされました。3.0.4のコンパイル方法を追記しました。

VirtualBox OSE版のコンパイル方法は公式にはここ Windows build instructionsに書いてあります。
また、そこに書いてある方法だけでは、なかなかビルドが成功しないので、VirtualBoxのフォーラムへ行くと
Building VirtualBox OSE 2.1.2 on Windows
Building VirtualBox OSE 2.2.0 on Windows (use VS2005)など
既にビルドに成功した人が詳しく手順を書いてくれてます。
ここを読めば比較的簡単にビルド出来ます。

上記リンク先に書かれている内容とほとんど同じになりますが、日本語でもう少し詳しく説明します。

  • バージョン3.0.4のコンパイルは少々苦労しました。
    現地点ではフォーラムにも情報はなく、正常に実行させるまでに時間がかかりましたが成功しましたので情報を追加します。

準備

ビルドには Visual Studio が必要です。私は Visual Studio 2005 Professional Edition を使っています。
現在では2008になっていますがおそらく手順は同じだと思います。
Express EditionというフリーのものもありますがExpress Editionでは全てがビルド出来ないようです。
諦めた方がいいかもしれません。簡単に試しましたがダメでした。
詳しく原因を追及していないのでもしかしたら出来るのかもしれませんが、その方法は分かっていません。
service pack 1が適応されたVisual Studioがインストールされている事を前提で話を進めます。
一例としてダウンロードを行ったサイトもコメントしてありますが、リンクがいつ切れるか分からないです。 Windows build instructionsにも書いてありますし ググってもすぐ見つかるものばかりです。任意の場所からダウンロードして下さい。

  • ビルドする場所を決める
    ビルドを行う適当なフォルダを用意します。
    今回は C:\vboxose\ というフォルダを作りました。
  • Windows Driver Development Kit
    これもインストールするだけの作業です。
    ここWindows Server 2003 DDK から 1830_usa_ddk.iso ファイルをダウンロードしてインストールして下さい。
    私は、CDに焼くのが面倒だったので MagicDisk でマウントしました。
  • DirectX SDK
    これもインストールするだけの作業です。
    ここDirectX Software Development Kit から DXSDK_Nov08.exe ファイルをダウンロードしてインストールして下さい。
  • MinGW
    先に用意したビルドフォルダにMinGWセットアップ用フォルダを用意します。
    MinGW というフォルダを新規に作成して下さい。
    C:\vboxose\MinGWの中に下記5つのファイルを用意します。
    • gcc-core-3.3.1-20030804-1.tar.gz
    • gcc-g++-3.3.1-20030804-1.tar.gz
    • mingw-runtime-3.8.tar.gz
    • w32api-3.12-mingw32-dev.tar.gz
    • binutils-2.13.90-20021006-2.tar.gz
    • mingw32-make-3.81-2.tar.gz
      makeはVirtualBoxのコンパイルに必要ありませんが、3.0.4に必要なcURLというライブラリを準備する際に使用しました。

MinGWのセットアップはtar.gzを展開するだけでいいのでダウンロードしたtar.gzを全て展開して下さい。
ファイル名でググればすぐに見つかります。
私はここsourceforge.jpからダウンロードしました。

  • SDL
    ダウンロードして展開するだけです。
    ここSDL version 1.2.13 (stable) から SDL-devel-1.2.13-VC8.zip ファイルをダウンロードして展開します。
  • libxml2
  • libxslt
    ダウンロードして展開します。後でビルドもします。
    ここIndex of /sources から下記2つのファイルをダウンロードして展開します。
    • libxml2-sources-2.7.3.tar.gz
    • libxslt-1.1.24.tar.gz

バージョン3.0.4には上記2つのライブラリが含まれていますので準備の必要はありません。

  • Qt4
    ダウンロードして展開します。後でビルドもします。
    ここftp.trolltech.no から下記2つのファイルをダウンロードして展開します。

    ※今回はQt4で進めますが このqt-win-3.3.x-8 Qt3でも2.1.4をビルドした時は問題なく完成しました。
  • VirtualBox
    最後にVirtualBox本体です。2.1.4か2.2.2を使うと思いますが、ここ download.virtualbox.orgに過去にリリースされた全てのバージョンがあります。
    • VirtualBox-2.1.4-3-OSE.tar.bz2
    • VirtualBox-2.2.2-OSE.tar.bz2
      どちらかをダウンロードして展開します。

ここまで作業を進めると下記のようなディレクトリツリーが出来ていると思います。
これはあくまで一例です。configureでパスを指定しますので任意の構成でファイルを準備して下さい。

--- C:\
    +--- Program Files\
    |   +--- Microsoft DirectX SDK (November 2008)
    |   +--- Microsoft Platform SDK for Windows Server 2003 R2
    |   +--- Microsoft Visual Studio 8\VC
    +--- WINDDK\
    |   +--- 3790.1830
    +--- Python26\     <--- 2.2.2の時のみ必要
    +--- vboxose\
        +--- libxml2-2.7.3
        +--- libxslt-1.1.24
        +--- MinGW
        +--- qt-win-opensource-src-4.4.3
        +--- SDL-1.2.13
        +--- VirtualBox-2.1.4_OSE   <--- 2.1.4の場合
        +--- VirtualBox-2.2.2_OSE   <--- 2.2.2の場合

準備2(必要な周辺ライブラリのビルド)

まずはコンソール画面、いわゆるDOS窓を開きます。
ここで注意です。「スタート-プログラム-アクセサリ-コマンドプロンプト」を使わないこと。
ここで使うのは「スタート-プログラム-Microsoft Visual Studio 2005-Visual Studio Tools-Visual Studio 2005 コマンド プロンプト」 を開いてください。VCコンパイラに必要な環境変数がいくつかセットされます。
※以降タイプするコマンドの例中に「^」が出てきますがこれは長いコマンドを複数行で書く為に「^」で折り返しています。
Linuxコンソールでは「\」を使いますがWindowsでは「^」なんです。こうすると見やすい上にコピペもできるので便利なんです。

  • libxml2のビルド
    cd C:\vboxose\libxml2-2.7.3            <--ディレクトリの移動
    cscript configure.js iconv=no          <--コンフィグ
    nmake /f Makefile.msvc                 <--ビルド
    nmake /f Makefile.msvc install         <--インストール
    copy win32\bin\libxml2.dll win32\lib\  <--コピー
    この5つのコマンドを実行すればいいだけです。
    のはずなのですが、私の場合
    なぜか testapi.c の 294 行目が文字化けしていてコンパイルエラーが出ました。
    294:    if (no == 2) return((xmlChar) ' ');
    のように修正。こうすることが正しいのかどうか不明ですがビルドを通す為に手抜きしました。 きちんと解凍すれば問題ないかと。
    最後のコピーは忘れずに行って下さい、VirtualBoxはビルド時にlibフォルダに無いとエラーになってしまいます。
  • libxsltのビルド
    cd C:\vboxose\libxslt-1.1.24              <--ディレクトリの移動
    cscript configure.js iconv=no ^
    include=C:\vboxose\libxml2-2.7.3\win32\include ^
    lib=C:\vboxose\libxml2-2.7.3\win32\lib    <--コンフィグ
    nmake /f Makefile.msvc                    <--ビルド
    nmake /f Makefile.msvc install            <--インストール
    copy win32\bin\libxslt.dll win32\lib\     <--コピー
    この5つのコマンドを実行すればいいだけです。
    最後のコピーは忘れずに行って下さい、VirtualBoxはビルド時にlibフォルダに無いとエラーになってしまいます。

  • Qt4のビルド
    cd C:\vbox214ose\qt-win-opensource-src-4.4.3          <--ディレクトリの移動
    configure -release -shared -no-fast -exceptions -accessibility -stl -no-sql-sqlite ^
    -no-qt3support -no-opengl -no-dsp -no-vcproj -no-incredibuild-xge -qmake -process ^
    -rtti -no-mmx -no-3dnow -no-sse -no-sse2 -no-openssl -no-dbus -no-phonon ^
    -no-phonon-backend -no-webkit -no-assistant-webkit -arch windows ^
    -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique ^
    -qt-style-cleanlooks -no-style-motif -no-style-cde    <--コンフィグ
    ライセンスに同意しますか?
    と聞いてきますので「y」を回答すると数分後、
    Qt is now configured for building. Just run nmake.
    To reconfigure, run nmake confclean and configure.
    と表示されます。ので指示に従い
    namke
    とタイプします。ビルドは少し時間がかかりますがこれで準備完了です。
    私のノートパソコン(1.5GHz)では70分でした。

2.1.4のコンパイル

  • ディレクトリの移動
    まずはディレクトリを移動します。
    cd C:\vboxose\VirtualBox-2.1.4_OSE

  • configure.vbsの修正
    次にconfigureファイルを一部修正します。
    configure.vbs の 1676 行目の
    if LogFindFile(strPathXml2, "lib/libxml2.lib") then
    if LogFindFile(strPathXml2, "lib/libxml2.lib") <> "" then
    とします。
    さらに、1794 行目と 1797 行目の
             if CheckForQtWinFreeSub(strOptQt) then
                 strPathQt = strOptQt
                 blnQtWinFree = True
             end if
    '        if CheckForQtWinFreeSub(strOptQt) then
                 strPathQt = strOptQt
                 blnQtWinFree = True
    '        end if
    と修正します。

  • configureの実行
    cscript configure.vbs ^
    --with-MinGW="C:\vboxose\MinGW" ^
    --with-libSDL="C:\vboxose\SDL-1.2.13" ^
    --with-libxslt="C:\vboxose\libxslt-1.1.24\win32" ^
    --with-libxml2="C:\vboxose\libxml2-2.7.3\win32" ^
    --with-DXSDK="C:\Program Files\Microsoft DirectX SDK (November 2008)" ^
    --with-Qt="C:\vboxose\qt-win-opensource-src-4.4.3" ^
    --with-DDK=C:\WINDDK\3790.1830 ^
    --with-VC="C:\Program Files\Microsoft Visual Studio 8\VC"
    必要なオプションを指定してconfigureを行います。

  • AutoConfig.kmkの修正
    次にAutoConfigファイルを一部修正します。
    AutoConfig.kmk をエディタで開いて
    SDK_VBOX_LIBXML2_LIBS  := C:/vboxose/libxml2-2.7.3/win32/lib/libxml2.lib
    SDK_VBOX_LIBXSLT_LIBS   := C:/vboxose/libxslt-1.1.24/win32/lib/libxslt.lib
    という2か所を見つけ、
    SDK_VBOX_LIBXML2_LIBS  := C:/vboxose/libxml2-2.7.3/win32/lib/libxml2_a.lib
    SDK_VBOX_LIBXSLT_LIBS   := C:/vboxose/libxslt-1.1.24/win32/lib/libxslt_a.lib
    それぞれのファイル名に「_a」を付加します。
    さらに最後の行に
    VBOX_WITH_QTGUI := 
    PATH_SDK_QT4 := C:/vboxose/qt-win-opensource-src-4.4.3
    を追加します。
    Qt3を使った場合は最後の部分を
    PATH_SDK_QT3           := C:/vboxose/qt-3.3.x-p8
    PATH_TOOL_QT3_BIN      := C:/vboxose/qt-3.3.x-p8/bin
    VBOX_WITH_QT4GUI       :=
    として下さい。

  • 空のMakefileを1本作成
    echo. > C:\vboxose\VirtualBox-2.1.4_OSE\src\VBox\Additions\WINNT\Installer\Makefile.kmk
    サブのMakefileが1本足りないようなので追加しておきます。

  • env.batを実行
    env.bat
    configureを行うとenv.batが生成されます。
    後に、どんなオプションでconfigureを行ったのか忘れてしまった場合はこのファイルの中を見ればコメントとして オプション引数が残っています。
  • Qtへのパスを登録
    Qtのツールmocやqmakeが使えるように
    set PATH=%PATH%;c:\vboxose\qt-win-opensource-src-4.4.3\bin;
    とパスを追加します。
    Qt3を使った場合は
    set PATH=%PATH%;c:\vboxose\qt-3.3.x-p8\bin;
    となります。

  • ビルド
    いよいよビルド開始です。
    kmk
    ビルドが開始されます。そんなに時間はかかりません。
    私のノートパソコン(1.5GHz)では30分かからない程度でした。

2.2.2のコンパイル

  • Python のインストール
    2.2.2のコンパイルにはPythonが必要です。
    ここからPython標準リリース Windows用インストーラ python-2.6.1.msi をダウンロードしてインストールして下さい。

  • ディレクトリの移動
    ディレクトリを移動します。
    cd C:\vboxose\VirtualBox-2.2.2_OSE

  • configureの実行
    cscript configure.vbs ^
    --with-MinGW="C:\vboxose\MinGW" ^
    --with-libSDL="C:\vboxose\SDL-1.2.13" ^
    --with-libxslt="C:\vboxose\libxslt-1.1.24\win32" ^
    --with-libxml2="C:\vboxose\libxml2-2.7.3\win32" ^
    --with-DXSDK="C:\Program Files\Microsoft DirectX SDK (November 2008)" ^
    --with-Qt4="C:\vboxose\qt-win-opensource-src-4.4.3" ^
    --with-DDK=C:\WINDDK\3790.1830 ^
    --with-VC="C:\Program Files\Microsoft Visual Studio 8\VC"
    必要なオプションを指定してconfigureを行います。

  • AutoConfig.kmkの修正
    次にAutoConfigファイルを一部修正します。
    AutoConfig.kmk をエディタで開いて
    SDK_VBOX_LIBXML2_LIBS  := C:/vboxose/libxml2-2.7.3/win32/lib/libxml2.lib
    SDK_VBOX_LIBXSLT_LIBS   := C:/vboxose/libxslt-1.1.24/win32/lib/libxslt.lib
    という2か所を見つけ、
    SDK_VBOX_LIBXML2_LIBS  := C:/vboxose/libxml2-2.7.3/win32/lib/libxml2_a.lib
    SDK_VBOX_LIBXSLT_LIBS   := C:/vboxose/libxslt-1.1.24/win32/lib/libxslt_a.lib
    それぞれのファイル名に「_a」を付加します。
    さらに最後の行に
    VBOX_BLD_PYTHON=C:/Python26/python.exe
    を追加します。

  • env.batを実行
    env.bat
    configureを行うとenv.batが生成されます。
    後に、どんなオプションでconfigureを行ったのか忘れてしまった場合はこのファイルの中を見ればコメントとして オプション引数が残っています。

  • ビルド
    ビルド開始です。
    kmk
    ビルドが開始されます。そんなに時間はかかりません。
    私のノートパソコン(1.5GHz)では23分程度でした。

VirtualBox OSE版 をインストールする

ビルドが成功すると

C:\vboxose\VirtualBox-2.x.x_OSE\out\win.x86\release\bin

というディレクトリの中に必要なファイルが生成されています。

  • Qtファイルをコピー
    Qtをビルドしたフォルダのbinの中
    C:\vboxose\qt-win-opensource-src-4.4.3\bin
    から下記の3つのDLLをVirtualBox.exeがあるフォルダへコピーします。
    QtCore4.dll
    QtNetwork4.dll
    QtGui4.dll

  • インストール
    インストールというか単に必要ファイルのコピーをします。
    例えば、
    C:\Program Files\VirtualBoxOSE
    というフォルダを作ってファイルをコピーします。
    もちろん、コピーしないでビルド直後のbinフォルダでも問題ないです。
--- C:\
    +--- Program Files\
        +--- VirtualBoxOSE\
            +--- SUPInstall.exe
            +--- SUPLoggerCtl.exe
            +--- SUPUninstall.exe
            +--- VBoxBFE.exe
            +--- VBoxHeadless.exe
            +--- VBoxManage.exe
            +--- VBoxNetDHCP.exe
            +--- VBoxSDL.exe
            +--- VBoxSVC.exe
            +--- VirtualBox.exe
            +--- comregister.cmd
            +--- QtCore4.dll
            +--- QtGui4.dll
            +--- QtNetwork4.dll
            +--- SDL.dll
            +--- VBoxC.dll
            +--- VBoxDD.dll
            +--- VBoxDD2.dll
            +--- VBoxDDU.dll
            +--- VBoxGuestPropSvc.dll
            +--- VBoxOGLhostcrutil.dll
            +--- VBoxOGLhosterrorspu.dll
            +--- VBoxOGLrenderspu.dll
            +--- VBoxREM.dll
            +--- VBoxREM32.dll
            +--- VBoxREM64.dll
            +--- VBoxRT.dll
            +--- VBoxSettings.dll
            +--- VBoxSharedClipboard.dll
            +--- VBoxSharedCrOpenGL.dll
            +--- VBoxSharedFolders.dll
            +--- VBoxVMM.dll
            +--- msvcp80.dll
            +--- msvcr80.dll
            +--- VBoxDD2GC.gc
            +--- VBoxDDGC.gc
            +--- VMMGC.gc
            +--- VBoxDD2R0.r0
            +--- VBoxDDR0.r0
            +--- VMMR0.r0
            +--- nls\
                +--- qt_ja.qm
                +--- VirtualBox_ja.qm

こんな感じにしました。
※上記Treeは日本語ファイルのみコピーしています。他の言語もコピーすれば選択できるようになります。

  • セットアップ
    コピーしただけでは動きません。
    以下のコマンドを実行します。
    cd C:\Program Files\VirtualBoxOSE
    comregister.cmd
    SUPUninstall.exe
    SUPInstall.exe
    これでセットアップも終了です。

VirtualBox.exeを実行すればGUIでのVirtualBoxがスタートします。

仮想PCを活用するに戻る