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) 78b8daf57SRob Bradford - [Preparation](#preparation) 802f2eceeSRob Bradford - [Install prerequisites](#install-prerequisites) 95d535853SRob Bradford - [Clone and build](#clone-and-build) 105d535853SRob Bradford - [Containerized builds and tests](#containerized-builds-and-tests) 115d535853SRob Bradford - [Run](#run) 125d535853SRob Bradford - [Cloud image](#cloud-image) 135d535853SRob Bradford - [Custom kernel and disk image](#custom-kernel-and-disk-image) 14919226f3SSamuel Ortiz - [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) 205d535853SRob Bradford - [TODO](#todo) 215d535853SRob Bradford- [4. `rust-vmm` project dependency](#4-rust-vmm-project-dependency) 225d535853SRob Bradford - [Firecracker and crosvm](#firecracker-and-crosvm) 235d535853SRob Bradford- [5. Community](#5-community) 245d535853SRob Bradford - [Contribute](#contribute) 255d535853SRob Bradford - [Join us](#join-us) 2602f2eceeSRob Bradford - [Security issues](#security-issues) 27919226f3SSamuel Ortiz 28919226f3SSamuel Ortiz# 1. What is Cloud Hypervisor? 29919226f3SSamuel Ortiz 30*424efe6cSSebastien BoeufCloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on 31*424efe6cSSebastien Boeuftop of [KVM](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt) 32*424efe6cSSebastien Boeufhypervisor and Microsoft Hypervisor (MSHV). 33328e950aSRob Bradford 34*424efe6cSSebastien BoeufThe project focuses on exclusively running modern, cloud workloads, on top of 35*424efe6cSSebastien Boeufa limited set of hardware architectures and platforms. Cloud workloads refers 36*424efe6cSSebastien Boeufto those that are usually run by customers inside a cloud provider. For our 37*424efe6cSSebastien Boeufpurposes this means modern operating systems with most I/O handled by 38*424efe6cSSebastien Boeufparavirtualised devices (i.e. virtio), no requirement for legacy devices, and 39*424efe6cSSebastien Boeuf64-bit CPUs. 40919226f3SSamuel Ortiz 41*424efe6cSSebastien BoeufCloud Hypervisor is implemented in [Rust](https://www.rust-lang.org/) and is 42*424efe6cSSebastien Boeufbased on the [rust-vmm](https://github.com/rust-vmm) crates. 43919226f3SSamuel Ortiz 44919226f3SSamuel Ortiz## Objectives 45919226f3SSamuel Ortiz 46919226f3SSamuel Ortiz### High Level 47919226f3SSamuel Ortiz 48328e950aSRob Bradford- Runs on KVM or MSHV 490f48b612SMuminul Islam- Minimal emulation 500f48b612SMuminul Islam- Low latency 510f48b612SMuminul Islam- Low memory footprint 520f48b612SMuminul Islam- Low complexity 530f48b612SMuminul Islam- High performance 540f48b612SMuminul Islam- Small attack surface 550f48b612SMuminul Islam- 64-bit support only 560f48b612SMuminul Islam- CPU, memory, PCI hotplug 570f48b612SMuminul Islam- Machine to machine migration 58919226f3SSamuel Ortiz 59919226f3SSamuel Ortiz### Architectures 60919226f3SSamuel Ortiz 61*424efe6cSSebastien BoeufCloud Hypervisor supports the `x86-64` and `AArch64` architectures. There are 62*424efe6cSSebastien Boeufsome small differences in functionality between the two architectures 63*424efe6cSSebastien Boeuf(see [#1125](https://github.com/cloud-hypervisor/cloud-hypervisor/issues/1125)). 64919226f3SSamuel Ortiz 65919226f3SSamuel Ortiz### Guest OS 66919226f3SSamuel Ortiz 67328e950aSRob BradfordCloud Hypervisor supports `64-bit Linux` and Windows 10/Windows Server 2019. 68919226f3SSamuel Ortiz 69919226f3SSamuel Ortiz# 2. Getting Started 70919226f3SSamuel Ortiz 718f4de459SHenry WangBelow sections describe how to build and run Cloud Hypervisor on the `x86_64` 728f4de459SHenry Wangplatform. For getting started on the `AArch64` platform, please refer to the 738f4de459SHenry Wang[Arm64 documentation](docs/arm64.md). 748f4de459SHenry Wang 758f4de459SHenry Wang## Preparation 768f4de459SHenry Wang 77919226f3SSamuel OrtizWe create a folder to build and run `cloud-hypervisor` at `$HOME/cloud-hypervisor` 78919226f3SSamuel Ortiz 79919226f3SSamuel Ortiz```shell 80919226f3SSamuel Ortiz$ export CLOUDH=$HOME/cloud-hypervisor 81919226f3SSamuel Ortiz$ mkdir $CLOUDH 82919226f3SSamuel Ortiz``` 83919226f3SSamuel Ortiz 84029a6d8aSMuminul Islam## Install prerequisites 85029a6d8aSMuminul Islam 86*424efe6cSSebastien BoeufYou need to install some prerequisite packages in order to build and test Cloud 87*424efe6cSSebastien BoeufHypervisor. Here, all the steps are based on Ubuntu, for other Linux 88*424efe6cSSebastien Boeufdistributions please replace the package manager and package name. 89029a6d8aSMuminul Islam 90029a6d8aSMuminul Islam```shell 91029a6d8aSMuminul Islam# Install git 92029a6d8aSMuminul Islam$ sudo apt install git 93029a6d8aSMuminul Islam# Install rust tool chain 94029a6d8aSMuminul Islam$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 95029a6d8aSMuminul Islam# Install build-essential 96029a6d8aSMuminul Islam$ sudo apt install build-essential 97029a6d8aSMuminul Islam# If you want to build statically linked binary please add musl target 98029a6d8aSMuminul Islam$ rustup target add x86_64-unknown-linux-musl 99029a6d8aSMuminul Islam``` 100029a6d8aSMuminul Islam 101919226f3SSamuel Ortiz## Clone and build 102919226f3SSamuel Ortiz 103919226f3SSamuel OrtizFirst you need to clone and build the cloud-hypervisor repo: 104919226f3SSamuel Ortiz 105919226f3SSamuel Ortiz```shell 106919226f3SSamuel Ortiz$ pushd $CLOUDH 1078ec89bc8SRob Bradford$ git clone https://github.com/cloud-hypervisor/cloud-hypervisor.git 108919226f3SSamuel Ortiz$ cd cloud-hypervisor 109919226f3SSamuel Ortiz$ cargo build --release 110919226f3SSamuel Ortiz 111919226f3SSamuel Ortiz# We need to give the cloud-hypervisor binary the NET_ADMIN capabilities for it to set TAP interfaces up on the host. 112919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./target/release/cloud-hypervisor 113919226f3SSamuel Ortiz 114029a6d8aSMuminul Islam# If you want to build statically linked binary 115029a6d8aSMuminul Islam$ cargo build --release --target=x86_64-unknown-linux-musl --all 116919226f3SSamuel Ortiz$ popd 117919226f3SSamuel Ortiz``` 118919226f3SSamuel Ortiz 119*424efe6cSSebastien BoeufThis will build a `cloud-hypervisor` binary under 120*424efe6cSSebastien Boeuf`$CLOUDH/cloud-hypervisor/target/release/cloud-hypervisor`. 121919226f3SSamuel Ortiz 1228676759cSSamuel Ortiz### Containerized builds and tests 1238676759cSSamuel Ortiz 1248676759cSSamuel OrtizIf you want to build and test Cloud Hypervisor without having to install all the 1258676759cSSamuel Ortizrequired dependencies (The rust toolchain, cargo tools, etc), you can also use 1268676759cSSamuel OrtizCloud Hypervisor's development script: `dev_cli.sh`. Please note that upon its 1278676759cSSamuel Ortizfirst invocation, this script will pull a fairly large container image. 1288676759cSSamuel Ortiz 1298676759cSSamuel OrtizFor example, to build the Cloud Hypervisor release binary: 1308676759cSSamuel Ortiz 1318676759cSSamuel Ortiz```shell 1328676759cSSamuel Ortiz$ pushd $CLOUDH 1338676759cSSamuel Ortiz$ cd cloud-hypervisor 1348676759cSSamuel Ortiz$ ./scripts/dev_cli.sh build --release 1358676759cSSamuel Ortiz``` 1368676759cSSamuel Ortiz 1378676759cSSamuel OrtizWith `dev_cli.sh`, one can also run the Cloud Hypervisor CI locally. This can be 1388676759cSSamuel Ortizvery convenient for debugging CI errors without having to fully rely on the 1398676759cSSamuel OrtizCloud Hypervisor CI infrastructure. 1408676759cSSamuel Ortiz 1418676759cSSamuel OrtizFor example, to run the Cloud Hypervisor unit tests: 1428676759cSSamuel Ortiz 1438676759cSSamuel Ortiz```shell 1443bf46d4cSBo Chen$ ./scripts/dev_cli.sh tests --unit 1458676759cSSamuel Ortiz``` 1468676759cSSamuel Ortiz 1478676759cSSamuel OrtizRun the `./scripts/dev_cli.sh --help` command to view all the supported 1488676759cSSamuel Ortizdevelopment script commands and their related options. 1498676759cSSamuel Ortiz 150919226f3SSamuel Ortiz## Run 151919226f3SSamuel Ortiz 152*424efe6cSSebastien BoeufYou can run a guest VM by either using an existing cloud image or booting into 153*424efe6cSSebastien Boeufyour own kernel and disk image. 154919226f3SSamuel Ortiz 155919226f3SSamuel Ortiz### Cloud image 156919226f3SSamuel Ortiz 15798bce5e0SRob BradfordCloud Hypervisor supports booting disk images containing all needed 1589900daacSRob Bradfordcomponents to run cloud workloads, a.k.a. cloud images. To do that we rely on 1599900daacSRob Bradfordthe [Rust Hypervisor 160*424efe6cSSebastien BoeufFirmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) project 161*424efe6cSSebastien Boeufto provide an ELF formatted KVM firmware for `cloud-hypervisor` to directly 162*424efe6cSSebastien Boeufboot into. 163919226f3SSamuel Ortiz 164*424efe6cSSebastien BoeufWe need to get the latest `rust-hypervisor-firmware` release and also a working 165*424efe6cSSebastien Boeufcloud image. Here we will use a Ubuntu image: 166919226f3SSamuel Ortiz 167919226f3SSamuel Ortiz```shell 168919226f3SSamuel Ortiz$ pushd $CLOUDH 169a3342bdbSSebastien Boeuf$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img 170a3342bdbSSebastien Boeuf$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw 1715bcbd560SRob Bradford$ wget https://github.com/cloud-hypervisor/rust-hypervisor-firmware/releases/download/0.3.2/hypervisor-fw 172919226f3SSamuel Ortiz$ popd 173919226f3SSamuel Ortiz``` 174919226f3SSamuel Ortiz 175919226f3SSamuel Ortiz```shell 176919226f3SSamuel Ortiz$ pushd $CLOUDH 177919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./cloud-hypervisor/target/release/cloud-hypervisor 178919226f3SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \ 179919226f3SSamuel Ortiz --kernel ./hypervisor-fw \ 180a3342bdbSSebastien Boeuf --disk path=focal-server-cloudimg-amd64.raw \ 181e8e21aebSSamuel Ortiz --cpus boot=4 \ 18200df79a5SSamuel Ortiz --memory size=1024M \ 183617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 184919226f3SSamuel Ortiz$ popd 185919226f3SSamuel Ortiz``` 186919226f3SSamuel Ortiz 1875652cc7aSSebastien BoeufMultiple arguments can be given to the `--disk` parameter. 1889900daacSRob Bradford 189919226f3SSamuel Ortiz### Custom kernel and disk image 190919226f3SSamuel Ortiz 191919226f3SSamuel Ortiz#### Building your kernel 192919226f3SSamuel Ortiz 193*424efe6cSSebastien BoeufCloud Hypervisor also supports direct kernel boot into a `vmlinux` ELF kernel. 194*424efe6cSSebastien BoeufIn order to support virtio-iommu we have our own development branch. You are 195*424efe6cSSebastien Boeufof course able to use your own kernel but these instructions will continue with 196*424efe6cSSebastien Boeufthe version that we develop and test against. 197d5d40537SRob Bradford 198d5d40537SRob BradfordTo build the kernel: 199919226f3SSamuel Ortiz 200919226f3SSamuel Ortiz```shell 201919226f3SSamuel Ortiz 202d5d40537SRob Bradford# Clone the Cloud Hypervisor Linux branch 203919226f3SSamuel Ortiz$ pushd $CLOUDH 20407756aa8SRob Bradford$ git clone --depth 1 https://github.com/cloud-hypervisor/linux.git -b ch-5.15.12 linux-cloud-hypervisor 205d5d40537SRob Bradford$ pushd linux-cloud-hypervisor 206919226f3SSamuel Ortiz 207919226f3SSamuel Ortiz# Use the cloud-hypervisor kernel config to build your kernel 208d49059a3SMuminul Islam$ cp $CLOUDH/cloud-hypervisor/resources/linux-config-x86_64 .config 2098b8daf57SRob Bradford$ KCFLAGS="-Wa,-mx86-used-note=no" make bzImage -j `nproc` 210919226f3SSamuel Ortiz$ popd 211919226f3SSamuel Ortiz``` 212919226f3SSamuel Ortiz 213*424efe6cSSebastien BoeufThe `vmlinux` kernel image will then be located at 214*424efe6cSSebastien Boeuf`linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin`. 215919226f3SSamuel Ortiz 216919226f3SSamuel Ortiz#### Disk image 217919226f3SSamuel Ortiz 218*424efe6cSSebastien BoeufFor the disk image, we will use a Ubuntu cloud image that contains a root 219*424efe6cSSebastien Boeufpartition: 220919226f3SSamuel Ortiz 221919226f3SSamuel Ortiz```shell 222919226f3SSamuel Ortiz$ pushd $CLOUDH 223a3342bdbSSebastien Boeuf$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img 224a3342bdbSSebastien Boeuf$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw 225919226f3SSamuel Ortiz$ popd 226919226f3SSamuel Ortiz``` 227919226f3SSamuel Ortiz 228919226f3SSamuel Ortiz#### Booting the guest VM 229919226f3SSamuel Ortiz 230*424efe6cSSebastien BoeufNow we can directly boot into our custom kernel and make it use the Ubuntu root 231*424efe6cSSebastien Boeufpartition. If we want to have 4 vCPUs and 1024 MBytes of memory: 232919226f3SSamuel Ortiz 233919226f3SSamuel Ortiz```shell 234919226f3SSamuel Ortiz$ pushd $CLOUDH 235919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./cloud-hypervisor/target/release/cloud-hypervisor 236919226f3SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \ 237919226f3SSamuel Ortiz --kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \ 238a3342bdbSSebastien Boeuf --disk path=focal-server-cloudimg-amd64.raw \ 239a3342bdbSSebastien Boeuf --cmdline "console=hvc0 root=/dev/vda1 rw" \ 240e8e21aebSSamuel Ortiz --cpus boot=4 \ 24146eaea16SSamuel Ortiz --memory size=1024M \ 242617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 24346eaea16SSamuel Ortiz``` 24446eaea16SSamuel Ortiz 24546eaea16SSamuel OrtizThe above example use the `virtio-console` device as the guest console, and this 24646eaea16SSamuel Ortizdevice may not be enabled soon enough by the guest kernel to get early kernel 24746eaea16SSamuel Ortizdebug messages. 24846eaea16SSamuel Ortiz 24946eaea16SSamuel OrtizWhen in need for earlier debug messages, using the legacy serial device based 25046eaea16SSamuel Ortizconsole is preferred: 25146eaea16SSamuel Ortiz 25246eaea16SSamuel Ortiz``` 25346eaea16SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \ 25446eaea16SSamuel Ortiz --kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \ 25546eaea16SSamuel Ortiz --console off \ 25646eaea16SSamuel Ortiz --serial tty \ 257a3342bdbSSebastien Boeuf --disk path=focal-server-cloudimg-amd64.raw \ 258a3342bdbSSebastien Boeuf --cmdline "console=ttyS0 root=/dev/vda1 rw" \ 259e8e21aebSSamuel Ortiz --cpus boot=4 \ 26000df79a5SSamuel Ortiz --memory size=1024M \ 261617b568fSMuminul Islam --net "tap=,mac=,ip=,mask=" 262919226f3SSamuel Ortiz``` 263919226f3SSamuel Ortiz 264919226f3SSamuel Ortiz# 3. Status 265919226f3SSamuel Ortiz 266*424efe6cSSebastien BoeufCloud Hypervisor is under active development. The following stability guarantees 267*424efe6cSSebastien Boeufare currently made: 268919226f3SSamuel Ortiz 269328e950aSRob Bradford* The API (including command line options) will not be removed or changed in a 270328e950aSRob Bradford breaking way without a minimum of 2 releases notice. Where possible warnings 271328e950aSRob Bradford will be given about the use of deprecated functionality and the deprecations 272328e950aSRob Bradford will be documented in the release notes. 273328e950aSRob Bradford* Point releases will be made between individual releases where there are 274328e950aSRob Bradford substantial bug fixes or security issues that need to be fixed. 275328e950aSRob Bradford 276328e950aSRob BradfordCurrently the following items are **not** guaranteed across updates: 277328e950aSRob Bradford 278328e950aSRob Bradford* Snapshot/restore is not supported across different versions 279328e950aSRob Bradford* Live migration is not supported across different versions 280328e950aSRob Bradford* The following features are considered experimental and may change 281328e950aSRob Bradford substantially between releases: TDX, SGX. 282328e950aSRob Bradford 283328e950aSRob Bradford 284328e950aSRob BradfordAs of 2021-04-29, the following cloud images are supported: 2850f48b612SMuminul Islam 2860f48b612SMuminul Islam- [Ubuntu Bionic](https://cloud-images.ubuntu.com/bionic/current/) (cloudimg) 2870f48b612SMuminul Islam- [Ubuntu Focal](https://cloud-images.ubuntu.com/focal/current/) (cloudimg) 288328e950aSRob Bradford- [Ubuntu Groovy](https://cloud-images.ubuntu.com/groovy/current/) (cloudimg) 289328e950aSRob Bradford- [Ubuntu Hirsute](https://cloud-images.ubuntu.com/hirsute/current/) (cloudimg) 2901e97d141SRob Bradford 291*424efe6cSSebastien BoeufDirect kernel boot to userspace should work with a rootfs from most 292*424efe6cSSebastien Boeufdistributions. 293919226f3SSamuel Ortiz 2946444e29bSRob Bradford## Hot Plug 2956444e29bSRob Bradford 296*424efe6cSSebastien BoeufCloud Hypervisor supports hotplug of CPUs, passthrough devices (VFIO), 297*424efe6cSSebastien Boeuf`virtio-{net,block,pmem,fs,vsock}` and memory resizing. This 298*424efe6cSSebastien Boeuf[document](docs/hotplug.md) details how to add devices to a running VM. 2996444e29bSRob Bradford 300b55d75eaSSebastien Boeuf## Device Model 301b55d75eaSSebastien Boeuf 302*424efe6cSSebastien BoeufDetails of the device model can be found in this 303*424efe6cSSebastien Boeuf[documentation](docs/device_model.md). 304b55d75eaSSebastien Boeuf 305919226f3SSamuel Ortiz## TODO 306919226f3SSamuel Ortiz 307*424efe6cSSebastien BoeufWe are not tracking the Cloud Hypervisor TODO list from a specific git tracked 308*424efe6cSSebastien Boeuffile but through 309*424efe6cSSebastien Boeuf[github issues](https://github.com/cloud-hypervisor/cloud-hypervisor/issues/new) 310*424efe6cSSebastien Boeufinstead. 311919226f3SSamuel Ortiz 312919226f3SSamuel Ortiz# 4. `rust-vmm` project dependency 313919226f3SSamuel Ortiz 314*424efe6cSSebastien BoeufIn order to satisfy the design goal of having a high-performance, 315*424efe6cSSebastien Boeufsecurity-focused hypervisor the decision was made to use the 316*424efe6cSSebastien Boeuf[Rust](https://www.rust-lang.org/) programming language. The language's strong 317*424efe6cSSebastien Boeuffocus on memory and thread safety makes it an ideal candidate for implementing 318*424efe6cSSebastien BoeufVMMs. 319919226f3SSamuel Ortiz 320*424efe6cSSebastien BoeufInstead of implementing the VMM components from scratch, Cloud Hypervisor is 321*424efe6cSSebastien Boeufimporting the [rust-vmm](https://github.com/rust-vmm) crates, and sharing code 322*424efe6cSSebastien Boeufand architecture together with other VMMs like e.g. Amazon's 323*424efe6cSSebastien Boeuf[Firecracker](https://firecracker-microvm.github.io/) and Google's 324*424efe6cSSebastien Boeuf[crosvm](https://chromium.googlesource.com/chromiumos/platform/crosvm/). 325919226f3SSamuel Ortiz 326*424efe6cSSebastien BoeufCloud Hypervisor embraces the rust-vmm project goals, which is to be able to 327*424efe6cSSebastien Boeufshare and re-use as many virtualization crates as possible. As such, the Cloud 328*424efe6cSSebastien BoeufHypervisor relationship with the rust-vmm project is twofold: 329919226f3SSamuel Ortiz 330*424efe6cSSebastien Boeuf1. It will use as much of the rust-vmm code as possible. Any new rust-vmm crate 331*424efe6cSSebastien Boeuf that's relevant to the project goals will be integrated as soon as possible. 332*424efe6cSSebastien Boeuf2. As it is likely that the rust-vmm project will lack some of the features that 333*424efe6cSSebastien Boeuf Cloud Hypervisor needs (e.g. ACPI, VFIO, vhost-user, etc), we will be using 334*424efe6cSSebastien Boeuf the Cloud Hypervisor VMM to implement and test them, and contribute them back 335*424efe6cSSebastien Boeuf to the rust-vmm project. 336919226f3SSamuel Ortiz 337919226f3SSamuel Ortiz## Firecracker and crosvm 338919226f3SSamuel Ortiz 339*424efe6cSSebastien BoeufA large part of the Cloud Hypervisor code is based on either the Firecracker or 340*424efe6cSSebastien Boeufthe crosvm projects implementations. Both of these are VMMs written in Rust with 341*424efe6cSSebastien Boeufa focus on safety and security, like Cloud Hypervisor. 342919226f3SSamuel Ortiz 343*424efe6cSSebastien BoeufHowever we want to emphasize that the Cloud Hypervisor project is neither a fork 344*424efe6cSSebastien Boeufnor a reimplementation of any of those projects. The goals and use cases we're 345*424efe6cSSebastien Boeuftrying to meet are different. We're aiming at supporting cloud workloads, i.e. 346*424efe6cSSebastien Boeufthose modern, full Linux distribution images currently being run by Cloud 347*424efe6cSSebastien BoeufService Provider (CSP) tenants. 348919226f3SSamuel Ortiz 349*424efe6cSSebastien BoeufOur primary target is not to support client or serverless use cases, and as such 350*424efe6cSSebastien Boeufour code base already diverges from the crosvm and Firecracker ones. As we add 351*424efe6cSSebastien Boeufmore features to support our use cases, we believe that the divergence will 352*424efe6cSSebastien Boeufincrease while at the same time sharing as much of the fundamental 353*424efe6cSSebastien Boeufvirtualization code through the rust-vmm project crates as possible. 354919226f3SSamuel Ortiz 355919226f3SSamuel Ortiz# 5. Community 356919226f3SSamuel Ortiz 357*424efe6cSSebastien BoeufThe Cloud Hypervisor project follows the governance, and community guidelines 358*424efe6cSSebastien Boeufdescribed in the [Community](https://github.com/cloud-hypervisor/community) 359*424efe6cSSebastien Boeufrepository. 3607bfe87b7SSamuel Ortiz 3617bfe87b7SSamuel Ortiz## Contribute 3627bfe87b7SSamuel Ortiz 363*424efe6cSSebastien BoeufWe are working on building a global, diverse and collaborative community around 364*424efe6cSSebastien Boeufthe Cloud Hypervisor project. Anyone who is interested in 365*424efe6cSSebastien Boeuf[contributing](CONTRIBUTING.md) to the project is welcome to participate. 366919226f3SSamuel Ortiz 367*424efe6cSSebastien BoeufWe believe that contributing to a open source project like Cloud Hypervisor 368*424efe6cSSebastien Boeufcovers a lot more than just sending code. Testing, documentation, pull request 369*424efe6cSSebastien Boeufreviews, bug reports, feature requests, project improvement suggestions, etc, 370*424efe6cSSebastien Boeufare all equal and welcome means of contribution. See the 371*424efe6cSSebastien Boeuf[CONTRIBUTING](CONTRIBUTING.md) document for more details. 372919226f3SSamuel Ortiz 373919226f3SSamuel Ortiz## Join us 374919226f3SSamuel Ortiz 3752e0f1c2aSSamuel OrtizGet an [invite to our Slack channel](https://join.slack.com/t/cloud-hypervisor/shared_invite/enQtNjY3MTE3MDkwNDQ4LWQ1MTA1ZDVmODkwMWQ1MTRhYzk4ZGNlN2UwNTI3ZmFlODU0OTcwOWZjMTkwZDExYWE3YjFmNzgzY2FmNDAyMjI) 376919226f3SSamuel Ortizand [join us on Slack](https://cloud-hypervisor.slack.com/). 37737e27842SRob Bradford 37837e27842SRob Bradford## Security issues 37937e27842SRob Bradford 380*424efe6cSSebastien BoeufPlease use the GitHub security advisories feature for reporting issues: 381*424efe6cSSebastien Boeufhttps://github.com/cloud-hypervisor/cloud-hypervisor/security/advisories/new 382