microsoft/openvmm

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
3e50139f3a7af6d51247a8f74701fbfd6ad83e03

Branches

Tags

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

Clone

HTTPS

Download ZIP

Guide/src/user_guide/openvmm.md

107lines · 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-serial
44 - virtio-net
45 - virtio-pmem
46 - [VMBus](https://docs.kernel.org/virt/hyperv/vmbus.html)
47 - storvsp
48 - netvsp
49 - serial
50 - framebuffer
51 - keyboard / mouse
52 - vpci
53 - Direct Assigned (experimental, WHP only)
54 - Emulated
55 - vTPM
56 - NVMe
57 - Serial UARTs (both 16550, and PL011)
58 - Legacy x86
59 - i440BX + PIIX4 chipset (PS/2 kbd/mouse, RTC, PIT, etc)
60 - IDE HDD/Optical, Floppy
61 - PCI
62 - VGA graphics (experimental)
63- Device backends
64 - Graphics / Mouse / Keyboard (VNC)
65 - Serial (term, socket, tcp)
66 - Storage (raw img, VHD/VHDx, Linux blockdev, HTTP)
67 - Networking (various)
68- Management APIs (unstable)
69 - CLI
70 - Interactive console
71 - gRPC
72 - ttrpc
73
74For more information on any / all of these features, see their corresponding
75pages under the **Reference** section of the OpenVMM Guide.
76
77...though, as you may be able to tell by looking at the sidebar, that section of
78the Guide is currently under construction, and not all items have corresponding
79pages at this time.
80
81* * *
82
83Before heading on to [Running OpenVMM](./openvmm/run.md), please take a moment
84to read and understand the following important disclaimer:
85
86```admonish warning title="DISCLAIMER"
87In recent years, development efforts in the OpenVMM project have primarily
88focused on [OpenHCL](./openhcl.md) (AKA: OpenVMM as a paravisor).
89
90As a result, not a lot of "polish" has gone into making the experience of
91running OpenVMM in traditional host contexts particularly "pleasant".
92This lack of polish manifests in several ways, including but not limited to:
93
94- Unorganized and minimally documented management interfaces (e.g: CLI, ttrpc/grpc)
95- Unoptimized device backend performance (e.g: for storage, networking, graphics)
96- Unexpectedly missing device features (e.g: legacy IDE drive, PS/2 mouse features)
97- **No API or feature-set stability guarantees whatsoever.**
98
99At this time, OpenVMM _on the host_ is not yet ready to run end-user
100workloads, and should should be treated more akin to a development platform
101for implementing new OpenVMM features, rather than a ready-to-deploy
102application.
103```
104
105[^dlls]: though, depending on the platform and compiled-in feature-set, some
106 additional DLLs and/or system libraries may need to be installed (notably:
107 `lxutil.dll` on Windows).
108