1. Introduction
  2. Getting Started
  3. 1. OpenVMM
    1. 1.1. Running OpenVMM
      1. 1.1.1. Alpine Linux
    2. 1.2. VM Configurations
    3. 1.3. VFIO Device Assignment
    4. 1.4. Troubleshooting
    5. 1.5. Snapshots
    6. 1.6. VM Memory Dumps
    7. 1.7. Next Steps
  4. 2. OpenHCL
    1. 2.1. Running OpenHCL
      1. 2.1.1. On Windows - Hyper-V
      2. 2.1.2. On Windows - OpenVMM
      3. 2.1.3. On Linux
    2. 2.2. Troubleshooting
    3. 2.3. Next Steps
  5. Developer Guide
  6. 3. Getting Started
    1. 3.1. On Linux / WSL2
    2. 3.2. On Windows
    3. 3.3. Via Codespaces / Dev Container
    4. 3.4. Building OpenVMM
    5. 3.5. Building OpenHCL
      1. 3.5.1. Building a Custom Kernel
    6. 3.6. Suggested Dev Environment
    7. 3.7. Cross Compiling for Windows
    8. 3.8. Running from WSL2
  7. 4. Testing
    1. 4.1. Unit Tests
    2. 4.2. VMM Tests
      1. 4.2.1. Azure-hosted Test Images
    3. 4.3. Performance Tests (burette)
    4. 4.4. Fuzzing
      1. 4.4.1. Running Fuzzers
      2. 4.4.2. Writing Fuzzers
  8. 5. Developer Tools / Utilities
    1. 5.1. flowey
      1. 5.1.1. Flowey Fundamentals
      2. 5.1.2. Steps
      3. 5.1.3. Variables
      4. 5.1.4. Nodes
      5. 5.1.5. Artifacts
      6. 5.1.6. Pipelines
      7. 5.1.7. Nix
    2. 5.2. cargo xtask
    3. 5.3. cargo xflowey
    4. 5.4. VmgsTool
    5. 5.5. update-rootfs.py
    6. 5.6. igvmfilegen
    7. 5.7. guest_test_uefi
    8. 5.8. hypestv
  9. 6. Contributing
    1. 6.1. Coding Conventions
    2. 6.2. Save State
    3. 6.3. Snapshot Format
    4. 6.4. Releases & Code Flow
    5. 6.5. Security Releases
    6. 6.6. Packaging OpenVMM for Linux
    7. 6.7. Cutting an OpenVMM Source Release
    8. 6.8. Submitting Changes
    9. 6.9. Code Review Process
    10. 6.10. Guide Updates
    11. 6.11. Style Guide
    12. 6.12. Crypto Backends
  10. Reference
  11. 7. OpenVMM Features
    1. 7.1. Configuration and Management
      1. 7.1.1. CLI
      2. 7.1.2. Interactive Console
      3. 7.1.3. gRPC / ttrpc
    2. 7.2. Graphical Console
    3. 7.3. Logging
  12. 8. OpenHCL Features
    1. 8.1. Dynamic Configuration
    2. 8.2. Diagnostics
      1. 8.2.1. Preface: CVM restrictions
      2. 8.2.2. Intro to ohcldiag-dev
      3. 8.2.3. Network packet capture (PCAP)
      4. 8.2.4. Performance analysis
      5. 8.2.5. Tracing
    3. 8.3. Debugging
  13. 9. Developer Features
    1. 9.1. Hardware Debugging (gdbstub)
    2. 9.2. Kernel Debugging (KDNET)
  14. 10. Firmware and Boot Modes
    1. 10.1. UEFI: mu_msvm
    2. 10.2. BIOS: Hyper-V PCAT BIOS
    3. 10.3. Linux Direct
  15. 11. Devices
    1. 11.1. PCI IDs
    2. 11.2. Virtio
      1. 11.2.1. virtio-fs
      2. 11.2.2. virtio-9p
      3. 11.2.3. virtio-net
      4. 11.2.4. virtio-pmem
    3. 11.3. VMBus
      1. 11.3.1. storvsp
        1. 11.3.1.1. Channels & Subchannels
      2. 11.3.2. netvsp
      3. 11.3.3. vpci
      4. 11.3.4. serial
      5. 11.3.5. framebuffer
      6. 11.3.6. input
    4. 11.4. Emulated
      1. 11.4.1. vTPM
      2. 11.4.2. NVMe
        1. 11.4.2.1. Overview
        2. 11.4.2.2. Doorbells
      3. 11.4.3. Serial
      4. 11.4.4. Legacy x86
        1. 11.4.4.1. i440BX + PIIX4 chipset
        2. 11.4.4.2. IDE HDD/Optical
        3. 11.4.4.3. Floppy
        4. 11.4.4.4. PCI
        5. 11.4.4.5. VGA
      5. 11.4.5. PCIe
        1. 11.4.5.1. Overview
      6. 11.4.6. IOMMU
        1. 11.4.6.1. Arm SMMUv3
  16. 12. Device Backends
    1. 12.1. Serial
    2. 12.2. Graphics and Input
    3. 12.3. Storage
      1. 12.3.1. VHDX Parser
    4. 12.4. Networking
      1. 12.4.1. Consomme
  17. 13. Architecture
    1. 13.1. OpenVMM Architecture
      1. 13.1.1. Memory Layout
      2. 13.1.2. Memory Backing
      3. 13.1.3. NUMA Topology
      4. 13.1.4. mesh
        1. 13.1.4.1. Using mesh
        2. 13.1.4.2. How mesh works
      5. 13.1.5. inspect
    2. 13.2. OpenHCL Architecture
      1. 13.2.1. Processes and Components
      2. 13.2.2. VMBus Relay and Device Interception
      3. 13.2.3. Storage Translation
      4. 13.2.4. Storage Configuration Model
      5. 13.2.5. Boot Flow
      6. 13.2.6. Sidecar
      7. 13.2.7. CPU Scheduling
      8. 13.2.8. IGVM
    3. 13.3. Device Architecture
      1. 13.3.1. Storage Pipeline
  18. OpenVMM Rust Crate API Docs

The OpenVMM Guide

Submitting Changes

Follow the CONTRIBUTING guide.