QEMUとNVMMによるハイパーバイザの利用
NVMMとは
NVMM(NetBSD Virtual Machine Monitor)はNetBSD x86_64アーキテクチャ上でハイパーバイザを提供するNetBSDカーネルの機能です。Xenと同じくNetBSDのソースコードに取り込まれているハイパーバイザですが、Xenと違いゲスト仮想マシン用のカーネル(Domain-U)を別途用意しなければならなかったり、ホスト側のカーネルがマルチコアに対応していたりしないわけではありません。LinuxカーネルのKVMやNetBSDのHAXMと同じく、ハードウェア仮想化にQEMUを用いて、QEMUのプラグインとしてハードウェアアクセラレーション(hardware-acceleration)を使うことになります。
2019年11月16日時点で最新のNetBSD 8.1では、NVMMはまだ提供されていません。したがっていまNVMMを試してみたいならcurrentブランチかnetbsd-9ブランチをチェックアウトするしかありません。本稿の内容は2019年10月19日にビルドしたNetBSD 9.99.17を使って確認しています。
NVMMのインストール
NetBSDカーネルとモジュールのビルド
標準ではNVMMの疑似デバイス(pseudo-device)は有効になっていません。GENERICカーネルを使う場合、sys/arch/amd64/conf/GENERIC
を次のように編集してください。
--- a/sys/arch/amd64/conf/GENERIC Sat Oct 19 14:42:30 2019 +0000
+++ b/sys/arch/amd64/conf/GENERIC Sat Nov 16 12:15:37 2019 +0900
@@ -1153,7 +1153,7 @@
pseudo-device lockstat # lock profiling
pseudo-device bcsp # BlueCore Serial Protocol
pseudo-device btuart # Bluetooth HCI UART (H4)
-#pseudo-device nvmm # NetBSD Virtual Machine Monitor
+pseudo-device nvmm # NetBSD Virtual Machine Monitor
# wscons pseudo-devices
pseudo-device wsmux # mouse & keyboard multiplexor
カーネルのビルドに成功したら、カーネルを入れ替えてOSを再起動してください。カーネルモジュールをロードする必要があるため、build.sh
はdistributionまで作ってinstall=/
するのが確実です(modules
オペレーションでモジュールだけビルドするのもいいです)。再起動後正しくOSが立ち上がれば、modload(8)
でnvmm
カーネルモジュールを読み込んでください。
modload /stand/amd64/9.99.17/modules/nvmm/nvmm.kmod
qemu-nvmmパッケージのインストール
上記の操作によってNetBSDカーネル側でNVMMを使う準備は完了しましたが、QEMUからNVMMをプラグインとして使う準備はまだできていません。NVMMを使えるようになるパッチが当たったQEMUをビルドし、システムにインストールする必要があります。
pkgsrc(8)
からwip/qemu-nvmmパッケージをインストールします。pkgsrc-2019Q3時点では、このパッケージはまだ提供されていません。そこで、pkgsrc-wipをインストールし、そこからこのパッケージをビルドしインストールします。ここではpkgsrc-wipのインストール手順を省略します。公式Webページを参照してください。
イパッケージのンストール方法はpkgsrc(8)
と同じです。pkgsrc(8)
のemulators/qemuパッケージがすでにインストールされているなら、それをpkg_delete(1)
で削除してください。
cd wip/qemu-nvmm
make install clean clean-depends
使い方
実行すべきコマンドラインについては『QEMUとHAXMによるハイパーバイザの利用』を参照してください。HAXMとの違いは、accel
オプションにnvmm
を指定する点です。動作テスト済みのゲストOSの一覧は『NVMM』に載っています。
参考文献
- Maxime Villard, NVMM
- NVMMの公式なプロジェクトページです。
- Maxime Villard, From Zero to NVMM
- NVMMの作者VillardによるNVMMの解説記事です。
- The pkgsrc-wip project