ダウンロードリスト

プロジェクト概要

パソコン(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)をベースとします。

システム要件

システム要件が設定されていません

リリース時刻: 2014-03-29 23:19
tinyvisor 1.1 (1 個のファイル 非表示)

リリースノート

TinyVisor 1.1 (r176)


新機能

VM0 で Windows 8.1 を起動・再起動可能にしました。


その他の変更

VM0 の OS から PCIeのmemory mapped configuration access 可能にしました。

NetBSD 6.1.3 の AML インタープリタを移植し、_HID が数値ではなくメソッドの場合も解釈可能にしました。移植した結果、 AML の解釈が高速になりました。


動作確認内容

以下のことを確認済です。


1. USB メモリに TinyVisor をインストール可能なこと。

2. Linux のファイルシステムに TinyVisor をインストール可能なこと。

3. vm0 のみで OS を起動可能なこと。

14. qemu 上で TinyVisor を起動可能なこと。

15. IvyBridge マシンにおいて、次の組み合わせで OS を起動可能なこと。
   vm0: Debian GNU/Linux 7.0 (amd64版)
   vm1: FreeBSD 9.2-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

19. IvyBridge マシンにおいて次の組み合わせで OS を起動可能なこと。
   vm0: FreeBSD 9.2-RELEASE (amd64版)
   vm1: Fedora 20 (x86_64版)
        この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。
        SATA: ASMedia ASM1062 
        NIC: Realtek RTL8111E
        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版) を再起動可能なこと。

22. IvyBridge マシンにおいて vm0 で動作している FreeBSD 9.2-RELEASE
    (amd64版) を再起動可能なこと。

23. IvyBridge マシンにおいて vm0 で動作している Fedora 20 (x86_64版)
    を再起動可能なこと。

27. IvyBridge マシンにおいて vm0 で動作している Windows 8.1 (64ビット版)
    を再起動可能なこと。

24. Debian GNU/Linux 7.0 (amd64版)でビルド可能なこと。

25. Fedora 20 (x86_64版)でビルド可能なこと。


修正した問題

なし


既知の問題


#33655 VM0でWindows 8.1を再起動すると、ストールすることがある

#33614 VM1でFedora 20を起動すると、xHCIに接続されているデバイスが認識できない

#33509 FreeBSD 10.0を起動したところ、VMMがpanic

#33196 qemuでVM0のOSを再起動させるとVMMがpanic

#32902 VM1でFedora 20を再起動すると、xHCIに接続されているデバイスが認識できない

#32901 VM1でFedora 20を再起動すると、ログイン画面が表示されない

#32660 VM0で起動したFreeBSDを再起動すると、NICで通信ができない

#32404 VM1にCPUを1個しか割り当てずにVM1でFreeBSDを起動しようとすると、NICがリンクアップしない

#31392 vm1のFreeBSDを再起動すると、AHCIの初期化に失敗する

変更履歴

------------------------------------------------------------------------
r155 | yuichi_xy | 2014-01-14 21:14:04 +0900 (火, 14  1月 2014) | 1 line

VM-entry failure発生時に、VMCSのguest stateをチェックして問題の箇所を表示するようにした。 #32913 参照
------------------------------------------------------------------------
r156 | yuichi_xy | 2014-01-14 21:28:13 +0900 (火, 14  1月 2014) | 1 line

Protect Mode 移行時、RPL が 0 でない場合は、Segment Selector の値をダミーの値に設定するようにした。 #32913 参照。
------------------------------------------------------------------------
r157 | yuichi_xy | 2014-01-15 21:43:22 +0900 (水, 15  1月 2014) | 1 line

IA32_PAT MSR に予約されたメモリタイプが書き込まれた時に、一般保護例外を Inject するようにした。#32913 参照
------------------------------------------------------------------------
r158 | yuichi_xy | 2014-01-19 15:41:33 +0900 (日, 19  1月 2014) | 1 line

IA32_PAT MSR のフィールドの値をチェックする際に、8ビットすべてを対象とした。 #32913 参照。
------------------------------------------------------------------------
r159 | yuichi_xy | 2014-01-19 22:11:02 +0900 (日, 19  1月 2014) | 1 line

