microsoft/openvmm

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
191dd827d047f7a93c67878632576e56ce03c041

Branches

Tags

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

Clone

HTTPS

Download ZIP

Guide/src/user_guide/openvmm.md

105lines · modecode

1# OpenVMM
2
3OpenVMM can be configured to run as a conventional [hosted, or
4"type-2"](https://en.wikipedia.org/wiki/Hypervisor#Classification) Virtual
5Machine Monitor (VMM).
6
7At the moment, OpenVMM can be built and run on the following host platforms:
8
9| Host OS | Architecture | Virtualization API |
10| ------- | ------------- | --------------------------------- |
11| Windows | x64 / Aarch64 | WHP (Windows Hypervisor Platform) |
12| Linux | x64 | KVM |
13| | x64 | MSHV (Microsoft Hypervisor) |
14| macOS | Aarch64 | Hypervisor.framework |
15
16When compiled, OpenVMM consists of a single standalone `openvmm` / `openvmm.exe`
17executable.[^dlls]
18
19```admonish note
20As you explore the OpenVMM repo, you may find references to the term **HvLite**.
21
22HvLite was the former codename for OpenVMM, so whenever you see the term
23"HvLite", you can treat it as synonymous to "OpenVMM".
24
25We are actively migrating existing code and docs away from using the term
26"HvLite".
27```
28
29## Notable Features
30
31This *non-exhaustive* list provides a broad overview of some notable features,
32devices, and scenarios OpenVMM currently supports.
33
34- Boot modes
35 - UEFI - via [`microsoft/mu_msvm`](https://github.com/microsoft/mu_msvm) firmware
36 - BIOS - via the [Hyper-V PCAT BIOS](../reference/devices/firmware/pcat_bios.md) firmware
37 - Linux Direct Boot
38- Devices
39 - Paravirtualized
40 - [Virtio](https://wiki.osdev.org/Virtio)
41 - virtio-fs
42 - virtio-9p
43 - virtio-net
44 - virtio-pmem
45 - [VMBus](https://docs.kernel.org/virt/hyperv/vmbus.html)
46 - storvsp
47 - netvsp
48 - serial
49 - framebuffer
50 - keyboard / mouse
51 - vpci
52 - Direct Assigned (experimental, WHP only)
53 - Emulated
54 - vTPM
55 - NVMe
56 - Serial UARTs (both 16550, and PL011)
57 - Legacy x86
58 - i440BX + PIIX4 chipset (PS/2 kbd/mouse, RTC, PIT, etc)
59 - IDE HDD/Optical, Floppy
60 - PCI
61 - VGA graphics (experimental)
62- Device backends
63 - Graphics / Mouse / Keyboard (VNC)
64 - Serial (term, socket, tcp)
65 - Storage (raw img, VHD/VHDx, Linux blockdev, HTTP)
66 - Networking (various)
67- Management APIs (unstable)
68 - CLI
69 - Interactive console
70 - gRPC
71 - ttrpc
72
73For more information on any / all of these features, see their corresponding
74pages under the **Reference** section of the OpenVMM Guide.
75
76...though, as you may be able to tell by looking at the sidebar, that section of
77the Guide is currently under construction, and not all items have corresponding
78pages at this time.
79
80* * *
81
82Before heading on to [Running OpenVMM](./openvmm/run.md), please take a moment
83to read and understand the following important disclaimer:
84
85```admonish warning title="DISCLAIMER"
86In recent years, development efforts in the OpenVMM project have primarily
87focused on [OpenHCL](./openhcl.md) (AKA: OpenVMM as a paravisor).
88
89As a result, not a lot of "polish" has gone into making the experience of
90running OpenVMM in traditional host contexts particularly "pleasant".
91This lack of polish manifests in several ways, including but not limited to:
92
93- Unorganized and minimally documented management interfaces (e.g: CLI, ttrpc/grpc)
94- Unoptimized device backend performance (e.g: for storage, networking, graphics)
95- Unexpectedly missing device features (e.g: legacy IDE drive, PS/2 mouse features)
96- **No API or feature-set stability guarantees whatsoever.**
97
98At this time, OpenVMM _on the host_ is not yet ready to run end-user
99workloads, and should should be treated more akin to a development platform
100for implementing new OpenVMM features, rather than a ready-to-deploy
101application.
102```
103
104[^dlls]: though, depending on the platform and compiled-in feature-set, some
105 additional DLLs and/or system libraries may need to be installed.
106