ダウンロードリスト

プロジェクト概要

パソコン(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-09-27 20:12
tinyvisor 1.3 (1 個のファイル 非表示)

リリースノート

TinyVisor 1.3 (r285)


新機能

なし


その他の変更

VMM とゲスト BIOS のベースを次の通り新しくしました。

  • VMM: BitVisor 1.4
  • ゲスト BIOS: SeaBIOS 1.7.5

ベースのソフトウェアからの差分を複数の 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 にした場合のコンパイルエラーを修正した。
------------------------------------------------------------------------