BHyVeとは?

みなさんこんにちは.Pyenteです. さて,今回のお題は大学の時に触ったBHyVeという仮想マシンマネージャのことです. Memoがあったのでそのままブログに…

仮想マシンを触るに当たってまぁやる必要は皆無だと思いますが,何事も経験だと思うので,このページに訪れた人はやってみるのも一興かもしれません. しかし,環境が…今更ながらわざわざVMWare Fusion使っている人いるのか?Virtual Boxで事足りる気がするが…

目次

BHyVeとは?

  • "BSD hypervisor"(BSDハイパーバイザー)の略
  • FreeBSD向けに開発されたレガシーフリーなハイパーバイザー(Hypervisor)/仮想マシンマネージャ
  • bhyveは、拡張ページテーブル(Extednded Page Tables, EPT)やvirtio(VirtIO)ネットワーク/ストレージドライバのようなモダンなCPUの仮想化支援機能を利用する
  • FreeBSD入門

使ってみる

  • 実際やってみて色々つまずいたので,ここにメモする.

実行環境

VMWare Fusionを使う理由

  • BHyVeはVT-x(CPU仮想化機能)とEPT(メモリ仮想化機能)が必須となっている
  • なので,EPTをサポートしてないVirtualBoxは使えない.

手順

1.まず,VMWare FusionFreeBSDを入れる. 私はFreeBSD-10.3-RELEASE-amd64-disc1.isoを入れた.

2.インストールしたのち,一度シャットダウンし, 設定→プロセッサとメモリ→詳細オプション→この仮想マシンでハイパーバイザアプリケーションを有効にするにチェックを入れる これでVT-xとEPTを有効にする. スクリーンショット 2016-06-11 20.19.36.png

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.FreeBSDifconfigを使い,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

ifconfig…うっ,頭が… あの頃は何も知らずによくやったものだとあの頃の自分を褒めてやりたいですねw さて,今回はここまで! ではではー