15d535853SRob Bradford- [1. What is Cloud Hypervisor?](#1-what-is-cloud-hypervisor) 25d535853SRob Bradford - [Objectives](#objectives) 35d535853SRob Bradford - [High Level](#high-level) 45d535853SRob Bradford - [Architectures](#architectures) 55d535853SRob Bradford - [Guest OS](#guest-os) 65d535853SRob Bradford- [2. Getting Started](#2-getting-started) 762681a77SRob Bradford - [Host OS](#host-os) 8ffc222b2SRob Bradford - [Use Pre-built Binaries](#use-pre-built-binaries) 9ffc222b2SRob Bradford - [Packages](#packages) 10ffc222b2SRob Bradford - [Building from Source](#building-from-source) 11ffc222b2SRob Bradford - [Booting Linux](#booting-linux) 12ffc222b2SRob Bradford - [Firmware Booting](#firmware-booting) 13ffc222b2SRob Bradford - [Custom Kernel and Disk Image](#custom-kernel-and-disk-image) 14ffc222b2SRob Bradford - [Building your Kernel](#building-your-kernel) 15919226f3SSamuel Ortiz - [Disk image](#disk-image) 16919226f3SSamuel Ortiz - [Booting the guest VM](#booting-the-guest-vm) 175d535853SRob Bradford- [3. Status](#3-status) 185d535853SRob Bradford - [Hot Plug](#hot-plug) 195d535853SRob Bradford - [Device Model](#device-model) 20cf31a303SRob Bradford - [Roadmap](#roadmap) 21ffc222b2SRob Bradford- [4. Relationship with _Rust VMM_ Project](#4-relationship-with-rust-vmm-project) 22ffc222b2SRob Bradford - [Differences with Firecracker and crosvm](#differences-with-firecracker-and-crosvm) 235d535853SRob Bradford- [5. Community](#5-community) 245d535853SRob Bradford - [Contribute](#contribute) 25362f95c8SRob Bradford - [Slack](#slack) 26362f95c8SRob Bradford - [Mailing list](#mailing-list) 2702f2eceeSRob Bradford - [Security issues](#security-issues) 28919226f3SSamuel Ortiz 29919226f3SSamuel Ortiz# 1. What is Cloud Hypervisor? 30919226f3SSamuel Ortiz 31424efe6cSSebastien BoeufCloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on 32ffc222b2SRob Bradfordtop of the [KVM](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt) 33ffc222b2SRob Bradfordhypervisor and the Microsoft Hypervisor (MSHV). 34328e950aSRob Bradford 35ffc222b2SRob BradfordThe project focuses on running modern, _Cloud Workloads_, on specific, common, 36ffc222b2SRob Bradfordhardware architectures. In this case _Cloud Workloads_ refers to those that are 37ffc222b2SRob Bradfordrun by customers inside a Cloud Service Provider. This means modern operating 38ffc222b2SRob Bradfordsystems with most I/O handled by 39ffc222b2SRob Bradfordparavirtualised devices (e.g. _virtio_), no requirement for legacy devices, and 40424efe6cSSebastien Boeuf64-bit CPUs. 41919226f3SSamuel Ortiz 42424efe6cSSebastien BoeufCloud Hypervisor is implemented in [Rust](https://www.rust-lang.org/) and is 43ffc222b2SRob Bradfordbased on the [Rust VMM](https://github.com/rust-vmm) crates. 44919226f3SSamuel Ortiz 45919226f3SSamuel Ortiz## Objectives 46919226f3SSamuel Ortiz 47919226f3SSamuel Ortiz### High Level 48919226f3SSamuel Ortiz 49328e950aSRob Bradford- Runs on KVM or MSHV 500f48b612SMuminul Islam- Minimal emulation 510f48b612SMuminul Islam- Low latency 520f48b612SMuminul Islam- Low memory footprint 530f48b612SMuminul Islam- Low complexity 540f48b612SMuminul Islam- High performance 550f48b612SMuminul Islam- Small attack surface 560f48b612SMuminul Islam- 64-bit support only 570f48b612SMuminul Islam- CPU, memory, PCI hotplug 580f48b612SMuminul Islam- Machine to machine migration 59919226f3SSamuel Ortiz 60919226f3SSamuel Ortiz### Architectures 61919226f3SSamuel Ortiz 62424efe6cSSebastien BoeufCloud Hypervisor supports the `x86-64` and `AArch64` architectures. There are 63ffc222b2SRob Bradfordminor differences in functionality between the two architectures 64424efe6cSSebastien Boeuf(see [#1125](https://github.com/cloud-hypervisor/cloud-hypervisor/issues/1125)). 65919226f3SSamuel Ortiz 66919226f3SSamuel Ortiz### Guest OS 67919226f3SSamuel Ortiz 68328e950aSRob BradfordCloud Hypervisor supports `64-bit Linux` and Windows 10/Windows Server 2019. 69919226f3SSamuel Ortiz 70919226f3SSamuel Ortiz# 2. Getting Started 71919226f3SSamuel Ortiz 72d15e1f1aSHenry WangThe following sections describe how to build and run Cloud Hypervisor. 73d15e1f1aSHenry Wang 74d15e1f1aSHenry Wang## Prerequisites for AArch64 75d15e1f1aSHenry Wang 76d15e1f1aSHenry Wang- AArch64 servers (recommended) or development boards equipped with the GICv3 77d15e1f1aSHenry Wang interrupt controller. 788f4de459SHenry Wang 7962681a77SRob Bradford## Host OS 8062681a77SRob Bradford 81c03f3b54SYi WangFor required KVM functionality and adequate performance the recommended host 82c03f3b54SYi Wangkernel version is 5.13. The majority of the CI currently tests with kernel 83c03f3b54SYi Wangversion 5.15. 8462681a77SRob Bradford 85ffc222b2SRob Bradford## Use Pre-built Binaries 868f4de459SHenry Wang 87ffc222b2SRob BradfordThe recommended approach to getting started with Cloud Hypervisor is by using a 88ffc222b2SRob Bradfordpre-built binary. Binaries are available for the [latest 89ffc222b2SRob Bradfordrelease](https://github.com/cloud-hypervisor/cloud-hypervisor/releases/latest). 90ffc222b2SRob BradfordUse `cloud-hypervisor-static` for `x86-64` or `cloud-hypervisor-static-aarch64` 91ffc222b2SRob Bradfordfor `AArch64` platform. 92919226f3SSamuel Ortiz 93ffc222b2SRob Bradford## Packages 94919226f3SSamuel Ortiz 95ffc222b2SRob BradfordFor convenience, packages are also available targeting some popular Linux 96ffc222b2SRob Bradforddistributions. This is thanks to the [Open Build 97ffc222b2SRob BradfordService](https://build.opensuse.org). The [OBS 98ffc222b2SRob BradfordREADME](https://github.com/cloud-hypervisor/obs-packaging) explains how to 9943c42702SAnatol Belskienable the repository in a supported Linux distribution and install Cloud Hypervisor 10043c42702SAnatol Belskiand accompanying packages. Please report any packaging issues in the 10143c42702SAnatol Belski[obs-packaging](https://github.com/cloud-hypervisor/obs-packaging) repository. 10243c42702SAnatol Belski 103ffc222b2SRob Bradford## Building from Source 104919226f3SSamuel Ortiz 105ffc222b2SRob BradfordPlease see the [instructions for building from source](docs/building.md) if you 106ffc222b2SRob Bradforddo not wish to use the pre-built binaries. 107919226f3SSamuel Ortiz 108ffc222b2SRob Bradford## Booting Linux 109919226f3SSamuel Ortiz 110b93d5058SHenry WangCloud Hypervisor supports direct kernel boot (the x86-64 kernel requires the kernel 111*6362b711SStefan Nuernbergerbuilt with PVH support or a bzImage) or booting via a firmware (either [Rust Hypervisor 112ffc222b2SRob BradfordFirmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) or an 113b93d5058SHenry Wangedk2 UEFI firmware called `CLOUDHV` / `CLOUDHV_EFI`.) 114ffc222b2SRob Bradford 115ffc222b2SRob BradfordBinary builds of the firmware files are available for the latest release of 11683d757d8SDaniel Farina[Rust Hypervisor 117ffc222b2SRob BradfordFirmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware/releases/latest) 118ffc222b2SRob Bradfordand [our edk2 119ffc222b2SRob Bradfordrepository](https://github.com/cloud-hypervisor/edk2/releases/latest) 120ffc222b2SRob Bradford 121ffc222b2SRob BradfordThe choice of firmware depends on your guest OS choice; some experimentation 122ffc222b2SRob Bradfordmay be required. 123ffc222b2SRob Bradford 124ffc222b2SRob Bradford### Firmware Booting 125ffc222b2SRob Bradford 126ffc222b2SRob BradfordCloud Hypervisor supports booting disk images containing all needed components 127ffc222b2SRob Bradfordto run cloud workloads, a.k.a. cloud images. 128ffc222b2SRob Bradford 129ffc222b2SRob BradfordThe following sample commands will download an Ubuntu Cloud image, converting 130ffc222b2SRob Bradfordit into a format that Cloud Hypervisor can use and a firmware to boot the image 131ffc222b2SRob Bradfordwith. 132919226f3SSamuel Ortiz 133919226f3SSamuel Ortiz```shell 134a3342bdbSSebastien Boeuf$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img 135a3342bdbSSebastien Boeuf$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw 136a9e30c88SRob Bradford$ wget https://github.com/cloud-hypervisor/rust-hypervisor-firmware/releases/download/0.4.2/hypervisor-fw 137919226f3SSamuel Ortiz``` 138919226f3SSamuel Ortiz 139ffc222b2SRob BradfordThe Ubuntu cloud images do not ship with a default password so it necessary to 140ffc222b2SRob Bradforduse a `cloud-init` disk image to customise the image on the first boot. A basic 141ffc222b2SRob Bradford`cloud-init` image is generated by this [script](scripts/create-cloud-init.sh). 142ffc222b2SRob BradfordThis seeds the image with a default username/password of `cloud/cloud123`. It 143e8d6c9ecSRavi kumar Veeramallyis only necessary to add this disk image on the first boot. Script also assigns 144e8d6c9ecSRavi kumar Veeramallydefault IP address using `test_data/cloud-init/ubuntu/local/network-config` details 145e8d6c9ecSRavi kumar Veeramallywith `--net "mac=12:34:56:78:90:ab,tap="` option. Then the matching mac address 146e8d6c9ecSRavi kumar Veeramallyinterface will be enabled as per `network-config` details. 147ffc222b2SRob Bradford 148919226f3SSamuel Ortiz```shell 149ffc222b2SRob Bradford$ sudo setcap cap_net_admin+ep ./cloud-hypervisor 150ffc222b2SRob Bradford$ ./create-cloud-init.sh 151073374e2SRob Bradford$ ./cloud-hypervisor \ 152919226f3SSamuel Ortiz --kernel ./hypervisor-fw \ 153fa22cb0bSRavi kumar Veeramally --disk path=focal-server-cloudimg-amd64.raw path=/tmp/ubuntu-cloudinit.img \ 154e8e21aebSSamuel Ortiz --cpus boot=4 \ 15500df79a5SSamuel Ortiz --memory size=1024M \ 156617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 157919226f3SSamuel Ortiz``` 158919226f3SSamuel Ortiz 159ffc222b2SRob BradfordIf access to the firmware messages or interaction with the boot loader (e.g. 160ffc222b2SRob BradfordGRUB) is required then it necessary to switch to the serial console instead of 161ffc222b2SRob Bradford`virtio-console`. 1629900daacSRob Bradford 163ffc222b2SRob Bradford```shell 164073374e2SRob Bradford$ ./cloud-hypervisor \ 165ffc222b2SRob Bradford --kernel ./hypervisor-fw \ 166fa22cb0bSRavi kumar Veeramally --disk path=focal-server-cloudimg-amd64.raw path=/tmp/ubuntu-cloudinit.img \ 167ffc222b2SRob Bradford --cpus boot=4 \ 168ffc222b2SRob Bradford --memory size=1024M \ 169ffc222b2SRob Bradford --net "tap=,mac=,ip=,mask=" \ 170ffc222b2SRob Bradford --serial tty \ 171ffc222b2SRob Bradford --console off 172ffc222b2SRob Bradford``` 173919226f3SSamuel Ortiz 174ffc222b2SRob Bradford### Custom Kernel and Disk Image 175919226f3SSamuel Ortiz 176ffc222b2SRob Bradford#### Building your Kernel 177ffc222b2SRob Bradford 178*6362b711SStefan NuernbergerCloud Hypervisor also supports direct kernel boot. For x86-64, a `vmlinux` ELF kernel (compiled with PVH support) or a regular bzImage are supported. In order to support development there is a custom branch; however provided the required options are enabled any recent kernel will suffice. 179d5d40537SRob Bradford 180d5d40537SRob BradfordTo build the kernel: 181919226f3SSamuel Ortiz 182919226f3SSamuel Ortiz```shell 183d5d40537SRob Bradford# Clone the Cloud Hypervisor Linux branch 184c152f9f6SBo Chen$ git clone --depth 1 https://github.com/cloud-hypervisor/linux.git -b ch-6.2 linux-cloud-hypervisor 185d5d40537SRob Bradford$ pushd linux-cloud-hypervisor 186de4cd49cSHenry Wang# Use the x86-64 cloud-hypervisor kernel config to build your kernel for x86-64 187ffc222b2SRob Bradford$ wget https://raw.githubusercontent.com/cloud-hypervisor/cloud-hypervisor/main/resources/linux-config-x86_64 188de4cd49cSHenry Wang# Use the AArch64 cloud-hypervisor kernel config to build your kernel for AArch64 189de4cd49cSHenry Wang$ wget https://raw.githubusercontent.com/cloud-hypervisor/cloud-hypervisor/main/resources/linux-config-aarch64 190de4cd49cSHenry Wang$ cp linux-config-x86_64 .config # x86-64 191de4cd49cSHenry Wang$ cp linux-config-aarch64 .config # AArch64 192de4cd49cSHenry Wang# Do native build of the x86-64 kernel 1938b8daf57SRob Bradford$ KCFLAGS="-Wa,-mx86-used-note=no" make bzImage -j `nproc` 194de4cd49cSHenry Wang# Do native build of the AArch64 kernel 195de4cd49cSHenry Wang$ make -j `nproc` 196919226f3SSamuel Ortiz$ popd 197919226f3SSamuel Ortiz``` 198919226f3SSamuel Ortiz 199de4cd49cSHenry WangFor x86-64, the `vmlinux` kernel image will then be located at 200424efe6cSSebastien Boeuf`linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin`. 201de4cd49cSHenry WangFor AArch64, the `Image` kernel image will then be located at 202de4cd49cSHenry Wang`linux-cloud-hypervisor/arch/arm64/boot/Image`. 203919226f3SSamuel Ortiz 204919226f3SSamuel Ortiz#### Disk image 205919226f3SSamuel Ortiz 206ffc222b2SRob BradfordFor the disk image the same Ubuntu image as before can be used. This contains 207ffc222b2SRob Bradfordan `ext4` root filesystem. 208919226f3SSamuel Ortiz 209919226f3SSamuel Ortiz```shell 21070954592SHenry Wang$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img # x86-64 21170954592SHenry Wang$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-arm64.img # AArch64 21270954592SHenry Wang$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw # x86-64 21370954592SHenry Wang$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-arm64.img focal-server-cloudimg-arm64.raw # AArch64 214919226f3SSamuel Ortiz``` 215919226f3SSamuel Ortiz 216919226f3SSamuel Ortiz#### Booting the guest VM 217919226f3SSamuel Ortiz 218ffc222b2SRob BradfordThese sample commands boot the disk image using the custom kernel whilst also 219ffc222b2SRob Bradfordsupplying the desired kernel command line. 220919226f3SSamuel Ortiz 221b93d5058SHenry Wang- x86-64 222b93d5058SHenry Wang 223919226f3SSamuel Ortiz```shell 224ffc222b2SRob Bradford$ sudo setcap cap_net_admin+ep ./cloud-hypervisor 225ffc222b2SRob Bradford$ ./create-cloud-init.sh 226ffc222b2SRob Bradford$ ./cloud-hypervisor \ 227919226f3SSamuel Ortiz --kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \ 228fa22cb0bSRavi kumar Veeramally --disk path=focal-server-cloudimg-amd64.raw path=/tmp/ubuntu-cloudinit.img \ 229a3342bdbSSebastien Boeuf --cmdline "console=hvc0 root=/dev/vda1 rw" \ 230e8e21aebSSamuel Ortiz --cpus boot=4 \ 23146eaea16SSamuel Ortiz --memory size=1024M \ 232617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 23346eaea16SSamuel Ortiz``` 23446eaea16SSamuel Ortiz 235b93d5058SHenry Wang- AArch64 236b93d5058SHenry Wang 237b93d5058SHenry Wang```shell 238b93d5058SHenry Wang$ sudo setcap cap_net_admin+ep ./cloud-hypervisor 239b93d5058SHenry Wang$ ./create-cloud-init.sh 240b93d5058SHenry Wang$ ./cloud-hypervisor \ 241b93d5058SHenry Wang --kernel ./linux-cloud-hypervisor/arch/arm64/boot/Image \ 242fa22cb0bSRavi kumar Veeramally --disk path=focal-server-cloudimg-arm64.raw path=/tmp/ubuntu-cloudinit.img \ 243b93d5058SHenry Wang --cmdline "console=hvc0 root=/dev/vda1 rw" \ 244b93d5058SHenry Wang --cpus boot=4 \ 245b93d5058SHenry Wang --memory size=1024M \ 246b93d5058SHenry Wang --net "tap=,mac=,ip=,mask=" 247b93d5058SHenry Wang``` 248b93d5058SHenry Wang 249ffc222b2SRob BradfordIf earlier kernel messages are required the serial console should be used instead of `virtio-console`. 25046eaea16SSamuel Ortiz 251b93d5058SHenry Wang- x86-64 252b93d5058SHenry Wang 253b93d5058SHenry Wang```shell 254b93d5058SHenry Wang$ ./cloud-hypervisor \ 25546eaea16SSamuel Ortiz --kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \ 25646eaea16SSamuel Ortiz --console off \ 25746eaea16SSamuel Ortiz --serial tty \ 258a3342bdbSSebastien Boeuf --disk path=focal-server-cloudimg-amd64.raw \ 259a3342bdbSSebastien Boeuf --cmdline "console=ttyS0 root=/dev/vda1 rw" \ 260e8e21aebSSamuel Ortiz --cpus boot=4 \ 26100df79a5SSamuel Ortiz --memory size=1024M \ 262617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 263919226f3SSamuel Ortiz``` 264919226f3SSamuel Ortiz 265b93d5058SHenry Wang- AArch64 266b93d5058SHenry Wang 267b93d5058SHenry Wang```shell 268b93d5058SHenry Wang$ ./cloud-hypervisor \ 269b93d5058SHenry Wang --kernel ./linux-cloud-hypervisor/arch/arm64/boot/Image \ 270b93d5058SHenry Wang --console off \ 271b93d5058SHenry Wang --serial tty \ 272b93d5058SHenry Wang --disk path=focal-server-cloudimg-arm64.raw \ 273b93d5058SHenry Wang --cmdline "console=ttyAMA0 root=/dev/vda1 rw" \ 274b93d5058SHenry Wang --cpus boot=4 \ 275b93d5058SHenry Wang --memory size=1024M \ 276b93d5058SHenry Wang --net "tap=,mac=,ip=,mask=" 277b93d5058SHenry Wang``` 278b93d5058SHenry Wang 279919226f3SSamuel Ortiz# 3. Status 280919226f3SSamuel Ortiz 281ffc222b2SRob BradfordCloud Hypervisor is under active development. The following stability 282ffc222b2SRob Bradfordguarantees are currently made: 283919226f3SSamuel Ortiz 284328e950aSRob Bradford* The API (including command line options) will not be removed or changed in a 28576b1a009SRob Bradford breaking way without a minimum of 2 major releases notice. Where possible 28676b1a009SRob Bradford warnings will be given about the use of deprecated functionality and the 28776b1a009SRob Bradford deprecations will be documented in the release notes. 28876b1a009SRob Bradford 289328e950aSRob Bradford* Point releases will be made between individual releases where there are 29076b1a009SRob Bradford substantial bug fixes or security issues that need to be fixed. These point 29176b1a009SRob Bradford releases will only include bug fixes. 292328e950aSRob Bradford 293328e950aSRob BradfordCurrently the following items are **not** guaranteed across updates: 294328e950aSRob Bradford 295328e950aSRob Bradford* Snapshot/restore is not supported across different versions 296328e950aSRob Bradford* Live migration is not supported across different versions 297328e950aSRob Bradford* The following features are considered experimental and may change 29876b1a009SRob Bradford substantially between releases: TDX, vfio-user, vDPA. 299328e950aSRob Bradford 300ffc222b2SRob BradfordFurther details can be found in the [release documentation](docs/releases.md). 3010f48b612SMuminul Islam 3020036302fSRob BradfordAs of 2023-01-03, the following cloud images are supported: 303ffc222b2SRob Bradford 30470954592SHenry Wang- [Ubuntu Focal](https://cloud-images.ubuntu.com/focal/current/) (focal-server-cloudimg-{amd64,arm64}.img) 30570954592SHenry Wang- [Ubuntu Jammy](https://cloud-images.ubuntu.com/jammy/current/) (jammy-server-cloudimg-{amd64,arm64}.img ) 30670954592SHenry Wang- [Fedora 36](https://fedora.mirrorservice.org/fedora/linux/releases/36/Cloud/) ([Fedora-Cloud-Base-36-1.5.x86_64.raw.xz](https://fedora.mirrorservice.org/fedora/linux/releases/36/Cloud/x86_64/images/) / [Fedora-Cloud-Base-36-1.5.aarch64.raw.xz](https://fedora.mirrorservice.org/fedora/linux/releases/36/Cloud/aarch64/images/)) 3071e97d141SRob Bradford 308424efe6cSSebastien BoeufDirect kernel boot to userspace should work with a rootfs from most 309ffc222b2SRob Bradforddistributions although you may need to enable exotic filesystem types in the 310ffc222b2SRob Bradfordreference kernel configuration (e.g. XFS or btrfs.) 311f77ea5a2SAnatol Belski 3126444e29bSRob Bradford## Hot Plug 3136444e29bSRob Bradford 314424efe6cSSebastien BoeufCloud Hypervisor supports hotplug of CPUs, passthrough devices (VFIO), 315424efe6cSSebastien Boeuf`virtio-{net,block,pmem,fs,vsock}` and memory resizing. This 316424efe6cSSebastien Boeuf[document](docs/hotplug.md) details how to add devices to a running VM. 3176444e29bSRob Bradford 318b55d75eaSSebastien Boeuf## Device Model 319b55d75eaSSebastien Boeuf 320424efe6cSSebastien BoeufDetails of the device model can be found in this 321424efe6cSSebastien Boeuf[documentation](docs/device_model.md). 322b55d75eaSSebastien Boeuf 323cf31a303SRob Bradford## Roadmap 324cf31a303SRob Bradford 325ffc222b2SRob BradfordThe project roadmap is tracked through a [GitHub 326ffc222b2SRob Bradfordproject](https://github.com/orgs/cloud-hypervisor/projects/6). 327cf31a303SRob Bradford 328ffc222b2SRob Bradford# 4. Relationship with _Rust VMM_ Project 329919226f3SSamuel Ortiz 330424efe6cSSebastien BoeufIn order to satisfy the design goal of having a high-performance, 331424efe6cSSebastien Boeufsecurity-focused hypervisor the decision was made to use the 332424efe6cSSebastien Boeuf[Rust](https://www.rust-lang.org/) programming language. The language's strong 333424efe6cSSebastien Boeuffocus on memory and thread safety makes it an ideal candidate for implementing 334424efe6cSSebastien BoeufVMMs. 335919226f3SSamuel Ortiz 336424efe6cSSebastien BoeufInstead of implementing the VMM components from scratch, Cloud Hypervisor is 337ffc222b2SRob Bradfordimporting the [Rust VMM](https://github.com/rust-vmm) crates, and sharing code 338424efe6cSSebastien Boeufand architecture together with other VMMs like e.g. Amazon's 339424efe6cSSebastien Boeuf[Firecracker](https://firecracker-microvm.github.io/) and Google's 340424efe6cSSebastien Boeuf[crosvm](https://chromium.googlesource.com/chromiumos/platform/crosvm/). 341919226f3SSamuel Ortiz 342ffc222b2SRob BradfordCloud Hypervisor embraces the _Rust VMM_ project's goals, which is to be able 343ffc222b2SRob Bradfordto share and re-use as many virtualization crates as possible. 344919226f3SSamuel Ortiz 345ffc222b2SRob Bradford## Differences with Firecracker and crosvm 346919226f3SSamuel Ortiz 347424efe6cSSebastien BoeufA large part of the Cloud Hypervisor code is based on either the Firecracker or 348ffc222b2SRob Bradfordthe crosvm project's implementations. Both of these are VMMs written in Rust 349ffc222b2SRob Bradfordwith a focus on safety and security, like Cloud Hypervisor. 350919226f3SSamuel Ortiz 351ffc222b2SRob BradfordThe goal of the Cloud Hypervisor project differs from the aforementioned 352ffc222b2SRob Bradfordprojects in that it aims to be a general purpose VMM for _Cloud Workloads_ and 353ffc222b2SRob Bradfordnot limited to container/serverless or client workloads. 354919226f3SSamuel Ortiz 355ffc222b2SRob BradfordThe Cloud Hypervisor community thanks the communities of both the Firecracker 356ffc222b2SRob Bradfordand crosvm projects for their excellent work. 357919226f3SSamuel Ortiz 358919226f3SSamuel Ortiz# 5. Community 359919226f3SSamuel Ortiz 360424efe6cSSebastien BoeufThe Cloud Hypervisor project follows the governance, and community guidelines 361424efe6cSSebastien Boeufdescribed in the [Community](https://github.com/cloud-hypervisor/community) 362424efe6cSSebastien Boeufrepository. 3637bfe87b7SSamuel Ortiz 3647bfe87b7SSamuel Ortiz## Contribute 3657bfe87b7SSamuel Ortiz 366ffc222b2SRob BradfordThe project strongly believes in building a global, diverse and collaborative 367ffc222b2SRob Bradfordcommunity around the Cloud Hypervisor project. Anyone who is interested in 368424efe6cSSebastien Boeuf[contributing](CONTRIBUTING.md) to the project is welcome to participate. 369919226f3SSamuel Ortiz 370ffc222b2SRob BradfordContributing to a open source project like Cloud Hypervisor covers a lot more 371ffc222b2SRob Bradfordthan just sending code. Testing, documentation, pull request 372424efe6cSSebastien Boeufreviews, bug reports, feature requests, project improvement suggestions, etc, 373424efe6cSSebastien Boeufare all equal and welcome means of contribution. See the 374424efe6cSSebastien Boeuf[CONTRIBUTING](CONTRIBUTING.md) document for more details. 375919226f3SSamuel Ortiz 376362f95c8SRob Bradford## Slack 377919226f3SSamuel Ortiz 378feb523efSBo ChenGet an [invite to our Slack channel](https://join.slack.com/t/cloud-hypervisor/shared_invite/enQtNjY3MTE3MDkwNDQ4LWQ1MTA1ZDVmODkwMWQ1MTRhYzk4ZGNlN2UwNTI3ZmFlODU0OTcwOWZjMTkwZDExYWE3YjFmNzgzY2FmNDAyMjI), 379feb523efSBo Chen [join us on Slack](https://cloud-hypervisor.slack.com/), and [participate in our community activities](https://cloud-hypervisor.slack.com/archives/C04R5DUQVBN). 38037e27842SRob Bradford 381362f95c8SRob Bradford## Mailing list 382362f95c8SRob Bradford 383362f95c8SRob BradfordPlease report bugs using the [GitHub issue 384362f95c8SRob Bradfordtracker](https://github.com/cloud-hypervisor/cloud-hypervisor/issues) but for 385362f95c8SRob Bradfordbroader community discussions you may use our [mailing 386362f95c8SRob Bradfordlist](https://lists.cloudhypervisor.org/g/dev/). 387362f95c8SRob Bradford 38837e27842SRob Bradford## Security issues 38937e27842SRob Bradford 390ddef99a0SRob BradfordPlease contact the maintainers listed in the MAINTAINERS.md file with security issues. 391