Tiny Virtual Machine Monitor


About TVMM

Tiny Virtual Machine Monitor (TVMM) is a yet-another virtual machine monitor, which has been developed for the purpose of education and verification. Since its design and implementation are simpler than those of existing virtual machine monitors (e.g., VMware, Xen), programmers can easily understand how the VMM works. In addition, TVMM is useful as a building block towards secure virtual machine monitors. We are planning to ensure security properties of TVMM using verification techniques and safe programming languages.

Platforms supported by the current implementation include AMD64 architecture with virtualization technologies (secure virtual machine architecture).


Download

Tiny Virtual Machine Monitor is licensed under the GNU General Public License. A part of source code of TVMM belongs to Linux Kernel, Xen virtual machine monitor, GNU GRUB, and TOS.


History

(June 6, 2006) Project finished
...
(June 2, 2006) VMEXIT_PAGEFAULT when a guest OS boots with no paging (w/ nested paging) (tvmm-2006-6-2.tar.gz)
(June 1, 2006) A simple program ran successfully inside a virtual machine (w/ nested paging) (tvmm-2006-6-1.tar.gz, demo-2006-6-1.wmv)
(May 31, 2006) #VMEXIT occurred with error code VMEXIT_INVALID (w/ nested paging) (tvmm-2006-5-31.tar.gz)
(May 30, 2006) A simple program ran successfully inside a virtual machine (w/o nested paging) (tvmm-2006-5-30.tar.gz)
(May 29, 2006) #VMEXIT occurred with error code VMEXIT_PAGEFAULT (w/o nested paging) (tvmm-2006-5-29.tar.gz)
(May 26, 2006) #VMEXIT occurred with error code VMEXIT_INVALID (tvmm-2006-5-26.tar.gz)
(May 25, 2006) VMM crashed due to triple fault when the VMLOAD instruction is executed (tvmm-2006-5-25.tar.gz)
...
(May 18, 2006) Project started

Install

  1. Compile TVMM
  2. Install SimNow™
  3. Create a disk image
    1. Create a blank disk image
    2. Create a partition table
    3. Format the disk
    4. Install TVMM
    5. Install GRUB
See also this text.

Usage

You can run TVMM with SimNow™.
  1. Set a BSD file (select 'File' -> 'Open BSD' from menu, and select 'bsds/cheetah_1p.bsd')
  2. Enable nested paging (type 'cpu.SetSVMNestedPaging 1' on the console)
  3. Set the disk image (select 'File' -> 'Set IDE Primary Mater Image' from menu)
  4. Run the simulator (select 'Run Simulation' from menu)
See also this movie.

References


Acknowledgments

I would like to thank Dr. Toshiyuki Maeda and SimNow™ Support Team.
Kenji Kaneda
kaneda@yl.is.s.u-tokyo.ac.jp