LoginSignup
9
7

More than 5 years have passed since last update.

BitVisor のコンパイル

Last updated at Posted at 2015-12-08

Linux, Windows, Mac で BitVisor をコンパイルする方法を紹介します。

Linux

まずはコンパイル環境を整えます。

Fedora の場合は以下のとおりです。

$ sudo dnf -y install mercurial make gcc mingw64-gcc

CentOS の場合は以下のとおりです。

$ sudo yum -y install mercurial make gcc epel-release
$ sudo yum -y --enablerepo=epel install mingw64-gcc

Ubuntu の場合は以下のとおりです。

$ sudo apt-get -y install mercurial make gcc mingw-w64

次に、BitVisor の最新版を BitBucket から取得してコンパイルします。

$ hg clone https://bitbucket.org/bitvisor/bitvisor
$ cd bitvisor
$ make
$ make -C boot/loader
$ make -C boot/uefi-loader

以下のファイルが生成されていたら成功です。

  • bitvisor.elf
  • boot/loader/bootloader
  • boot/loader/bootloaderusb
  • boot/uefi-loader/loadvmm.efi

とても簡単ですね。

Windows

ここでは MSYS2 を使った方法を紹介します。

まずは、下記の「MSYS2 installer」のページに従って MSYS2 をインストールしてください。64bit版 (msys2_x86_64-????????.exe) を選択します。
http://msys2.github.io/

インストールされた「MSYS2 Shell」を起動して、コマンドプロンプトを表示します。

次に、クロスコンパイラをインストールするための設定をします。下記のページにある crossgcc を使用します。
http://osdn.jp/projects/msys2-crossgcc/

(1) /etc/pacman.conf に crossgcc のリポジトリを追記します。

$ cat >> /etc/pacman.conf
[crossgcc]
SigLevel = Optional TrustAll
Server = http://osdn.dl.osdn.jp/msys2-crossgcc/62918
(Ctrl+Dを入力)

(2) パッケージ一覧を更新してから、必要なパッケージをインストールします。

$ pacman -Sy
$ pacman -S make wget patch x86_64-elf-gcc gcc

次に BitVisor の最新版を BitBucket から取得します。mercurial がシンボリックリンクをうまく扱えないようなので、zip ファイルをダウンロードします。URL は下記の BitBucket のダウンロードのページから最新のものを取得して、ファイル名を適宜調整してください。
https://bitbucket.org/bitvisor/bitvisor/downloads

$ wget https://bitbucket.org/bitvisor/bitvisor/get/dd0b81c76707.zip
$ unzip dd0b81c76707.zip
$ cd bitvisor-bitvisor-dd0b81c76707

アセンブラが古いので、以下のようにパッチを当てます。

$ patch -p1 -s
--- a/boot/loader/bootloaderusb.s   2015-12-08 00:00:00.000000000 +0900
+++ b/boot/loader/bootloaderusb.s   2015-12-08 00:00:00.000000000 +0900
@@ -194,7 +194,7 @@
    # Make a multiboot info
    lea 4(%bp),%edi
    push    %edi            # Clear multiboot info
-   lea 88/4(%eax),%ecx
+   lea 22(%eax),%ecx
    rep stosl
    pop %ebx
    mov %dl,15(%ebx)        # Write a drive number
(Ctrl-Dを入力)

最後に、適宜クロスコンパイラを指定して、コンパイルします。

$ make CC=x86_64-elf-gcc
$ make CC=x86_64-elf-gcc -C boot/loader
$ make EXE_CC=gcc -C boot/uefi-loader

以下のファイルが生成されていたら成功です。

  • bitvisor.elf
  • boot/loader/bootloader
  • boot/loader/bootloaderusb
  • boot/uefi-loader/loadvmm.efi

Mac

ここでは MacPorts を使った方法を紹介します。

下記のページに従って、MacPorts をインストールします。
https://www.macports.org/install.php

  1. Xcode 及び Xcode Command Line Tools のインストール
  2. Xcode のライセンス同意
  3. OS X のバージョンに合った MacPorts のインストール

必要なパッケージをインストールします。

$ sudo port install mercurial x86_64-elf-gcc wget

クロスコンパイラをダウンロードして展開します。

$ mkdir mingw64-gcc
$ cd mingw64-gcc
$ wget http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Automated%20Builds/mingw-w64-bin_i686-darwin_20130622.tar.bz2
$ tar xvf mingw-w64-bin_i686-darwin_20130622.tar.bz2

BitVisor の最新版を BitBucket から取得します。また、アセンブラが古いのでパッチを当てます。

$ hg clone https://bitbucket.org/bitvisor/bitvisor
$ cd bitvisor
$ patch -p1 -s
--- a/boot/loader/bootloaderusb.s   2015-12-08 00:00:00.000000000 +0900
+++ b/boot/loader/bootloaderusb.s   2015-12-08 00:00:00.000000000 +0900
@@ -194,7 +194,7 @@
    # Make a multiboot info
    lea 4(%bp),%edi
    push    %edi            # Clear multiboot info
-   lea 88/4(%eax),%ecx
+   lea 22(%eax),%ecx
    rep stosl
    pop %ebx
    mov %dl,15(%ebx)        # Write a drive number
(Ctrl-Dを入力)

クロスコンパイラを用いてコンパイルします。

$ make CC=x86_64-elf-gcc AR=x86_64-elf-ar OBJCOPY=x86_64-elf-objcopy SIZE=x86_64-elf-size
$ make CC=x86_64-elf-gcc -C boot/loader
$ make EXE_CC=~/mingw64-gcc/bin/x86_64-w64-mingw32-gcc -C boot/uefi-loader

以下のファイルが生成されていたら成功です。

  • bitvisor.elf
  • boot/loader/bootloader
  • boot/loader/bootloaderusb
  • boot/uefi-loader/loadvmm.efi

※12/9: Mac での loadvmm.efi の生成方法を追記

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7