***本記事にはプロモーションが含まれています。***
PhoronixというニュースサイトでBareflankというハイパーバイザーが開発されていることを知りました。
調べていくと、最近いろいろなハイパーバイザーが開発されているようです。今回はそれを紹介します。
ハイパーバイザー
セキュリティーなどに応用するためのプロトタイプを目的とする。C++、STLで書かれている。ユニットテストが完備されていて、Coveralls、Travis CI、Astyleが使われていて、Coverity、Clang Tidy、Google's Sanitizersといったところでコードを分析している。
サポートするのは、SandyBrdge以降のCPU。
ホストOSは、
Ubuntu 16.10
Debian Stretch
Fedora 25, 24
OpenSUSE Leap 42.2
Windows 10
Windows 8.1
少しソースコードを見ると、WindowsホストではCygwinでカーネルドライバーを作るようになっていたり、self signをできるようにしていたりと本格的です。
シンプルなハイパーバイザーを目指しているようです。機能を拡張する方法があるようで、次の2つが挙げられています。
BareflankにVPIDとかMSR bitmapにアクセスするためのAPIなどを提供するもの。
他の人が自分のハイパーバイザーを開発できるように、Bareflankのサポートソフトとして開発されている。
Windows 7 32-bit で、CPUコアは1、メモリ2GBで動作。WinDDKを使っている。3年前に開発が止まっているようです。
Intel x64/EM64T VT-xで動く、シンプルなハイパーバイザー。アセンブリコードは10行、ホストのハイパージャックとアンハイパージャックをサポート。ホストの状態を仮想化できるそうです。EPTとVPIDをサポート。WindowsとUEFI環境で動くそうです。Cのコードは500行、総コード数1700行だとか。
VisualStudio 2015 Update 3で作られる。ミニマルなハイパーバイザーを目指しているそうです。
Intel VT-x上でのハイパーバイザー。rootkitや、侵入検知システム、Windowsカーネルのリバースエンジニアリングを目的とする。
Visual Studio Community 2015 Update 3、Windows SDK、Windows Driver Kitで作られる。
Cで書かれた軽量なx64ハイパーバイザー。WindowsとLinuxホストサポート。WindowsではMinGWを使っています。
まとめ
どれもゲストOSを動かすというより、セキュリティ分野での応用を目指しているようです。CPUのVT-x機能を使う方法など、勉強したい方にはコードが簡単でいいのではないかと思います。VirtualBox、Xen、KVMといったプログラムのコードは複雑ですので。