パソコン(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)をベースとします。
TinyVisor 0.6 (r52) 以下のことを確認済みです。 1. USB メモリに TinyVisor をインストール可能なこと。 2. Linux のファイルシステムに TinyVisor をインストール可能なこと。 3. vm0 のみで OS を起動可能なこと。 4. 次の組み合わせで OS を起動可能なこと。 vm0: Debian GNU/Linux 6.0 (amd64版) vm1: FreeBSD 9.0-RELEASE (amd64版) 5. 次の組み合わせで OS を起動可能なこと。 vm0: FreeBSD 9.0-RELEASE (amd64版) vm1: Debian GNU/Linux 6.0 (amd64版) 6. 次の組み合わせで OS を起動可能なこと。 vm0: Debian GNU/Linux 6.0 (amd64版) vm1: Debian GNU/Linux 6.0 (amd64版) 7. vm1 に以下のI/Oデバイスを割り当て動作すること。 vm1 のOS は Linux とする。 SATA: 玄人志向 SATA312-PCIe (Marvell 88SE9128) NIC: Realtek RTL811DH USB: 玄人志向 USB3.0N4-PCIe (ルネサス uPD720200) VGA: GeForce 8400 GS 8. vm1 に以下のI/Oデバイスを割り当て動作すること。 vm1 のOS は FreeBSD とする。 SATA: 玄人志向 SATA312-PCIe (Marvell 88SE9128) NIC: Realtek RTL811DH お問い合わせは、 tinyvisor-devel@lists.sourceforge.jp 宛にメールを送付してください。
------------------------------------------------------------------------ r43 | yuichi_xy | 2012-06-24 20:46:32 +0900 (日, 24 6月 2012) | 1 line VMCS_IDT_VECTORING_INFO が有効でも、イベントを再度 inject しないようにした。 #28838 参照 ------------------------------------------------------------------------ r44 | yuichi_xy | 2012-06-24 23:56:15 +0900 (日, 24 6月 2012) | 1 line MADT を書き換えて、vm0 に割り当てた論理プロセッサ以外を vm0 の OS から隠すようにした。 #28838 参照。 ------------------------------------------------------------------------ r45 | yuichi_xy | 2012-06-30 20:07:28 +0900 (土, 30 6月 2012) | 1 line r42 の変更内容を元に戻し、VMCS_IDT_VECTORING_INFO が有効な場合は、イベントを再度 inject するようにした。 #28881 参照 ------------------------------------------------------------------------ r46 | yuichi_xy | 2012-06-30 23:31:01 +0900 (土, 30 6月 2012) | 1 line Guest ソフトウェアが、vm に割り当てられた他の全ての論理プロセッサに IPI を送信する時に、ディスティネーション簡略表記を使用可能にした。 #28840 参照 ------------------------------------------------------------------------ r47 | yuichi_xy | 2012-07-01 00:17:58 +0900 (日, 01 7月 2012) | 1 line PIC の IRQ 0 がマスク解除されている間、IRQ 0 (タイマ割り込み) のエミュレーションを行うようにした。 #28885 参照 ------------------------------------------------------------------------ r48 | yuichi_xy | 2012-07-01 22:01:07 +0900 (日, 01 7月 2012) | 1 line Int 15/AH=86h BIOS CALL が指定時間待つときに、 RTC を使用せずに TSC を使用するようにした。 ------------------------------------------------------------------------ r49 | yuichi_xy | 2012-07-08 23:25:25 +0900 (日, 08 7月 2012) | 1 line レガシー割り込みを無効にした状態で HPET を使用可能にした。 #28893 参照。 ------------------------------------------------------------------------ r50 | yuichi_xy | 2012-07-15 23:02:51 +0900 (日, 15 7月 2012) | 1 line シリアルエミュレータを改造し、INTRSTAT レジスタが読み込まれたら、 TBR Empty 割り込み状態をクリアするようにした。 ------------------------------------------------------------------------ r51 | yuichi_xy | 2012-07-16 14:58:07 +0900 (月, 16 7月 2012) | 1 line Makefile の不要な export と不要なマクロを削除。 ------------------------------------------------------------------------ r52 | yuichi_xy | 2012-07-16 15:50:38 +0900 (月, 16 7月 2012) | 1 line Free BSD の GCC (4.2.1 20070831 patched) でコンパイルした際の警告を修正した。た だし、invept をコンパイルできないことや、ld が「unrecognised emulation mode」と いうエラーを発生させてしまうため、 Free BSD 上ではコンパイル可能になっていない。 ------------------------------------------------------------------------