パソコン(PC)に内臓されているCPUとメモリ、I/Oを分割して各VMに割り当て、OSにそれらを直接制御させることで、ホストOSなしで各OSが独立して動作可能なHypervisor(VMM)を開発するプロジェクトです。
最初の目標は、ひとつのPCでふたつのOSを動作させること、次の目標は各OSを個別に再起動可能にすることでしたが、2014年1月にこれらの目標を達成し、1.0をリリースしました。
OSは、Linux、Windows、FreeBSDが動きます。
VMMはBitVisor(BSDライセンス)をベースとし、AMLインタープリタや標準ライブラリの一部の関数をNetBSDやFreeBSDから移植しています。 Guest BIOSはSeaBIOS(GPL)をベースとします。
VM0でUEFI環境のOSを起動可能にしました。Windows 8.1とFedora 20が起動することを確認しました。VM1はBIOS環境のOSのみ起動可能です。
Fedora 20、Debian 7.0、FreeBSD 10.0、Windows 8.1(VM0のみ)が起動、再起動可能なことなどを確認しています。 詳細は以下を参照してください。
#34742 UEFI環境において、VM0でWindows 8.1を起動すると、シリアルコンソールへVMMのメッセージが出力されなくなる
#34365 VM1で起動したFreeBSDを再起動すると、NICで通信ができない
#33655 VM0でWindows 8.1を再起動すると、ストールすることがある
#32901 VM1でFedora 20を再起動すると、ログイン画面が表示されない
#32660 VM0で起動したFreeBSDを再起動すると、NICで通信ができない
#32404 VM1にCPUを1個しか割り当てずにVM1でFreeBSDを起動しようとすると、NICがリンクアップしない
------------------------------------------------------------------------ r287 | yuichi_xy | 2014-09-27 22:34:53 +0900 (土, 27 9月 2014) | 1 line IOAPIC に論理ディスティネーションモードが指定された場合の、割り込みのエミュレーションに対応した。宛先は、割り込みをトリガする処理が実行された論理プロセッサとした。 #32787 参照 ------------------------------------------------------------------------ r288 | yuichi_xy | 2014-10-08 00:15:13 +0900 (水, 08 10月 2014) | 1 line UEFI 用のブートローダを自動的にビルドできるようにした。install_to_usb.sh で UEFI 用のブートローダと VMM を USB メモリにコピーできるようにした。 #34391 参照 ------------------------------------------------------------------------ r289 | yuichi_xy | 2014-10-12 22:38:32 +0900 (日, 12 10月 2014) | 1 line 未初期化の変数を参照するバグを修正した。 ------------------------------------------------------------------------ r290 | yuichi_xy | 2014-10-13 12:36:17 +0900 (月, 13 10月 2014) | 1 line UEFI で起動時に、VMM 内のメモリマップを初期化するようにした。UEFI で 起動時に、 VM0 の起動コードを格納するバッファを予め確保するようにした。BIOS 起動時しか get_tmpbuf を使えないようなので、mm.c から callrealmode.c へ移動した。 #34391 参照 ------------------------------------------------------------------------ r291 | yuichi_xy | 2014-10-13 17:17:06 +0900 (月, 13 10月 2014) | 1 line OS が IOMMU へアクセスできないようにした。 #34391 参照 ------------------------------------------------------------------------ r292 | yuichi_xy | 2014-10-13 22:29:01 +0900 (月, 13 10月 2014) | 1 line xHCI を VM0 に割り当てた場合は、USB2 port を xHCI へ接続する設定を行わないようにした。 ------------------------------------------------------------------------ r293 | yuichi_xy | 2014-12-06 23:50:34 +0900 (土, 06 12月 2014) | 1 line UEFI で VMM を起動する場合、vmm.elf と同じディレクトリに param.txt ファイルを置くことで、 VMM のパラメータを指定可能にした。 ------------------------------------------------------------------------ r294 | yuichi_xy | 2014-12-07 13:48:29 +0900 (日, 07 12月 2014) | 1 line UEFI 環境で、CPU0 以外の CPU の周波数が異常に小さく認識されてしまうバグを修正した。 ------------------------------------------------------------------------ r295 | yuichi_xy | 2014-12-07 23:43:55 +0900 (日, 07 12月 2014) | 1 line param.txt のサイズが格納される変数を間違えていたため修正した。(Size -> FileSize) ------------------------------------------------------------------------ r296 | yuichi_xy | 2014-12-07 23:51:07 +0900 (日, 07 12月 2014) | 1 line UEFI 環境で、 VM0 以外の VM に割り当てたメモリを UnusableMemory として予約するようにした。UEFI 環境で、 VMM のパラメータが保存された領域をアンマップするときのサイズが間違えていたので修正した。UEFI 環境で、 CPU0 以外の CPU の周波数が異常に小さく表示されてしまうバグを修正した。VMM のパラメータに改行文字が含まれていた場合、空白文字と同じように扱うようにした。 ------------------------------------------------------------------------ r297 | yuichi_xy | 2014-12-14 21:49:19 +0900 (日, 14 12月 2014) | 1 line UEFI 環境で、BSP 以外の論理プロセッサにおいて、 IO ポートのフックの設定が IO ビットマップに反映されない問題を修正した。 #34391 参照 ------------------------------------------------------------------------ r298 | yuichi_xy | 2014-12-14 23:40:09 +0900 (日, 14 12月 2014) | 1 line UEFI 環境でゲスト BIOS をロード可能にしました。 ------------------------------------------------------------------------ r299 | yuichi_xy | 2014-12-21 00:10:18 +0900 (日, 21 12月 2014) | 1 line loadvmm のデバッグメッセージを無効化 ------------------------------------------------------------------------ r300 | yuichi_xy | 2014-12-21 23:10:10 +0900 (日, 21 12月 2014) | 1 line OS が CPUID 命令(EAX=1)で CPU が対応している機能一覧を取得しようとした場合に、 VMM が x2APIC を隠すようにした。CONFIG_VTD_TRANS を 0 にしても、VT-d が無効にならない不具合を修正した。 ------------------------------------------------------------------------ r301 | yuichi_xy | 2014-12-24 21:38:40 +0900 (水, 24 12月 2014) | 1 line UEFI 環境で、VM0 の OS がリセットを要求した場合は、他の VM がシャットダウンすることを待ち合わせてから、マシン全体を再起動するようにした。 ------------------------------------------------------------------------ r302 | yuichi_xy | 2014-12-30 17:30:48 +0900 (火, 30 12月 2014) | 1 line VM0 の OS が S4 への遷移を要求した場合も、シャットダウン処理(他の VM の待ち合わせと電源 OFF)を実行するようにした。 ------------------------------------------------------------------------