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
- Compile TVMM
- Install SimNow™
- Create a disk image
- Create a blank disk image
- Create a partition table
- Format the disk
- Install TVMM
- Install GRUB
See also this text.
Usage
You can run TVMM with SimNow™.
- Set a BSD file (select 'File' -> 'Open BSD' from menu, and select 'bsds/cheetah_1p.bsd')
- Enable nested paging (type 'cpu.SetSVMNestedPaging 1' on the console)
- Set the disk image (select 'File' -> 'Set IDE Primary Mater Image' from menu)
- 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