パソコン(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)をベースとします。
なし
VMM とゲスト BIOS のベースを次の通り新しくしました。
ベースのソフトウェアからの差分を複数の patch ファイルにし、 quilt で管理するようにしました。
以下のことを確認済です。
1. USB メモリに TinyVisor をインストール可能なこと。 2. Linux のファイルシステムに TinyVisor をインストール可能なこと。 3. vm0 のみで OS を起動可能なこと。 36. vm0 のみで OS を起動した後、再起動可能なこと。 37. vm0 のみで OS を起動した後シャットダウンすると、PC の電源が OFF になること。 14. qemu 上で TinyVisor を起動可能なこと。 28. IvyBridge マシンにおいて、次の組み合わせで OS を起動可能なこと。 vm0: Debian GNU/Linux 7.0 (amd64版) vm1: FreeBSD 10.0-RELEASE (amd64版) この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。 SATA: ASMedia ASM1062 NIC: Realtek RTL8111E USB: Intel 7 Series/C210 Series ChipsetのxHCI 18. IvyBridge マシンにおいて次の組み合わせで OS を起動可能なこと。 vm0: Fedora 20 (x86_64版) vm1: Debian GNU/Linux 7.0 (amd64版) この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。 SATA: ASMedia ASM1062 NIC: Realtek RTL8111E USB: Intel 7 Series/C210 Series ChipsetのxHCI VGA: GeForce 8400 GS 29. IvyBridge マシンにおいて次の組み合わせで OS を起動可能なこと。 vm0: FreeBSD 10.0-RELEASE (amd64版) vm1: Fedora 20 (x86_64版) この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。 SATA: ASMedia ASM1062 NIC: Realtek RTL8111E USB: Intel 7 Series/C210 Series ChipsetのxHCI VGA: GeForce 8400 GS 26. IvyBridge マシンにおいて次の組み合わせで OS を起動可能なこと。 vm0: Windows 8.1 (64ビット版) vm1: Debian GNU/Linux 7.0 (amd64版) この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。 SATA: ASMedia ASM1062 NIC: Realtek RTL8111E USB: Intel 7 Series/C210 Series ChipsetのxHCI VGA: GeForce 8400 GS 12. IvyBridge マシンにおいて vm1 で動作している Debian GNU/Linux 7.0 (amd64版) を再起動可能なこと。 20. IvyBridge マシンにおいて vm1 で動作している Fedora 20 (x86_64版) を再起動可能なこと。 21. IvyBridge マシンにおいて vm0 で動作している Debian GNU/Linux 7.0 (amd64版) を再起動可能なこと。 31. IvyBridge マシンにおいて vm0 で動作している FreeBSD 10.0-RELEASE (amd64版) を再起動可能なこと。 23. IvyBridge マシンにおいて vm0 で動作している Fedora 20 (x86_64版) を再起動可能なこと。 32. 次の組み合わせで両方の OS をシャットダウンすると、PC の電源が OFF になること vm0: Debian GNU/Linux 7.0 (amd64版) vm1: FreeBSD 10.0-RELEASE (amd64版) 33. 次の組み合わせで両方の OS をシャットダウンすると、PC の電源が OFF になること vm0: Fedora 20 (x86_64版) vm1: Debian GNU/Linux 7.0 (amd64版) 34. 次の組み合わせで両方の OS をシャットダウンすると、PC の電源が OFF になること vm0: FreeBSD 10.0-RELEASE (amd64版) vm1: Fedora 20 (x86_64版) 35. 次の組み合わせで両方の OS をシャットダウンすると、PC の電源が OFF になること vm0: Windows 8.1 (64ビット版) vm1: Debian GNU/Linux 7.0 (amd64版) 24. Debian GNU/Linux 7.0 (amd64版)でビルド可能なこと。 25. Fedora 20 (x86_64版)でビルド可能なこと。 38. VM1に4GBを超えるアドレスのメモリのみを割り当てた場合に、OSが起動 すること 39. VM1に4GB以下のアドレスのメモリと、4GBを超えるアドレスのメモリを 割り当てた場合に、OSが起動すること 40. vm0.boot_int18でVM0のOSを起動可能なこと。 41. vm0.boot_drive=81でVM0のOSを起動可能なこと。 42. VM0に論理プロセッサを1個、VM1に論理プロセッサを3個割り当てて、OS を起動可能なこと。 43. VM0に論理プロセッサを2個、VM1に論理プロセッサを2個割り当てて、OS を起動可能なこと。 44. VM0に論理プロセッサを3個、VM1に論理プロセッサを1個割り当てて、OS を起動可能なこと。 45. TTY_SERIALを0に設定すると、VMMの起動時のメッセージが画面に表示さ れること。 46. TTY_SERIALを1に設定すると、VMMの起動時のメッセージがシリアルコン ソールに出力されること。
#34008 VM1に割り当てられたメモリの終端アドレスが本来の値より1大きくなっている
#34365 VM1で起動したFreeBSDを再起動すると、NICで通信ができない
#33655 VM0でWindows 8.1を再起動すると、ストールすることがある
#32901 VM1でFedora 20を再起動すると、ログイン画面が表示されない
#32660 VM0で起動したFreeBSDを再起動すると、NICで通信ができない
#32404 VM1にCPUを1個しか割り当てずにVM1でFreeBSDを起動しようとすると、NICがリンクアップしない
------------------------------------------------------------------------ r242 | yuichi_xy | 2014-07-06 21:59:49 +0900 (日, 06 7月 2014) | 1 line VM1に割り当てたメモリの終端アドレスが本来の値より1大きくなっている不具合を修正した。#34008 参照 ------------------------------------------------------------------------ r256 | yuichi_xy | 2014-08-24 17:25:58 +0900 (日, 24 8月 2014) | 1 line pci_scan_bus が必ずしもバス番号の最大値を返却していなかったので修正した。 ------------------------------------------------------------------------ r273 | yuichi_xy | 2014-09-14 22:12:19 +0900 (日, 14 9月 2014) | 1 line trunk の 202:271 の変更を元に戻した。 rebase ブランチの 208:272 の変更を trunk へマージした。 -- VMM とゲスト BIOS のベースを次の通り新しくした。 * VMM: BitVisor 1.4 * ゲスト BIOS: SeaBIOS 1.7.5 ベースのソフトウェアからの差分を複数の patch ファイルにし、 quilt で管理するようにした。 ------------------------------------------------------------------------ r274 | yuichi_xy | 2014-09-14 23:42:48 +0900 (日, 14 9月 2014) | 1 line make clean で build_date.c や biild_date.o が削除されるようにした。make initquilt で quilt が使えるようにした。 ------------------------------------------------------------------------ r275 | yuichi_xy | 2014-09-15 22:17:40 +0900 (月, 15 9月 2014) | 1 line VM0 の OS のシャットダウンを検出できないバグを修正した。 ------------------------------------------------------------------------ r276 | yuichi_xy | 2014-09-15 22:52:28 +0900 (月, 15 9月 2014) | 1 line ACPI MCFG テーブルが存在しない場合に NULL ポインタにアクセスするバグを修正した。 ------------------------------------------------------------------------ r278 | yuichi_xy | 2014-09-15 23:05:32 +0900 (月, 15 9月 2014) | 1 line CF8h/CFChによるコンフィグレーションレジスタへの書き込みが不正なアドレスおよび不正な値になるバグを修正した。 ------------------------------------------------------------------------ r279 | yuichi_xy | 2014-09-15 23:56:15 +0900 (月, 15 9月 2014) | 1 line io_iopass_init の処理が全論理プロセッサ上で実行されていたため、仮想ブートプロセッサとなっている論理プロセッサ上で上でのみ実行するように修正した。 全プロセッサで vminit が完了してから initfunc "pass" を実行するように修正した。 ------------------------------------------------------------------------ r280 | yuichi_xy | 2014-09-21 20:59:29 +0900 (日, 21 9月 2014) | 1 line PIT エミュレータの動作を本物に近くした。HPET エミュレータのデバッグメッセージのレベルを変更した。 ------------------------------------------------------------------------ r281 | yuichi_xy | 2014-09-21 23:18:28 +0900 (日, 21 9月 2014) | 1 line PIC エミュレータの割り込みがマスクされた時は、割り込みを inject しないようにした。 ------------------------------------------------------------------------ r282 | yuichi_xy | 2014-09-23 11:25:35 +0900 (火, 23 9月 2014) | 1 line VM の再起動時に、シリアルエミュレータと I/O APIC エミュレータのリセットと、 HPET の無効化を行うようにした。 ------------------------------------------------------------------------ r283 | yuichi_xy | 2014-09-23 19:44:26 +0900 (火, 23 9月 2014) | 1 line PIT のカウンタ値の計算を間違えていたため修正した。 #34347 参照 ------------------------------------------------------------------------ r284 | yuichi_xy | 2014-09-23 22:03:54 +0900 (火, 23 9月 2014) | 1 line OS が PIT エミュレータに対し、カウンタの初期値として 0 を設定した場合、カウンタがアンダーフローしてもカウンタの値を変更しないようにした。 #34358 参照 ------------------------------------------------------------------------ r285 | yuichi_xy | 2014-09-23 23:10:45 +0900 (火, 23 9月 2014) | 1 line TTY_SERIAL を 0 にした場合のコンパイルエラーを修正した。 ------------------------------------------------------------------------