Introduction
Getting Started
1.
OpenVMM
1.1.
Running OpenVMM
1.1.1.
Alpine Linux
1.2.
VM Configurations
1.3.
VFIO Device Assignment
1.4.
Troubleshooting
1.5.
Snapshots
1.6.
VM Memory Dumps
1.7.
Next Steps
2.
OpenHCL
2.1.
Running OpenHCL
2.1.1.
On Windows - Hyper-V
2.1.2.
On Windows - OpenVMM
2.1.3.
On Linux
2.2.
Troubleshooting
2.3.
Next Steps
3.
openvmm-img
Developer Guide
4.
Getting Started
4.1.
On Linux / WSL2
4.2.
On Windows
4.3.
Via Codespaces / Dev Container
4.4.
Building OpenVMM
4.5.
Building OpenHCL
4.5.1.
Building a Custom Kernel
4.6.
Suggested Dev Environment
4.7.
Cross Compiling for Windows
4.8.
Running from WSL2
5.
Testing
5.1.
Unit Tests
5.2.
VMM Tests
5.2.1.
Azure-hosted Test Images
5.2.2.
Pipette Guest Agent
5.2.3.
Windows Test Image Preparation
5.2.4.
IMC Hive Generator
5.2.5.
Incubator
5.2.6.
TPM Guest Test Utility
5.2.7.
IGVM Agent Test Server
5.2.8.
TMK VMM
5.2.9.
simple_tmk
5.2.10.
OpenTMK
5.2.11.
OpenTMK Executor
5.3.
Performance Benchmarks
5.3.1.
Performance Tests (burette)
5.3.2.
VMM.Perf Runner
5.4.
Fuzzing
5.4.1.
Running Fuzzers
5.4.2.
Writing Fuzzers
6.
Developer Tools / Utilities
6.1.
flowey
6.1.1.
Flowey Fundamentals
6.1.2.
Steps
6.1.3.
Variables
6.1.4.
Nodes
6.1.5.
Artifacts
6.1.6.
Pipelines
6.1.7.
Nix
6.2.
cargo xtask
6.3.
cargo xflowey
6.4.
VmgsTool
6.5.
update-rootfs.py
6.6.
igvmfilegen
6.7.
guest_test_uefi
6.8.
hypestv
7.
Contributing
7.1.
Coding Conventions
7.2.
Save State
7.3.
Snapshot Format
7.4.
Releases & Code Flow
7.5.
Security Releases
7.6.
Packaging OpenVMM for Linux
7.7.
Cutting an OpenVMM Source Release
7.8.
Submitting Changes
7.9.
Code Review Process
7.10.
Guide Updates
7.11.
Style Guide
7.12.
Crypto Backends
Reference
8.
OpenVMM Features
8.1.
Configuration and Management
8.1.1.
CLI
8.1.2.
Interactive Console
8.1.3.
gRPC / ttrpc
8.2.
Graphical Console
8.3.
Logging
9.
OpenHCL Features
9.1.
Dynamic Configuration
9.2.
Diagnostics
9.2.1.
Preface: CVM restrictions
9.2.2.
Intro to ohcldiag-dev
9.2.3.
Network packet capture (PCAP)
9.2.4.
Performance analysis
9.2.5.
Tracing
9.3.
Debugging
10.
Developer Features
10.1.
Hardware Debugging (gdbstub)
10.2.
Kernel Debugging (KDNET)
11.
Firmware and Boot Modes
11.1.
UEFI: mu_msvm
11.2.
BIOS: Hyper-V PCAT BIOS
11.3.
Linux Direct
12.
Devices
12.1.
PCI IDs
12.2.
Virtio
12.2.1.
virtio-fs
12.2.2.
virtio-9p
12.2.3.
virtio-net
12.2.4.
virtio-pmem
12.2.5.
virtio-rtc
12.3.
VMBus
12.3.1.
storvsp
12.3.1.1.
Channels & Subchannels
12.3.2.
netvsp
12.3.3.
vpci
12.3.4.
serial
12.3.5.
framebuffer
12.3.6.
input
12.4.
Emulated
12.4.1.
IPMI KCS
12.4.2.
vTPM
12.4.3.
NVMe
12.4.3.1.
Overview
12.4.3.2.
Doorbells
12.4.4.
Serial
12.4.5.
Legacy x86
12.4.5.1.
i440BX + PIIX4 chipset
12.4.5.2.
IDE HDD/Optical
12.4.5.3.
Floppy
12.4.5.4.
PCI
12.4.5.5.
VGA
12.4.6.
PCIe
12.4.6.1.
Overview
12.4.7.
IOMMU
12.4.7.1.
Arm SMMUv3
13.
Device Backends
13.1.
Serial
13.2.
Graphics and Input
13.3.
Storage
13.3.1.
VHDX Parser
13.4.
Networking
13.4.1.
Consomme
14.
Architecture
14.1.
Timekeeping
14.2.
OpenVMM Architecture
14.2.1.
Memory Layout
14.2.2.
Memory Backing
14.2.3.
NUMA Topology
14.2.4.
Device Tree
14.2.5.
mesh
14.2.5.1.
Using mesh
14.2.5.2.
How mesh works
14.2.6.
inspect
14.3.
OpenHCL Architecture
14.3.1.
Processes and Components
14.3.2.
openvmm_hcl
14.3.3.
Attestation and VMGS Protection
14.3.3.1.
IGVM Attestation Protocol
14.3.3.2.
AK Certificate Renewal
14.3.4.
VMBus Relay and Device Interception
14.3.5.
Storage Translation
14.3.6.
Storage Configuration Model
14.3.7.
Boot Flow
14.3.8.
Sidecar
14.3.9.
CPU Scheduling
14.3.10.
IGVM
14.4.
Device Architecture
14.4.1.
Storage Pipeline
OpenVMM Rust Crate API Docs
Light
Rust
Coal
Navy
Ayu
The OpenVMM Guide
OpenHCL Features
This section discuss various features that are exclusive to OpenHCL.