Build your own virtual machine with /dev/kvm and Rust!
summary
Builds a minimal VM on Linux via /dev/kvm and shows concrete code: uses rust vmm plus crates kvm bindings, kvm_ioctls and vm-memory to map a page, inject x86 bytes, set registers, run a vCPU and handle VM exits. Demonstrates port I/O that prints a 4 (2+2) and a later audio demo that actually produces sound. Discusses VM exit cost, irqfd/ioeventfd optimizations and virtio ring-based devices and shows memory mapping as a way to share files, kernels and buffers.
AI-written summary · about
chapters (30)
- 0:00Intro
- 0:30What are virtual machines
- 1:01Why is this important
- 1:34Containers
- 1:51Functions as Service Platforms
- 2:03Firecracker
- 2:31Dev KVM
- 2:49Overview
- 3:07VM Exit
- 3:27Demo
- 3:37Virtual Serial Port
- 3:49Disclaimer
- 4:01Crates
- 4:16Create a virtual machine
- 4:29Create memory region
- 4:49Write raw x86 code
- 5:12Add memory region
- 5:32Create virtual CPU
- 5:45Instruction pointer
- 5:59Virtual machine inner loop
- 6:29Virtual machine demo
- 6:50VM exits
- 7:11Verdi
- 7:33Firecracker VM
- 7:55Memory Mapping
- 8:22Load Code
- 8:45Virtualizations
- 9:19Summary Summary
- 9:58Building Music
- 10:32Noise
related talks
43mBuilding a VMM in Rust for the Edge
24mCloud-hypervisor: A new choice for virtual machine monitor
20mrust-vmm: A Security Journey
05mSponsored Keynote: The Future of Virtualization
38mIntermezzos
20mKVM-devirt: Extending KVM to a Zero-Overhead Partition Hypervisor
34mThe beauty of virtual infrastructure with K8s and containers
12mRust-vmm Status Report
