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) 88b8daf57SRob Bradford - [Preparation](#preparation) 902f2eceeSRob Bradford - [Install prerequisites](#install-prerequisites) 105d535853SRob Bradford - [Clone and build](#clone-and-build) 115d535853SRob Bradford - [Containerized builds and tests](#containerized-builds-and-tests) 1243c42702SAnatol Belski - [Use Prebuilt Binaries](#use-prebuilt-binaries) 135d535853SRob Bradford - [Run](#run) 145d535853SRob Bradford - [Cloud image](#cloud-image) 155d535853SRob Bradford - [Custom kernel and disk image](#custom-kernel-and-disk-image) 16919226f3SSamuel Ortiz - [Building your kernel](#building-your-kernel) 17919226f3SSamuel Ortiz - [Disk image](#disk-image) 18919226f3SSamuel Ortiz - [Booting the guest VM](#booting-the-guest-vm) 195d535853SRob Bradford- [3. Status](#3-status) 205d535853SRob Bradford - [Hot Plug](#hot-plug) 215d535853SRob Bradford - [Device Model](#device-model) 225d535853SRob Bradford - [TODO](#todo) 23*cf31a303SRob Bradford - [Roadmap](#roadmap) 245d535853SRob Bradford- [4. `rust-vmm` project dependency](#4-rust-vmm-project-dependency) 255d535853SRob Bradford - [Firecracker and crosvm](#firecracker-and-crosvm) 265d535853SRob Bradford- [5. Community](#5-community) 275d535853SRob Bradford - [Contribute](#contribute) 285d535853SRob Bradford - [Join us](#join-us) 2902f2eceeSRob Bradford - [Security issues](#security-issues) 30919226f3SSamuel Ortiz 31919226f3SSamuel Ortiz# 1. What is Cloud Hypervisor? 32919226f3SSamuel Ortiz 33424efe6cSSebastien BoeufCloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on 34424efe6cSSebastien Boeuftop of [KVM](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt) 35424efe6cSSebastien Boeufhypervisor and Microsoft Hypervisor (MSHV). 36328e950aSRob Bradford 37424efe6cSSebastien BoeufThe project focuses on exclusively running modern, cloud workloads, on top of 38424efe6cSSebastien Boeufa limited set of hardware architectures and platforms. Cloud workloads refers 39424efe6cSSebastien Boeufto those that are usually run by customers inside a cloud provider. For our 40424efe6cSSebastien Boeufpurposes this means modern operating systems with most I/O handled by 41424efe6cSSebastien Boeufparavirtualised devices (i.e. virtio), no requirement for legacy devices, and 42424efe6cSSebastien Boeuf64-bit CPUs. 43919226f3SSamuel Ortiz 44424efe6cSSebastien BoeufCloud Hypervisor is implemented in [Rust](https://www.rust-lang.org/) and is 45424efe6cSSebastien Boeufbased on the [rust-vmm](https://github.com/rust-vmm) crates. 46919226f3SSamuel Ortiz 47919226f3SSamuel Ortiz## Objectives 48919226f3SSamuel Ortiz 49919226f3SSamuel Ortiz### High Level 50919226f3SSamuel Ortiz 51328e950aSRob Bradford- Runs on KVM or MSHV 520f48b612SMuminul Islam- Minimal emulation 530f48b612SMuminul Islam- Low latency 540f48b612SMuminul Islam- Low memory footprint 550f48b612SMuminul Islam- Low complexity 560f48b612SMuminul Islam- High performance 570f48b612SMuminul Islam- Small attack surface 580f48b612SMuminul Islam- 64-bit support only 590f48b612SMuminul Islam- CPU, memory, PCI hotplug 600f48b612SMuminul Islam- Machine to machine migration 61919226f3SSamuel Ortiz 62919226f3SSamuel Ortiz### Architectures 63919226f3SSamuel Ortiz 64424efe6cSSebastien BoeufCloud Hypervisor supports the `x86-64` and `AArch64` architectures. There are 65424efe6cSSebastien Boeufsome small differences in functionality between the two architectures 66424efe6cSSebastien Boeuf(see [#1125](https://github.com/cloud-hypervisor/cloud-hypervisor/issues/1125)). 67919226f3SSamuel Ortiz 68919226f3SSamuel Ortiz### Guest OS 69919226f3SSamuel Ortiz 70328e950aSRob BradfordCloud Hypervisor supports `64-bit Linux` and Windows 10/Windows Server 2019. 71919226f3SSamuel Ortiz 72919226f3SSamuel Ortiz# 2. Getting Started 73919226f3SSamuel Ortiz 748f4de459SHenry WangBelow sections describe how to build and run Cloud Hypervisor on the `x86_64` 758f4de459SHenry Wangplatform. For getting started on the `AArch64` platform, please refer to the 768f4de459SHenry Wang[Arm64 documentation](docs/arm64.md). 778f4de459SHenry Wang 7862681a77SRob Bradford## Host OS 7962681a77SRob Bradford 8062681a77SRob BradfordBased on required KVM functionality the minimum host kernel version is 4.11. 8162681a77SRob BradfordFor adequate peformance the minimum recommended host kernel vesion is 5.6. The 8262681a77SRob Bradfordmajority of the CI currently tests with kernel version 5.15. 8362681a77SRob Bradford 848f4de459SHenry Wang## Preparation 858f4de459SHenry Wang 86919226f3SSamuel OrtizWe create a folder to build and run `cloud-hypervisor` at `$HOME/cloud-hypervisor` 87919226f3SSamuel Ortiz 88919226f3SSamuel Ortiz```shell 89919226f3SSamuel Ortiz$ export CLOUDH=$HOME/cloud-hypervisor 90919226f3SSamuel Ortiz$ mkdir $CLOUDH 91919226f3SSamuel Ortiz``` 92919226f3SSamuel Ortiz 93029a6d8aSMuminul Islam## Install prerequisites 94029a6d8aSMuminul Islam 95424efe6cSSebastien BoeufYou need to install some prerequisite packages in order to build and test Cloud 96424efe6cSSebastien BoeufHypervisor. Here, all the steps are based on Ubuntu, for other Linux 97424efe6cSSebastien Boeufdistributions please replace the package manager and package name. 98029a6d8aSMuminul Islam 99029a6d8aSMuminul Islam```shell 10025f815e7SSteven Dake# Install build-essential, git, and qemu-utils 10125f815e7SSteven Dake$ sudo apt install git build-essential qemu-utils 102029a6d8aSMuminul Islam# Install rust tool chain 103029a6d8aSMuminul Islam$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 104029a6d8aSMuminul Islam# If you want to build statically linked binary please add musl target 105029a6d8aSMuminul Islam$ rustup target add x86_64-unknown-linux-musl 106029a6d8aSMuminul Islam``` 107029a6d8aSMuminul Islam 108919226f3SSamuel Ortiz## Clone and build 109919226f3SSamuel Ortiz 110919226f3SSamuel OrtizFirst you need to clone and build the cloud-hypervisor repo: 111919226f3SSamuel Ortiz 112919226f3SSamuel Ortiz```shell 113919226f3SSamuel Ortiz$ pushd $CLOUDH 1148ec89bc8SRob Bradford$ git clone https://github.com/cloud-hypervisor/cloud-hypervisor.git 115919226f3SSamuel Ortiz$ cd cloud-hypervisor 116919226f3SSamuel Ortiz$ cargo build --release 117919226f3SSamuel Ortiz 118919226f3SSamuel Ortiz# We need to give the cloud-hypervisor binary the NET_ADMIN capabilities for it to set TAP interfaces up on the host. 119919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./target/release/cloud-hypervisor 120919226f3SSamuel Ortiz 121029a6d8aSMuminul Islam# If you want to build statically linked binary 122029a6d8aSMuminul Islam$ cargo build --release --target=x86_64-unknown-linux-musl --all 123919226f3SSamuel Ortiz$ popd 124919226f3SSamuel Ortiz``` 125919226f3SSamuel Ortiz 126424efe6cSSebastien BoeufThis will build a `cloud-hypervisor` binary under 127424efe6cSSebastien Boeuf`$CLOUDH/cloud-hypervisor/target/release/cloud-hypervisor`. 128919226f3SSamuel Ortiz 1298676759cSSamuel Ortiz### Containerized builds and tests 1308676759cSSamuel Ortiz 1318676759cSSamuel OrtizIf you want to build and test Cloud Hypervisor without having to install all the 1328676759cSSamuel Ortizrequired dependencies (The rust toolchain, cargo tools, etc), you can also use 1338676759cSSamuel OrtizCloud Hypervisor's development script: `dev_cli.sh`. Please note that upon its 1348676759cSSamuel Ortizfirst invocation, this script will pull a fairly large container image. 1358676759cSSamuel Ortiz 1368676759cSSamuel OrtizFor example, to build the Cloud Hypervisor release binary: 1378676759cSSamuel Ortiz 1388676759cSSamuel Ortiz```shell 1398676759cSSamuel Ortiz$ pushd $CLOUDH 1408676759cSSamuel Ortiz$ cd cloud-hypervisor 1418676759cSSamuel Ortiz$ ./scripts/dev_cli.sh build --release 1428676759cSSamuel Ortiz``` 1438676759cSSamuel Ortiz 1448676759cSSamuel OrtizWith `dev_cli.sh`, one can also run the Cloud Hypervisor CI locally. This can be 1458676759cSSamuel Ortizvery convenient for debugging CI errors without having to fully rely on the 1468676759cSSamuel OrtizCloud Hypervisor CI infrastructure. 1478676759cSSamuel Ortiz 1488676759cSSamuel OrtizFor example, to run the Cloud Hypervisor unit tests: 1498676759cSSamuel Ortiz 1508676759cSSamuel Ortiz```shell 1513bf46d4cSBo Chen$ ./scripts/dev_cli.sh tests --unit 1528676759cSSamuel Ortiz``` 1538676759cSSamuel Ortiz 1548676759cSSamuel OrtizRun the `./scripts/dev_cli.sh --help` command to view all the supported 1558676759cSSamuel Ortizdevelopment script commands and their related options. 1568676759cSSamuel Ortiz 15743c42702SAnatol Belski## Use Prebuilt Binaries 15843c42702SAnatol Belski 15943c42702SAnatol BelskiCloud Hypervisor packages targeting some popular Linux distributions are available 16043c42702SAnatol Belskithanks to the [Open Build Service](https://build.opensuse.org). The 16143c42702SAnatol Belski[OBS README](https://github.com/cloud-hypervisor/obs-packaging) explains how to 16243c42702SAnatol Belskienable the repository in a supported Linux distribution and install Cloud Hypervisor 16343c42702SAnatol Belskiand accompanying packages. Please report any packaging issues in the 16443c42702SAnatol Belski[obs-packaging](https://github.com/cloud-hypervisor/obs-packaging) repository. 16543c42702SAnatol Belski 166919226f3SSamuel Ortiz## Run 167919226f3SSamuel Ortiz 168424efe6cSSebastien BoeufYou can run a guest VM by either using an existing cloud image or booting into 169424efe6cSSebastien Boeufyour own kernel and disk image. 170919226f3SSamuel Ortiz 171919226f3SSamuel Ortiz### Cloud image 172919226f3SSamuel Ortiz 17398bce5e0SRob BradfordCloud Hypervisor supports booting disk images containing all needed 1749900daacSRob Bradfordcomponents to run cloud workloads, a.k.a. cloud images. To do that we rely on 1759900daacSRob Bradfordthe [Rust Hypervisor 176424efe6cSSebastien BoeufFirmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) project 177424efe6cSSebastien Boeufto provide an ELF formatted KVM firmware for `cloud-hypervisor` to directly 178424efe6cSSebastien Boeufboot into. 179919226f3SSamuel Ortiz 180424efe6cSSebastien BoeufWe need to get the latest `rust-hypervisor-firmware` release and also a working 181424efe6cSSebastien Boeufcloud image. Here we will use a Ubuntu image: 182919226f3SSamuel Ortiz 183919226f3SSamuel Ortiz```shell 184919226f3SSamuel Ortiz$ pushd $CLOUDH 185a3342bdbSSebastien Boeuf$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img 186a3342bdbSSebastien Boeuf$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw 187b4ed9f86SRob Bradford$ wget https://github.com/cloud-hypervisor/rust-hypervisor-firmware/releases/download/0.4.1/hypervisor-fw 188919226f3SSamuel Ortiz$ popd 189919226f3SSamuel Ortiz``` 190919226f3SSamuel Ortiz 191919226f3SSamuel Ortiz```shell 192919226f3SSamuel Ortiz$ pushd $CLOUDH 193919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./cloud-hypervisor/target/release/cloud-hypervisor 194919226f3SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \ 195919226f3SSamuel Ortiz --kernel ./hypervisor-fw \ 196a3342bdbSSebastien Boeuf --disk path=focal-server-cloudimg-amd64.raw \ 197e8e21aebSSamuel Ortiz --cpus boot=4 \ 19800df79a5SSamuel Ortiz --memory size=1024M \ 199617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 200919226f3SSamuel Ortiz$ popd 201919226f3SSamuel Ortiz``` 202919226f3SSamuel Ortiz 2035652cc7aSSebastien BoeufMultiple arguments can be given to the `--disk` parameter. 2049900daacSRob Bradford 205919226f3SSamuel Ortiz### Custom kernel and disk image 206919226f3SSamuel Ortiz 207919226f3SSamuel Ortiz#### Building your kernel 208919226f3SSamuel Ortiz 209424efe6cSSebastien BoeufCloud Hypervisor also supports direct kernel boot into a `vmlinux` ELF kernel. 2109c759463SSebastien BoeufIn order to support virtio-watchdog we have our own development branch. You are 211424efe6cSSebastien Boeufof course able to use your own kernel but these instructions will continue with 212424efe6cSSebastien Boeufthe version that we develop and test against. 213d5d40537SRob Bradford 214d5d40537SRob BradfordTo build the kernel: 215919226f3SSamuel Ortiz 216919226f3SSamuel Ortiz```shell 217919226f3SSamuel Ortiz 218d5d40537SRob Bradford# Clone the Cloud Hypervisor Linux branch 219919226f3SSamuel Ortiz$ pushd $CLOUDH 2206c365617SRob Bradford$ git clone --depth 1 https://github.com/cloud-hypervisor/linux.git -b ch-5.15.12 linux-cloud-hypervisor 221d5d40537SRob Bradford$ pushd linux-cloud-hypervisor 222919226f3SSamuel Ortiz 223919226f3SSamuel Ortiz# Use the cloud-hypervisor kernel config to build your kernel 224d49059a3SMuminul Islam$ cp $CLOUDH/cloud-hypervisor/resources/linux-config-x86_64 .config 2258b8daf57SRob Bradford$ KCFLAGS="-Wa,-mx86-used-note=no" make bzImage -j `nproc` 226919226f3SSamuel Ortiz$ popd 227919226f3SSamuel Ortiz``` 228919226f3SSamuel Ortiz 229424efe6cSSebastien BoeufThe `vmlinux` kernel image will then be located at 230424efe6cSSebastien Boeuf`linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin`. 231919226f3SSamuel Ortiz 232919226f3SSamuel Ortiz#### Disk image 233919226f3SSamuel Ortiz 234424efe6cSSebastien BoeufFor the disk image, we will use a Ubuntu cloud image that contains a root 235424efe6cSSebastien Boeufpartition: 236919226f3SSamuel Ortiz 237919226f3SSamuel Ortiz```shell 238919226f3SSamuel Ortiz$ pushd $CLOUDH 239a3342bdbSSebastien Boeuf$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img 240a3342bdbSSebastien Boeuf$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw 241919226f3SSamuel Ortiz$ popd 242919226f3SSamuel Ortiz``` 243919226f3SSamuel Ortiz 244919226f3SSamuel Ortiz#### Booting the guest VM 245919226f3SSamuel Ortiz 246424efe6cSSebastien BoeufNow we can directly boot into our custom kernel and make it use the Ubuntu root 247424efe6cSSebastien Boeufpartition. If we want to have 4 vCPUs and 1024 MBytes of memory: 248919226f3SSamuel Ortiz 249919226f3SSamuel Ortiz```shell 250919226f3SSamuel Ortiz$ pushd $CLOUDH 251919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./cloud-hypervisor/target/release/cloud-hypervisor 252919226f3SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \ 253919226f3SSamuel Ortiz --kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \ 254a3342bdbSSebastien Boeuf --disk path=focal-server-cloudimg-amd64.raw \ 255a3342bdbSSebastien Boeuf --cmdline "console=hvc0 root=/dev/vda1 rw" \ 256e8e21aebSSamuel Ortiz --cpus boot=4 \ 25746eaea16SSamuel Ortiz --memory size=1024M \ 258617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 25946eaea16SSamuel Ortiz``` 26046eaea16SSamuel Ortiz 26146eaea16SSamuel OrtizThe above example use the `virtio-console` device as the guest console, and this 26246eaea16SSamuel Ortizdevice may not be enabled soon enough by the guest kernel to get early kernel 26346eaea16SSamuel Ortizdebug messages. 26446eaea16SSamuel Ortiz 26546eaea16SSamuel OrtizWhen in need for earlier debug messages, using the legacy serial device based 26646eaea16SSamuel Ortizconsole is preferred: 26746eaea16SSamuel Ortiz 26846eaea16SSamuel Ortiz``` 26946eaea16SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \ 27046eaea16SSamuel Ortiz --kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \ 27146eaea16SSamuel Ortiz --console off \ 27246eaea16SSamuel Ortiz --serial tty \ 273a3342bdbSSebastien Boeuf --disk path=focal-server-cloudimg-amd64.raw \ 274a3342bdbSSebastien Boeuf --cmdline "console=ttyS0 root=/dev/vda1 rw" \ 275e8e21aebSSamuel Ortiz --cpus boot=4 \ 27600df79a5SSamuel Ortiz --memory size=1024M \ 277617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 278919226f3SSamuel Ortiz``` 279919226f3SSamuel Ortiz 280919226f3SSamuel Ortiz# 3. Status 281919226f3SSamuel Ortiz 282424efe6cSSebastien BoeufCloud Hypervisor is under active development. The following stability guarantees 283424efe6cSSebastien Boeufare currently made: 284919226f3SSamuel Ortiz 285328e950aSRob Bradford* The API (including command line options) will not be removed or changed in a 28676b1a009SRob Bradford breaking way without a minimum of 2 major releases notice. Where possible 28776b1a009SRob Bradford warnings will be given about the use of deprecated functionality and the 28876b1a009SRob Bradford deprecations will be documented in the release notes. 28976b1a009SRob Bradford 290328e950aSRob Bradford* Point releases will be made between individual releases where there are 29176b1a009SRob Bradford substantial bug fixes or security issues that need to be fixed. These point 29276b1a009SRob Bradford releases will only include bug fixes. 293328e950aSRob Bradford 294328e950aSRob BradfordCurrently the following items are **not** guaranteed across updates: 295328e950aSRob Bradford 296328e950aSRob Bradford* Snapshot/restore is not supported across different versions 297328e950aSRob Bradford* Live migration is not supported across different versions 298328e950aSRob Bradford* The following features are considered experimental and may change 29976b1a009SRob Bradford substantially between releases: TDX, vfio-user, vDPA. 300328e950aSRob Bradford 30176b1a009SRob BradfordAs of 2022-04-05, the following cloud images are supported: 3020f48b612SMuminul Islam 3030f48b612SMuminul Islam- [Ubuntu Bionic](https://cloud-images.ubuntu.com/bionic/current/) (cloudimg) 3040f48b612SMuminul Islam- [Ubuntu Focal](https://cloud-images.ubuntu.com/focal/current/) (cloudimg) 30576b1a009SRob Bradford- [Ubuntu Jammy](https://cloud-images.ubuntu.com/jammy/current/) (cloudimg) 3061e97d141SRob Bradford 307424efe6cSSebastien BoeufDirect kernel boot to userspace should work with a rootfs from most 308424efe6cSSebastien Boeufdistributions. 309919226f3SSamuel Ortiz 310f77ea5a2SAnatol BelskiFurther details can be found in the [release documentation](docs/releases.md). 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 323919226f3SSamuel Ortiz## TODO 324919226f3SSamuel Ortiz 325424efe6cSSebastien BoeufWe are not tracking the Cloud Hypervisor TODO list from a specific git tracked 326424efe6cSSebastien Boeuffile but through 327424efe6cSSebastien Boeuf[github issues](https://github.com/cloud-hypervisor/cloud-hypervisor/issues/new) 328424efe6cSSebastien Boeufinstead. 329919226f3SSamuel Ortiz 330*cf31a303SRob Bradford## Roadmap 331*cf31a303SRob Bradford 332*cf31a303SRob BradfordThe project roadmap is tracked through a [GitHub project](https://github.com/orgs/cloud-hypervisor/projects/6). 333*cf31a303SRob Bradford 334919226f3SSamuel Ortiz# 4. `rust-vmm` project dependency 335919226f3SSamuel Ortiz 336424efe6cSSebastien BoeufIn order to satisfy the design goal of having a high-performance, 337424efe6cSSebastien Boeufsecurity-focused hypervisor the decision was made to use the 338424efe6cSSebastien Boeuf[Rust](https://www.rust-lang.org/) programming language. The language's strong 339424efe6cSSebastien Boeuffocus on memory and thread safety makes it an ideal candidate for implementing 340424efe6cSSebastien BoeufVMMs. 341919226f3SSamuel Ortiz 342424efe6cSSebastien BoeufInstead of implementing the VMM components from scratch, Cloud Hypervisor is 343424efe6cSSebastien Boeufimporting the [rust-vmm](https://github.com/rust-vmm) crates, and sharing code 344424efe6cSSebastien Boeufand architecture together with other VMMs like e.g. Amazon's 345424efe6cSSebastien Boeuf[Firecracker](https://firecracker-microvm.github.io/) and Google's 346424efe6cSSebastien Boeuf[crosvm](https://chromium.googlesource.com/chromiumos/platform/crosvm/). 347919226f3SSamuel Ortiz 348424efe6cSSebastien BoeufCloud Hypervisor embraces the rust-vmm project goals, which is to be able to 349424efe6cSSebastien Boeufshare and re-use as many virtualization crates as possible. As such, the Cloud 350424efe6cSSebastien BoeufHypervisor relationship with the rust-vmm project is twofold: 351919226f3SSamuel Ortiz 352424efe6cSSebastien Boeuf1. It will use as much of the rust-vmm code as possible. Any new rust-vmm crate 353424efe6cSSebastien Boeuf that's relevant to the project goals will be integrated as soon as possible. 354424efe6cSSebastien Boeuf2. As it is likely that the rust-vmm project will lack some of the features that 355424efe6cSSebastien Boeuf Cloud Hypervisor needs (e.g. ACPI, VFIO, vhost-user, etc), we will be using 356424efe6cSSebastien Boeuf the Cloud Hypervisor VMM to implement and test them, and contribute them back 357424efe6cSSebastien Boeuf to the rust-vmm project. 358919226f3SSamuel Ortiz 359919226f3SSamuel Ortiz## Firecracker and crosvm 360919226f3SSamuel Ortiz 361424efe6cSSebastien BoeufA large part of the Cloud Hypervisor code is based on either the Firecracker or 362424efe6cSSebastien Boeufthe crosvm projects implementations. Both of these are VMMs written in Rust with 363424efe6cSSebastien Boeufa focus on safety and security, like Cloud Hypervisor. 364919226f3SSamuel Ortiz 365424efe6cSSebastien BoeufHowever we want to emphasize that the Cloud Hypervisor project is neither a fork 366424efe6cSSebastien Boeufnor a reimplementation of any of those projects. The goals and use cases we're 367424efe6cSSebastien Boeuftrying to meet are different. We're aiming at supporting cloud workloads, i.e. 368424efe6cSSebastien Boeufthose modern, full Linux distribution images currently being run by Cloud 369424efe6cSSebastien BoeufService Provider (CSP) tenants. 370919226f3SSamuel Ortiz 371424efe6cSSebastien BoeufOur primary target is not to support client or serverless use cases, and as such 372424efe6cSSebastien Boeufour code base already diverges from the crosvm and Firecracker ones. As we add 373424efe6cSSebastien Boeufmore features to support our use cases, we believe that the divergence will 374424efe6cSSebastien Boeufincrease while at the same time sharing as much of the fundamental 375424efe6cSSebastien Boeufvirtualization code through the rust-vmm project crates as possible. 376919226f3SSamuel Ortiz 377919226f3SSamuel Ortiz# 5. Community 378919226f3SSamuel Ortiz 379424efe6cSSebastien BoeufThe Cloud Hypervisor project follows the governance, and community guidelines 380424efe6cSSebastien Boeufdescribed in the [Community](https://github.com/cloud-hypervisor/community) 381424efe6cSSebastien Boeufrepository. 3827bfe87b7SSamuel Ortiz 3837bfe87b7SSamuel Ortiz## Contribute 3847bfe87b7SSamuel Ortiz 385424efe6cSSebastien BoeufWe are working on building a global, diverse and collaborative community around 386424efe6cSSebastien Boeufthe Cloud Hypervisor project. Anyone who is interested in 387424efe6cSSebastien Boeuf[contributing](CONTRIBUTING.md) to the project is welcome to participate. 388919226f3SSamuel Ortiz 389424efe6cSSebastien BoeufWe believe that contributing to a open source project like Cloud Hypervisor 390424efe6cSSebastien Boeufcovers a lot more than just sending code. Testing, documentation, pull request 391424efe6cSSebastien Boeufreviews, bug reports, feature requests, project improvement suggestions, etc, 392424efe6cSSebastien Boeufare all equal and welcome means of contribution. See the 393424efe6cSSebastien Boeuf[CONTRIBUTING](CONTRIBUTING.md) document for more details. 394919226f3SSamuel Ortiz 395919226f3SSamuel Ortiz## Join us 396919226f3SSamuel Ortiz 3972e0f1c2aSSamuel OrtizGet an [invite to our Slack channel](https://join.slack.com/t/cloud-hypervisor/shared_invite/enQtNjY3MTE3MDkwNDQ4LWQ1MTA1ZDVmODkwMWQ1MTRhYzk4ZGNlN2UwNTI3ZmFlODU0OTcwOWZjMTkwZDExYWE3YjFmNzgzY2FmNDAyMjI) 398919226f3SSamuel Ortizand [join us on Slack](https://cloud-hypervisor.slack.com/). 39937e27842SRob Bradford 40037e27842SRob Bradford## Security issues 40137e27842SRob Bradford 402ddef99a0SRob BradfordPlease contact the maintainers listed in the MAINTAINERS.md file with security issues. 403