パソコン(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)をベースとします。
IvyBridge 世代の PC で TinyVisor および OS を起動可能にしました。
vm1 の再起動時、vm1 に割り当てられたデバイスをリセットするようにしました。
gcc (4.7.2) でコンパイル可能にしました。
Guest BIOS のベースを SeaBIOS 1.7.3 にアップデートしました。
その他、バグ修正。
#31926 vm0 と vm1 を作成した時に vm1 側で AHCI タイムアウトが発生し OS が起動しない
#31925 Qemu上でTinyvisorを起動したところ、Linuxが起動しない
#31923 vm1 の Linux を再起動しようとしたところ、General Protection Fault
#31858 4GB以上のメモリをvm1に割り当てると、Linux が起動中にストールする
#31857 4GB境界を跨ぐメモリをvm1に割り当てると、vm1の再起動時にAHCIがタイムアウト する
#31392 vm1のFreeBSDを再起動すると、AHCIの初期化に失敗する
#30457 複数のCPUを生成したQEMU上でTinyVisorを動作させると、Guest Linuxがsoft lockupのエラー
#29706 vm0 を GRUB で止めている状態で、 vm1 を起動しシャットダウンすると、0x0F の割り込みが発生し VMM がパニック
#29240 VMM起動後のGRUB画面で、Ctrl+ALT+DELを入力すると、VMMがpanic
#29191 USBメモリにVMMとGRUBを書き込んでみたところ、panic
#28765 boot_drive=81でOSの起動したところ、General protection faultが発生し panic
------------------------------------------------------------------------ r93 | yuichi_xy | 2013-07-04 23:45:34 +0900 (木, 04 7月 2013) | 1 line OS が xsetbv 命令を実行して VMexit が発生した場合、ハイパーバイザが代わりに実行 するようにした。OS が CR4 の OSXSAVE ビットを設定した場合、Host の CR4 の OSXSAVE ビットも設定するようにした。VMM を移動するために move_vmm_area64 を呼ぶと原因 不明のリセットされるので、memcpy に変更。 #31580 参照 ------------------------------------------------------------------------ r94 | yuichi_xy | 2013-07-06 08:50:59 +0900 (土, 06 7月 2013) | 1 line 不明な DMAR Structure が存在するときに DMAR の clear をし忘れるバグを修正。 ------------------------------------------------------------------------ r95 | yuichi_xy | 2013-07-06 08:52:42 +0900 (土, 06 7月 2013) | 1 line ACPI APIC structure の local x2APIC を無効化 ------------------------------------------------------------------------ r96 | yuichi_xy | 2013-07-06 23:34:53 +0900 (土, 06 7月 2013) | 1 line Guest BIOS コンパイル時の warning を修正。 ------------------------------------------------------------------------ r97 | yuichi_xy | 2013-07-07 21:39:39 +0900 (日, 07 7月 2013) | 1 line gcc (4.7.2) の warning を修正 ------------------------------------------------------------------------ r98 | yuichi_xy | 2013-07-07 22:34:29 +0900 (日, 07 7月 2013) | 1 line struct pci_device のポインタを引数に、configuration access 可能にした ------------------------------------------------------------------------ r99 | yuichi_xy | 2013-07-10 23:03:15 +0900 (水, 10 7月 2013) | 1 line vm1 の再起動時、vm1 に割り当てられたデバイスに対し Secondary Bus Reset を発行す るようにした。 ------------------------------------------------------------------------ r100 | yuichi_xy | 2013-07-14 23:17:41 +0900 (日, 14 7月 2013) | 1 line BIOS の自動で生成される VERSION の値を変更 ------------------------------------------------------------------------ r101 | yuichi_xy | 2013-07-21 13:25:39 +0900 (日, 21 7月 2013) | 1 line SeaBIOS 1.7.3 を登録 ------------------------------------------------------------------------ r102 | yuichi_xy | 2013-07-21 14:08:28 +0900 (日, 21 7月 2013) | 1 line ファイルの登録漏れと削除漏れを修正 ------------------------------------------------------------------------ r103 | yuichi_xy | 2013-07-28 00:25:32 +0900 (日, 28 7月 2013) | 1 line r3 から r100 の間に BIOS に対して行った変更をマージ ------------------------------------------------------------------------ r104 | yuichi_xy | 2013-07-28 16:20:28 +0900 (日, 28 7月 2013) | 1 line r103 で入ってしまった余計な変更を元に戻した ------------------------------------------------------------------------ r105 | yuichi_xy | 2013-08-09 10:15:20 +0900 (金, 09 8月 2013) | 1 line IO page table をダンプするコードを修正。 ------------------------------------------------------------------------ r106 | yuichi_xy | 2013-08-25 15:12:31 +0900 (日, 25 8月 2013) | 1 line VMM 起動時、APIC を無効化しないようにした。 #31863 参照 ------------------------------------------------------------------------ r107 | yuichi_xy | 2013-08-25 20:12:58 +0900 (日, 25 8月 2013) | 1 line OS 上で General Protection Fault が発生しても VMM が panic しないようにした。 ------------------------------------------------------------------------