microsoft/openvmm

Public

mirrored fromhttps://github.com/microsoft/openvmmAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
15e07a8246fa7bad80ef06f167641da58f4e021b

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Guide/src/index.md

100lines · modecode

1# Introduction
2
3OpenVMM is a modular, cross-platform, general-purpose Virtual Machine Monitor
4(VMM), written in Rust.
5
6The project is open-source, MIT Licensed, and developed publicly at
7[microsoft/openvmm](https://github.com/microsoft/openvmm) on GitHub.
8
9**Cross-Platform**
10
11OpenVMM supports a variety of host operating systems, architectures, and
12virtualization backends:
13
14| Host OS | Architecture | Virtualization API |
15| ------------------- | ------------- | -------------------------------------- |
16| Windows | x64 / Aarch64 | WHP (Windows Hypervisor Platform) |
17| Linux | x64 | KVM |
18| | x64 | MSHV (Microsoft Hypervisor) |
19| macOS | Aarch64 | Hypervisor.framework |
20| Linux ([paravisor]) | x64 / Aarch64 | MSHV (using [VBS] / [TDX] / [SEV-SNP]) |
21
22**General Purpose**
23
24Similar to other general-purpose VMMs (such as Hyper-V, QEMU, VirtualBox),
25OpenVMM is able to host a wide variety of both modern and legacy guest operating
26systems on-top of its flexible virtual hardware platform.
27
28- Modern operating systems can boot via UEFI, and interface with a wide
29selection of paravirtualized devices for services like networking, storage, and
30graphics.
31
32- Legacy x86 operating systems can boot via BIOS, and are presented with a
33PC-compatible emulated device platform which includes legacy hardware such as
34IDE hard-disk/optical drives, floppy disk drives, and VGA graphics cards.
35
36OpenVMM is regularly tested to ensure compatibility with popular operating
37systems (such as Windows, Linux, and FreeBSD), and strives to maintain reasonable
38compatibility with other, more niche/legacy operating systems as well.
39
40**Modular**
41
42OpenVMM is designed from the ground up to support a wide variety of distinct
43virtualization scenarios, each with their own unique needs and constraints.
44
45Rather than relying on a "one size fits all" solution, the OpenVMM project
46enables users to build specialized versions of OpenVMM with the precise set of
47features required to power their particular scenario.
48
49For example: A build of OpenVMM designed to run on a user's personal PC might
50compile-in all available features, in order support a wide variety of
51workloads, whereas a build of OpenVMM designed to run linux container
52workloads might opt for a narrow set of enabled features, in order to minimize
53resource consumption and VM-visible surface area.
54
55* * *
56
57One particularly notable use-case of OpenVMM is in
58[**OpenHCL**](./user_guide/openhcl.md) (AKA, OpenVMM as a paravisor).
59
60Unlike in the traditional virtualization model, where a VMM runs in a privileged
61host/root partition and provides virtualization services to a unprivileged guest
62partition, the "paravisor" model enables a VMM to provide virtualization
63services from _within_ the guest partition itself.
64
65This is exciting, as it enables a wide variety of useful and novel
66virtualization scenarios.
67
68For example: at Microsoft, OpenHCL plays a key role in enabling several
69important Azure scenarios:
70
71- Enabling existing workloads to seamlessly leverage [Azure Boost] (Azure's
72 next-generation hardware accelerator), without requiring any modifications to
73 the guest VM image.
74
75- Enabling existing guest operating systems to run inside hardware-backed
76 [Confidential VMs].
77
78- Powering [Trusted Launch VMs] - VMs that support Secure Boot, and include a
79 vTPM.
80
81* * *
82
83To learn more about different facets of the OpenVMM project, check out the
84following links:
85
86| | |
87| ----------------------------------------------------------------------------- | ----------------------------------------- |
88| [Getting Started: OpenVMM](./user_guide/openvmm.md) | Running OpenVMM as traditional host VMM |
89| [Getting Started: OpenHCL](./user_guide/openhcl.md) | Running OpenVMM as a paravisor (OpenHCL) |
90| [Developer Guide: Getting Started](./dev_guide/getting_started.md) | Building OpenVMM / OpenHCL locally |
91| [[Github] microsoft/openvmm](https://github.com/microsoft/openvmm) | Viewing / Downloading OpenVMM source code |
92| [[Github] OpenVMM issue tracker](https://github.com/microsoft/openvmm/issues) | Reporting OpenVMM issues |
93
94[paravisor]: ./user_guide/openhcl.md
95[VBS]: https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-vbs
96[Azure Boost]: https://learn.microsoft.com/en-us/azure/azure-boost/overview
97[Confidential VMs]: https://azure.microsoft.com/en-us/solutions/confidential-compute
98[Trusted Launch VMs]: https://learn.microsoft.com/en-us/azure/virtual-machines/trusted-launch
99[TDX]: https://www.intel.com/content/www/us/en/developer/tools/trust-domain-extensions/overview.html
100[SEV-SNP]: https://www.amd.com/content/dam/amd/en/documents/epyc-business-docs/white-papers/SEV-SNP-strengthening-vm-isolation-with-integrity-protection-and-more.pdf
101