BHyVeを使ってみよう!
目次
BHyVeとは?
- "BSD hypervisor"(BSDハイパーバイザー)の略
- FreeBSD向けに開発されたレガシーフリーなハイパーバイザー(Hypervisor)/仮想マシンマネージャ
- bhyveは、拡張ページテーブル(Extednded Page Tables, EPT)やvirtio(VirtIO)ネットワーク/ストレージドライバのようなモダンなCPUの仮想化支援機能を利用する
- FreeBSD入門
使ってみる
- 実際やってみて色々つまずいたので,ここにメモする.
実行環境
- MacOS X El Capitan v10.11.5
- VMWare Fusion v8.1.1
- FreeBSD v10.3-RELEASE
VMWare Fusionを使う理由
- BHyVeはVT-x(CPU仮想化機能)とEPT(メモリ仮想化機能)が必須となっている
- なので,EPTをサポートしてないVirtualBoxは使えない.
手順
1.まず,VMWare FusionにFreeBSDを入れる.
私はFreeBSD-10.3-RELEASE-amd64-disc1.iso
を入れた.
2.インストールしたのち,一度シャットダウンし,
設定→プロセッサとメモリ→詳細オプション→この仮想マシンでハイパーバイザアプリケーションを有効にする
にチェックを入れる
これでVT-xとEPTを有効にする.
3.次にrootでログインする.
rootでログインしないと後にOperation not permitted
となり,実行できない.
4.FreeBSDにディスクイメージをダウンロードする.
ftpをfetchでもできるが,自分はできなかったのでホストマシンから転送した.
方法は下記に記載.
5.kldload vmm
でBHyVeカーネルモジュールをロードする.
kldstat
でvmm.koが追加されていればOK.
6.ifconfig tap0 create
でゲストオペレーティングシステムが使用するネットワークインターフェースを作成する.
ifconfig tap0
で確認する.
7.sysctl net.link.tap.up_on_open=1
でtap0をオープンする.
8.ifconfig bridge0 create
でブリッジを作成する.
9.ifconfig
でホストの物理ネットワークインタフェースを確認する.
自分はem0
だった.
10.ifconfig bridge0 addm <9の名前> addm tap0 up
でtapインターフェース経由でネットワークにアクセスできるように,ブリッジに実際に利用できるネットワークインターフェースと,先ほど作成したtapインターフェースの双方を追加する.
11.truncate -s 16G guest.img
で空のimgファイルを作成する.
12.sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d guest.img -i -I FreeBSD-10.3-RELEASE-amd64-disc1.iso <vmName>
でディスクをBHyVeで実行する.
-c
で仮想CPUの数を指定.
-m
でメモリの大きさを指定
-t
で使うtapデバイスを指定
-d
で使うイメージディスクを指定
-i
でイメージディスクからブートすることを示す
-I
でどのイメージディスクを使うかを指定
最後に仮想マシンの名前を指定
次からはsh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d guest.img <vmName>
で実行可能
MacからFreeBSDにディスクイメージを転送する.
1.FreeBSDでifconfig
を使い,IPアドレスを確認する.
2.scp FreeBSD-10.3-RELEASE-amd64-disc1.iso <IPアドレス>:
でファイルを転送する.
3.私はFreeBSDの/home/<ユーザ名>/FreeBSD-10.3-RELEASE-amd64-disc1.iso
に置かれていた.
参考ページ
1.FreeBSD as a Host with bhyve Prev Chapter 21.Virtualization
2.使ってみようハイパーバイザbhyve