SIPI をエミュレートするための IPI のベクタを 0xff に変更し、Wait for SIPI 状態 では TPR に 0xef を指定するようにした。 #32913 参照
------------------------------------------------------------------------
r160 | yuichi_xy | 2014-01-23 23:53:00 +0900 (木, 23  1月 2014) | 1 line

IA32_PAT MSRを読んだ時に不定値となる不具合を修正した。 #32913 参照
------------------------------------------------------------------------
r161 | yuichi_xy | 2014-01-24 22:56:16 +0900 (金, 24  1月 2014) | 1 line

PCI 関連のソースコードをリファクタリング 
------------------------------------------------------------------------
r164 | yuichi_xy | 2014-01-25 11:41:14 +0900 (土, 25  1月 2014) | 1 line

OS から memory mapped configuration access 可能にした。 #31672 参照
------------------------------------------------------------------------
r165 | yuichi_xy | 2014-01-26 15:53:31 +0900 (日, 26  1月 2014) | 1 line

シリアルエミュレータに書き込まれたデータをそのままシリアルコントローラへ出力す るようにした。1秒以上、シリアルコントローラへの出力ができない場合は、シリアルコントローラへの出力を無効化するようにした。
------------------------------------------------------------------------

r166 | yuichi_xy | 2014-01-26 21:39:07 +0900 (日, 26  1月 2014) | 1 line

OS が memory mapped configuration access した時のバス番号の計算が誤っていたため修正した。 #33025 参照。
------------------------------------------------------------------------
r167 | yuichi_xy | 2014-01-26 22:04:30 +0900 (日, 26  1月 2014) | 1 line

BIOS: ACPI Hotplug を無効化した。
------------------------------------------------------------------------
r168 | yuichi_xy | 2014-01-26 23:35:05 +0900 (日, 26  1月 2014) | 1 line

シリアルエミュレータが FIFO に対応しているように OS に見せるようにした。 #33013 参照。
------------------------------------------------------------------------
r169 | yuichi_xy | 2014-02-09 23:38:31 +0900 (日, 09  2月 2014) | 1 line

NetBSD 6.1.3 の AML インタープリタを移植。シリアルコントローラの _DIS メソッド を無効化。 #33013 参照
------------------------------------------------------------------------
r170 | yuichi_xy | 2014-02-11 10:57:13 +0900 (火, 11  2月 2014) | 1 line

OS が存在しない MSR に読み書きした場合に、 general protection を inject するよ うにした。
------------------------------------------------------------------------
r171 | yuichi_xy | 2014-02-14 00:20:35 +0900 (金, 14  2月 2014) | 1 line

TTY_SERIAL や DISABLE_SLEEP の無効化ができなくなっていたので、無効化できるよう にした。VM0 の BSP 以外(AP) がキーボードコントローラにマシンのリセットを要求し た場合、無視するようにした。
------------------------------------------------------------------------
r172 | yuichi_xy | 2014-02-19 22:54:24 +0900 (水, 19  2月 2014) | 1 line

VM のリセット時、バス0上の PCI デバイスを D3 に遷移させて D0 に戻すことでリセットするようにした。また、バス0上の PCI デバイスのコンフィグレーションレジスタを VMM 起動時の状態に戻すようにした。 #33012 参照
------------------------------------------------------------------------
r173 | yuichi_xy | 2014-02-28 22:35:04 +0900 (金, 28  2月 2014) | 1 line

全ての論理プロセッサを宛先にしたプロセッサ間割り込みに対応した。 #33012 参照
------------------------------------------------------------------------
r174 | yuichi_xy | 2014-03-01 18:18:43 +0900 (土, 01  3月 2014) | 1 line

VM1 にメモリが割り当てられなかったためにゲスト BIOS をロードできない場合は、panic させずに、仮想プロセッサを SIPI 待ちの状態にした。
------------------------------------------------------------------------
r175 | yuichi_xy | 2014-03-16 16:41:32 +0900 (日, 16  3月 2014) | 1 line

OS による MTRR への書き込みを無視するようにした
------------------------------------------------------------------------
r176 | yuichi_xy | 2014-03-22 23:15:16 +0900 (土, 22  3月 2014) | 1 line

panic 時に VMCS をダンプするときに上位 32 ビットを重複して出力しないようにした 。
------------------------------------------------------------------------