Merge with upstream 2026-06-04

892b70a6e0 Roll recipe dependencies (trivial).
44faf6d6b4 devices: fs: Optimize path filtering in read_dir
65db72ac7c Roll recipe dependencies (trivial).
4cd9fc29d5 devices: fs: integrate dynamic path filtering into passthrough fs
ead2529474 devices: fs: add PathAllowlist and unit tests
c25eeb4a28 crosvm: windows: dead code cleanup
938fc36e34 docs: replace rwdisk with block
caa20adcbd Roll recipe dependencies (trivial).
0ccd141df4 Roll recipe dependencies (trivial).

https://chromium.googlesource.com/crosvm/crosvm/+log/9769b54f8ff2677ee2fcd199cdcb85e3b52f24aa..892b70a6e0b13c434d97ecb2c032245457f3cb45

BUG=b:512201479

Change-Id: Ia67246538797e2173b85e0bfe0d5d4a6cfda1deb
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/7904370
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
Bot-Commit: crosvm LUCI CI <crosvm-luci-ci-builder@crosvm-infra.iam.gserviceaccount.com>
tree: 7b9ceaaf4aafde2766f79e539341a0a9cb4c0519
  1. .agents/
  2. .cargo/
  3. .config/
  4. .devcontainer/
  5. .github/
  6. .vscode/
  7. aarch64/
  8. aarch64_sys_reg/
  9. acpi_tables/
  10. android_audio/
  11. arch/
  12. argh_helpers/
  13. audio_streams_conformance_test/
  14. audio_util/
  15. base/
  16. base_tokio/
  17. bit_field/
  18. common/
  19. cros_async/
  20. cros_fdt/
  21. cros_tracing/
  22. cros_tracing_types/
  23. crosvm_cli/
  24. crosvm_control/
  25. devices/
  26. disk/
  27. docs/
  28. e2e_tests/
  29. ext2/
  30. fuse/
  31. fuzz/
  32. gpu_display/
  33. hypervisor/
  34. infra/
  35. io_uring/
  36. jail/
  37. kernel_cmdline/
  38. kernel_loader/
  39. kvm_sys/
  40. libcras_stub/
  41. linux_input_sys/
  42. logo/
  43. media/
  44. metrics/
  45. metrics_events/
  46. net_sys/
  47. net_util/
  48. perfetto/
  49. power_monitor/
  50. prebuilts/
  51. proc_init/
  52. profiles/
  53. proto_build_tools/
  54. protos/
  55. resources/
  56. riscv64/
  57. sandbox/
  58. serde_keyvalue/
  59. snapshot/
  60. src/
  61. swap/
  62. system_api/
  63. tests/
  64. third_party/
  65. tools/
  66. tube_transporter/
  67. usb_sys/
  68. usb_util/
  69. vendor/
  70. vfio_sys/
  71. vhost/
  72. virtio_sys/
  73. vm_control/
  74. vm_memory/
  75. win_audio/
  76. win_util/
  77. x86_64/
  78. .dockerignore
  79. .envrc
  80. .gitattributes
  81. .gitignore
  82. .gitmodules
  83. .rustfmt.toml
  84. ARCHITECTURE.md
  85. Cargo.lock
  86. Cargo.toml
  87. CONTRIBUTING.md
  88. DIR_METADATA
  89. LICENSE
  90. mypy.ini
  91. OWNERS
  92. OWNERS_COUNCIL
  93. PRESUBMIT.cfg
  94. pyproject.toml
  95. README.chromeos.md
  96. README.md
  97. rust-toolchain
README.md

crosvm

crosvm logo

The ChromeOS Virtual Machine Monitor

License Documentation Matrix


crosvm is a secure, lightweight, and performant Virtual Machine Monitor (VMM) written in Rust. Originally developed for ChromeOS to run Linux (Crostini) and Android guests (ARCVM). It is now used across multiple products and platforms such as TerminalApp on Android, Cuttlefish and Windows.

crosvm focuses on security through strong isolation and a modern, memory-safe implementation. It leverages hardware-assisted virtualization to provide a robust execution environment for untrusted code.

🌟 Core Philosophy

  • Security First: Built with Rust's memory safety guarantees. Each virtual device can be run in its own sandboxed process with restricted system access.
  • Isolation: Uses Linux namespaces, seccomp filters, and Minijail to create a multi-layered security boundary.
  • Performance: Optimized for modern workloads with features like io_uring, vhost, and an internal async runtime (cros_async).
  • Portability: Supports multiple CPU architectures and hypervisor backends.

🛠️ Technical Specifications

Supported Architectures

  • x86_64
  • aarch64
  • riscv64

Supported Hypervisors

  • Linux/Android: KVM, Gunyah (Qualcomm), GenieZone (MediaTek), Halla (Exynos).
  • Windows: WHPX (Windows Hypervisor Platform), HAXM (Intel).

Virtio Device Support

crosvm implements a wide range of paravirtualized devices via the virtio standard:

  • Network: virtio-net with optional vhost and slirp backends.
  • Storage: virtio-block supporting raw, qcow2, zstd, and Android sparse formats.
  • Graphics: virtio-gpu with 2D and 3D acceleration (via virglrenderer, gfxstream, or vulkano).
  • Display/Input: Integrated virtio gpu cross domain support for wayland passthrough
  • Audio: virtio-snd with backends for CRAS (ChromeOS), AAudio (Android), and more.
  • File System: virtio-fs and virtio-9p.
  • Other: Console, RNG, Balloon, Vsock, TPM, Pmem, Video Decoder/Encoder, etc.

🔒 Security Architecture

crosvm is designed with a “process-per-device” model:

  1. Main Process: Handles VM initialization and core orchestration.
  2. Device Processes: Each virtio device can be forked into its own process.
  3. Sandboxing: Each device process is jailed using Minijail:
    • Namespaces: VFS (pivot_root), PID, User, and Network isolation.
    • Seccomp: Strict BPF filters restrict syscalls to only those required by the specific device.
    • Capabilities: All unnecessary Linux capabilities are dropped.

📖 Documentation

🚀 Getting Started

The recommended way to build and develop crosvm is using the provided development container.

Prerequisites

  • Linux: A modern kernel (5.x+) with KVM access.
  • Podman or Docker: Installed and configured.

Building

Use the dev container to build a release version of crosvm:

./tools/dev_container ./tools/build_release

Basic Usage

Follow this example usage to run a simple Linux guest.

🤝 Community & Support


crosvm is an open-source project licensed under the BSD-3-Clause License.