Introduction
Getting Started
1.
OpenVMM
1.1.
Running OpenVMM
1.1.1.
Alpine Linux
1.2.
VM Configurations
1.3.
Troubleshooting
1.4.
Snapshots
1.5.
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
Developer Guide
3.
Getting Started
3.1.
On Linux / WSL2
3.2.
On Windows
3.3.
Via Codespaces / Dev Container
3.4.
Building OpenVMM
3.5.
Building OpenHCL
3.5.1.
Building a Custom Kernel
3.6.
Suggested Dev Environment
3.7.
Cross Compiling for Windows
3.8.
Running from WSL2
4.
Testing
4.1.
Unit Tests
4.2.
VMM Tests
4.2.1.
Azure-hosted Test Images
4.3.
Performance Tests (burette)
4.4.
Fuzzing
4.4.1.
Running Fuzzers
4.4.2.
Writing Fuzzers
5.
Developer Tools / Utilities
5.1.
flowey
5.1.1.
Flowey Fundamentals
5.1.2.
Steps
5.1.3.
Variables
5.1.4.
Nodes
5.1.5.
Artifacts
5.1.6.
Pipelines
5.1.7.
Nix
5.2.
cargo xtask
5.3.
cargo xflowey
5.4.
VmgsTool
5.5.
update-rootfs.py
5.6.
igvmfilegen
5.7.
guest_test_uefi
5.8.
hypestv
6.
Contributing
6.1.
Coding Conventions
6.2.
Save State
6.3.
Snapshot Format
6.4.
Releases & Code Flow
6.5.
Submitting Changes
6.6.
Code Review Process
6.7.
Guide Updates
6.8.
Style Guide
Reference
7.
OpenVMM Features
7.1.
Configuration and Management
7.1.1.
CLI
7.1.2.
Interactive Console
7.1.3.
gRPC / ttrpc
7.2.
Graphical Console
7.3.
Logging
8.
OpenHCL Features
8.1.
Dynamic Configuration
8.2.
Diagnostics
8.2.1.
Preface: CVM restrictions
8.2.2.
Intro to ohcldiag-dev
8.2.3.
Network packet capture (PCAP)
8.2.4.
Performance analysis
8.2.5.
Tracing
8.3.
Debugging
9.
Developer Features
9.1.
Hardware Debugging (gdbstub)
9.2.
Kernel Debugging (KDNET)
10.
Firmware and Boot Modes
10.1.
UEFI: mu_msvm
10.2.
BIOS: Hyper-V PCAT BIOS
10.3.
Linux Direct
11.
Devices
11.1.
Virtio
11.1.1.
virtio-fs
11.1.2.
virtio-9p
11.1.3.
virtio-net
11.1.4.
virtio-pmem
11.2.
VMBus
11.2.1.
storvsp
11.2.1.1.
Channels & Subchannels
11.2.2.
netvsp
11.2.3.
vpci
11.2.4.
serial
11.2.5.
framebuffer
11.2.6.
input
11.3.
Emulated
11.3.1.
vTPM
11.3.2.
NVMe
11.3.2.1.
Overview
11.3.2.2.
Doorbells
11.3.3.
Serial
11.3.4.
Legacy x86
11.3.4.1.
i440BX + PIIX4 chipset
11.3.4.2.
IDE HDD/Optical
11.3.4.3.
Floppy
11.3.4.4.
PCI
11.3.4.5.
VGA
11.3.5.
PCIe
11.3.5.1.
Overview
11.4.
Direct Assigned
12.
Device Backends
12.1.
Serial
12.2.
Graphics and Input
12.3.
Storage
12.4.
Networking
12.4.1.
Consomme
13.
Architecture
13.1.
OpenVMM Architecture
13.1.1.
mesh
13.1.2.
inspect
13.2.
OpenHCL Architecture
13.2.1.
Processes and Components
13.2.2.
VMBus Relay and Device Interception
13.2.3.
Storage Translation
13.2.4.
Storage Configuration Model
13.2.5.
Boot Flow
13.2.6.
Sidecar
13.2.7.
IGVM
13.3.
Device Architecture
13.3.1.
Storage Pipeline
OpenVMM Rust Crate API Docs
Light
Rust
Coal
Navy
Ayu
The OpenVMM Guide
Diagnostics
This chapter discusses several of the diagnostic tools available when working with OpenHCL.