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. Troubleshooting
    4. 1.4. Snapshots
    5. 1.5. 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. Submitting Changes
    6. 6.6. Code Review Process
    7. 6.7. Guide Updates
    8. 6.8. Style Guide
  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. Virtio
      1. 11.1.1. virtio-fs
      2. 11.1.2. virtio-9p
      3. 11.1.3. virtio-net
      4. 11.1.4. virtio-pmem
    2. 11.2. VMBus
      1. 11.2.1. storvsp
        1. 11.2.1.1. Channels & Subchannels
      2. 11.2.2. netvsp
      3. 11.2.3. vpci
      4. 11.2.4. serial
      5. 11.2.5. framebuffer
      6. 11.2.6. input
    3. 11.3. Emulated
      1. 11.3.1. vTPM
      2. 11.3.2. NVMe
        1. 11.3.2.1. Overview
        2. 11.3.2.2. Doorbells
      3. 11.3.3. Serial
      4. 11.3.4. Legacy x86
        1. 11.3.4.1. i440BX + PIIX4 chipset
        2. 11.3.4.2. IDE HDD/Optical
        3. 11.3.4.3. Floppy
        4. 11.3.4.4. PCI
        5. 11.3.4.5. VGA
      5. 11.3.5. PCIe
        1. 11.3.5.1. Overview
    4. 11.4. Direct Assigned
  16. 12. Device Backends
    1. 12.1. Serial
    2. 12.2. Graphics and Input
    3. 12.3. Storage
    4. 12.4. Networking
      1. 12.4.1. Consomme
  17. 13. Architecture
    1. 13.1. OpenVMM Architecture
      1. 13.1.1. mesh
      2. 13.1.2. 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. 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.