Download List

專案描述

TinyVisor is a hypervisor(VMM) which assigns cpus, memory and I/O in personal computer(PC) to VMs, and allows OSs controlling them. OSs work without host OS.

The first milestone is that two OSs work in one PC. The second milestone is that OSs reboot individually. The milestones have been achived in Jan. 2014, and 1.0 is released.

Linux, Windows, and FreeBSD work.

VMM is based on BitVIsor(BSD license). AML interpriter and some functions of standard library are ported from NetBSD and FreeBSD.

Guest BIOS is based on SeaBIOS(BSD license).

System Requirements

System requirement is not defined

發布 2013-09-15 15:48
tinyvisor 0.10 (1 files 隱藏)

發布版本通知

TinyVisor 0.10 (r112)


新機能

PCに実装されている物理メモリをすべてVMMの仮想アドレス空間に固定的にマップすることで、命令エミュレーションののオーバヘッドを削減し、4GB以降のメモリのみを割り当てたvm1でOSを起動可能にしました。

vm1 に割り当てたデバイスに対し、vm0 の BIOS/OS から I/O アクセスやメモリアクセスができないようにすることで、vm0とvm1を同時起動するときの競合が発生しないようにしました。


その他の変更

バグ修正をしました。「修正した問題」を参照してください。


動作確認内容

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


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

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

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

4. Nehalem マシンにおいて、次の組み合わせで OS を起動可能なこと。
   vm0: Debian GNU/Linux 7.0 (amd64版)
   vm1: FreeBSD 9.1-RELEASE (amd64版)
        この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。
        SATA: 玄人志向 SATA312-PCIe (Marvell 88SE9128)
        NIC: Realtek RTL811DH

5. Nehalem マシンにおいて次の組み合わせで OS を起動可能なこと。
   vm0: FreeBSD 9.1-RELEASE (amd64版)
   vm1: Debian GNU/Linux 7.0 (amd64版)
        この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。
        SATA: 玄人志向 SATA312-PCIe (Marvell 88SE9128)
        NIC: Realtek RTL811DH
        USB: 玄人志向 USB3.0N4-PCIe (ルネサス uPD720200)
        VGA: GeForce 8400 GS

6. Nehalem マシンにおいて次の組み合わせで OS を起動可能なこと。
   vm0: Debian GNU/Linux 7.0 (amd64版)
   vm1: Debian GNU/Linux 7.0 (amd64版)

7. Nehalem マシンにおいて vm1 で動作している Debian GNU/Linux 7.0
   (amd64版) を再起動可能なこと。

8. IvyBridge マシンにおいて、次の組み合わせで OS を起動可能なこと。
   vm0: Debian GNU/Linux 7.0 (amd64版)
   vm1: FreeBSD 9.1-RELEASE (amd64版)
        この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。
        SATA: ASMedia ASM1062 
        NIC: Realtek RTL8111E

9. IvyBridge マシンにおいて次の組み合わせで OS を起動可能なこと。
   vm0: FreeBSD 9.1-RELEASE (amd64版)
   vm1: Debian GNU/Linux 7.0 (amd64版)
        この時、vm1のOSから以下のI/Oデバイスを使用可能なこと。
        SATA: ASMedia ASM1062 
        NIC: Realtek RTL8111E

10. IvyBridge マシンにおいて次の組み合わせで OS を起動可能なこと。
   vm0: Debian GNU/Linux 7.0 (amd64版)
   vm1: Debian GNU/Linux 7.0 (amd64版)

11. IvyBridge マシンにおいて vm1 で動作している Debian GNU/Linux 7.0
    (amd64版) を再起動可能なこと。


修正した問題


#31963 gcc 4.7.2 で SPT3 を無効化した VMM をコンパイルすると、GRUB のロード中にストール

#31926 vm0 と vm1 を作成した時に vm1 側で AHCI タイムアウトが発生し OS が起動しない

#31858 4GB以上のメモリをvm1に割り当てると、Linux が起動中にストールする

#31857 4GB境界を跨ぐメモリをvm1に割り当てると、vm1の再起動時にAHCIがタイムアウトする


既知の問題


#31925 Qemu上でTinyvisorを起動したところ、Linuxが起動しない

#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

更動紀錄

------------------------------------------------------------------------
r108 | yuichi_xy | 2013-08-31 17:40:32 +0900 (土, 31  8月 2013) | 1 line

vm1 に割り当てたデバイスに対し、vm0 の BIOS/OS から I/O アクセスやメモリアクセスができないようにした。 #31926 参照
------------------------------------------------------------------------
r109 | yuichi_xy | 2013-08-31 22:21:01 +0900 (土, 31  8月 2013) | 1 line

vm1 の再起動時、メモリマップエントリの2つ目以降が示すメモリを初期化していないバグを修正
------------------------------------------------------------------------
r110 | yuichi_xy | 2013-08-31 23:08:05 +0900 (土, 31  8月 2013) | 1 line

BIOS の AHCI ドライバを改造し、コマンドリストや FIS のアドレスを設定する時に、上位 32 ビットを 0 に設定するようにした。 #31857
------------------------------------------------------------------------
r111 | yuichi_xy | 2013-09-01 15:33:59 +0900 (日, 01  9月 2013) | 1 line

PC に実装されている物理メモリをすべて VMM の仮想アドレス空間に固定的にマップするようにした。#31858 参照
------------------------------------------------------------------------
r112 | yuichi_xy | 2013-09-08 15:07:03 +0900 (日, 08  9月 2013) | 1 line

LIST2_DEL を、インライン関数を呼び出す実装から、「式の中の文」(丸括弧で囲んだ複文)の実装に修正。#31963 参照
------------------------------------------------------------------------