microsoft/openvmm
Publicmirrored fromhttps://github.com/microsoft/openvmmAvailable
Guide/src/user_guide/openvmm.md
107lines · modecode
| 1 | # OpenVMM |
| 2 | |
| 3 | OpenVMM can be configured to run as a conventional [hosted, or |
| 4 | "type-2"](https://en.wikipedia.org/wiki/Hypervisor#Classification) Virtual |
| 5 | Machine Monitor (VMM). |
| 6 | |
| 7 | At 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 | |
| 16 | When compiled, OpenVMM consists of a single standalone `openvmm` / `openvmm.exe` |
| 17 | executable.[^dlls] |
| 18 | |
| 19 | ```admonish note |
| 20 | As you explore the OpenVMM repo, you may find references to the term **HvLite**. |
| 21 | |
| 22 | HvLite was the former codename for OpenVMM, so whenever you see the term |
| 23 | "HvLite", you can treat it as synonymous to "OpenVMM". |
| 24 | |
| 25 | We are actively migrating existing code and docs away from using the term |
| 26 | "HvLite". |
| 27 | ``` |
| 28 | |
| 29 | ## Notable Features |
| 30 | |
| 31 | This *non-exhaustive* list provides a broad overview of some notable features, |
| 32 | devices, 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 | |
| 74 | For more information on any / all of these features, see their corresponding |
| 75 | pages 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 |
| 78 | the Guide is currently under construction, and not all items have corresponding |
| 79 | pages at this time. |
| 80 | |
| 81 | * * * |
| 82 | |
| 83 | Before heading on to [Running OpenVMM](./openvmm/run.md), please take a moment |
| 84 | to read and understand the following important disclaimer: |
| 85 | |
| 86 | ```admonish warning title="DISCLAIMER" |
| 87 | In recent years, development efforts in the OpenVMM project have primarily |
| 88 | focused on [OpenHCL](./openhcl.md) (AKA: OpenVMM as a paravisor). |
| 89 | |
| 90 | As a result, not a lot of "polish" has gone into making the experience of |
| 91 | running OpenVMM in traditional host contexts particularly "pleasant". |
| 92 | This 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 | |
| 99 | At this time, OpenVMM _on the host_ is not yet ready to run end-user |
| 100 | workloads, and should should be treated more akin to a development platform |
| 101 | for implementing new OpenVMM features, rather than a ready-to-deploy |
| 102 | application. |
| 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 | |