パソコン(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)をベースとします。
Fedora 24、Debian 8、FreeBSD 10.3、Windows 10(VM0のみ)が起動、再起動可能なことなどを確認しています。 詳細は以下を参照してください。
次の問題があります。
VMM
リビジョン: 245:6b537a3de727 タグ: tip ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sun Nov 13 17:07:57 2016 +0900 要約: TTY_SERIAL を有効にすると、画面とシリアルコンソールの両方にメッセージを出力し、TTY_SERIAL を無効にすると、画面のみにメッセージを出力するようにした。 リビジョン: 244:47e4b09fa4b9 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sat Oct 29 23:11:04 2016 +0900 要約: VM1 の OS が IO port 0x64 (KBD CMD) を読み込んだ時に不定値を返すバグを修正した。 リビジョン: 242:48b223ea78dd ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sat Oct 15 23:29:33 2016 +0900 要約: df64c61f21c1 以降、IOMMU が 1 つも存在しないと、 ASSERT に失敗して panic するようになったため、VM 0 しか存在しない場合は ASSERT に失敗しないよう修正した。 リビジョン: 241:ee2406fd2537 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Wed Oct 12 21:55:11 2016 +0900 要約: Intel Core i7-800 や i7-500 には VT-d の IOMMU が 2 つ存在するが、2 つ目の IOMMU を有効化していなかったため、有効化するようにした。 リビジョン: 240:7088ef9b2615 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Mon Oct 10 22:25:06 2016 +0900 要約: EPT 対応だが unrestricted guest 非対応の CPU でのメモリ使用量を節約するため、 SPT1 をデフォルトにした。 リビジョン: 239:5b8a7190c10d ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Mon Oct 10 22:01:19 2016 +0900 要約: メモリ不足時に ASSERT 失敗のメッセージで panic するのではなく、 "Out of memory" のメッセージで panic するようにした。 リビジョン: 236:0c025cefee02 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sun Oct 09 19:59:08 2016 +0900 要約: INIT 関数呼び出し時のデバッグメッセージで空ページ数を出力するようにした リビジョン: 235:dac8057f313e ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sun Oct 09 19:20:01 2016 +0900 要約: pci_restrict_access というメッセージを削除した。 リビジョン: 234:61ef496a261d ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sun Oct 09 18:07:29 2016 +0900 要約: デバイスを VM に割り当てる時は、全ての IOMMU の Context Table を更新するようにした。IOMMU や IOPT の lock 処理を見直した。起動時に、 io-domain の情報を出力するようにした。 リビジョン: 233:70d496d5c7ad ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Mon Sep 19 17:44:01 2016 +0900 要約: UEFI のゲスト BIOS を使用し、かつ、割り当てたメモリの量が少なく 4GB 以上のアドレスにメモリがマップされなかった場合に、 RTC (CMOS) で取得するメモリ量が不正になっていたバグを修正した。 リビジョン: 232:190fa71a1603 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sat Sep 17 21:00:27 2016 +0900 要約: TTY_SERIAL を有効にしても、 VMM のメッセージを画面にも出力するようにした。 TTY_SERIAL を無効にしても、シリアルコントローラの IO port をフックし、ACPI の _DIS を無効にするようにした。 リビジョン: 231:a5072d936d56 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sat Sep 17 20:34:01 2016 +0900 要約: IOMMU が対応している IO ページテーブルのレベルが異なる場合に対応した。 リビジョン: 230:25b1818336f9 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sun Jul 24 07:13:27 2016 +0900 要約: PCI デバイスが持つ MMIO リソースのアドレスを、IOMMU の IOPT に登録するようにした。 リビジョン: 229:8561331acce6 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sat Jul 23 23:54:45 2016 +0900 要約: IOPT の更新時に IOMMU のキャッシュをフラッシュするか否かを、全ての IOMMU の Capability レジスタを参照して決めるようにした。Supported Adjusted Guest Address Width も、全ての IOMMU を確認するようにした。 リビジョン: 228:df64c61f21c1 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Sat Jul 23 11:33:07 2016 +0900 要約: 明示的に VM に割り当てたPCIデバイスの source id 以外の source id を持つ DMA については、VM0 のメモリにアクセスするようにした。 Root Entry や Context Entry、 IO PTE の更新前にゼロクリアをするようにした。 リビジョン: 227:5627072bf66f ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Wed Jul 20 23:23:56 2016 +0900 要約: VM0 以外の VM も 2MB EPT ページに対応した。割り当てたデバイスの MMIO リソースが 4KB 以下の場合、GP2HP で変換不可にした。 リビジョン: 226:bb13be786efc 親リビジョン: 211:892c703b53e5 親リビジョン: 225:cf65f2b45794 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Tue Jul 19 22:13:22 2016 +0900 要約: 最新の BitVisor の改造を TinyVisor へマージした。 リビジョン: 211:892c703b53e5 ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Mon Jul 18 14:43:00 2016 +0900 要約: snprintf のフォーマット文字列としてユーザの入力文字列を指定しているバグを修正した。
ゲストBIOS
リビジョン: 17:d2cda9308731 親リビジョン: 15:51e62c37761c 親リビジョン: 16:1c90f0440f5e ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Thu Jul 28 22:01:33 2016 +0900 要約: SeaBIOS 1.9.3 をマージした リビジョン: 16:1c90f0440f5e ブランチ: upstream 親リビジョン: 10:de0b91ffe31a ユーザ: Yuichi Watanabe <yuichi_xy@ybb.ne.jp> 日付: Thu Jul 28 21:59:02 2016 +0900 要約: SeaBIOS 1.9.3 を登録