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

The OpenVMM Guide

Submitting Changes

Follow the CONTRIBUTING guide.