xref: /cloud-hypervisor/README.md (revision 362f95c825efb8d0da58908e9c69e93784ca642d)
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)
23cf31a303SRob 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)
28*362f95c8SRob Bradford  - [Slack](#slack)
29*362f95c8SRob Bradford  - [Mailing list](#mailing-list)
3002f2eceeSRob Bradford  - [Security issues](#security-issues)
31919226f3SSamuel Ortiz
32919226f3SSamuel Ortiz# 1. What is Cloud Hypervisor?
33919226f3SSamuel Ortiz
34424efe6cSSebastien BoeufCloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on
35424efe6cSSebastien Boeuftop of [KVM](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt)
36424efe6cSSebastien Boeufhypervisor and Microsoft Hypervisor (MSHV).
37328e950aSRob Bradford
38424efe6cSSebastien BoeufThe project focuses on exclusively running modern, cloud workloads, on top of
39424efe6cSSebastien Boeufa limited set of hardware architectures and platforms. Cloud workloads refers
40424efe6cSSebastien Boeufto those that are usually run by customers inside a cloud provider. For our
41424efe6cSSebastien Boeufpurposes this means modern operating systems with most I/O handled by
42424efe6cSSebastien Boeufparavirtualised devices (i.e. virtio), no requirement for legacy devices, and
43424efe6cSSebastien Boeuf64-bit CPUs.
44919226f3SSamuel Ortiz
45424efe6cSSebastien BoeufCloud Hypervisor is implemented in [Rust](https://www.rust-lang.org/) and is
46424efe6cSSebastien Boeufbased on the [rust-vmm](https://github.com/rust-vmm) crates.
47919226f3SSamuel Ortiz
48919226f3SSamuel Ortiz## Objectives
49919226f3SSamuel Ortiz
50919226f3SSamuel Ortiz### High Level
51919226f3SSamuel Ortiz
52328e950aSRob Bradford- Runs on KVM or MSHV
530f48b612SMuminul Islam- Minimal emulation
540f48b612SMuminul Islam- Low latency
550f48b612SMuminul Islam- Low memory footprint
560f48b612SMuminul Islam- Low complexity
570f48b612SMuminul Islam- High performance
580f48b612SMuminul Islam- Small attack surface
590f48b612SMuminul Islam- 64-bit support only
600f48b612SMuminul Islam- CPU, memory, PCI hotplug
610f48b612SMuminul Islam- Machine to machine migration
62919226f3SSamuel Ortiz
63919226f3SSamuel Ortiz### Architectures
64919226f3SSamuel Ortiz
65424efe6cSSebastien BoeufCloud Hypervisor supports the `x86-64` and `AArch64` architectures. There are
66424efe6cSSebastien Boeufsome small differences in functionality between the two architectures
67424efe6cSSebastien Boeuf(see [#1125](https://github.com/cloud-hypervisor/cloud-hypervisor/issues/1125)).
68919226f3SSamuel Ortiz
69919226f3SSamuel Ortiz### Guest OS
70919226f3SSamuel Ortiz
71328e950aSRob BradfordCloud Hypervisor supports `64-bit Linux` and Windows 10/Windows Server 2019.
72919226f3SSamuel Ortiz
73919226f3SSamuel Ortiz# 2. Getting Started
74919226f3SSamuel Ortiz
758f4de459SHenry WangBelow sections describe how to build and run Cloud Hypervisor on the `x86_64`
768f4de459SHenry Wangplatform. For getting started on the `AArch64` platform, please refer to the
778f4de459SHenry Wang[Arm64 documentation](docs/arm64.md).
788f4de459SHenry Wang
7962681a77SRob Bradford## Host OS
8062681a77SRob Bradford
8162681a77SRob BradfordBased on required KVM functionality the minimum host kernel version is 4.11.
8262681a77SRob BradfordFor adequate peformance the minimum recommended host kernel vesion is 5.6. The
8362681a77SRob Bradfordmajority of the CI currently tests with kernel version 5.15.
8462681a77SRob Bradford
858f4de459SHenry Wang## Preparation
868f4de459SHenry Wang
87919226f3SSamuel OrtizWe create a folder to build and run `cloud-hypervisor` at `$HOME/cloud-hypervisor`
88919226f3SSamuel Ortiz
89919226f3SSamuel Ortiz```shell
90919226f3SSamuel Ortiz$ export CLOUDH=$HOME/cloud-hypervisor
91919226f3SSamuel Ortiz$ mkdir $CLOUDH
92919226f3SSamuel Ortiz```
93919226f3SSamuel Ortiz
94029a6d8aSMuminul Islam## Install prerequisites
95029a6d8aSMuminul Islam
96424efe6cSSebastien BoeufYou need to install some prerequisite packages in order to build and test Cloud
97424efe6cSSebastien BoeufHypervisor. Here, all the steps are based on Ubuntu, for other Linux
98424efe6cSSebastien Boeufdistributions please replace the package manager and package name.
99029a6d8aSMuminul Islam
100029a6d8aSMuminul Islam```shell
10125f815e7SSteven Dake# Install build-essential, git, and qemu-utils
10225f815e7SSteven Dake$ sudo apt install git build-essential qemu-utils
103029a6d8aSMuminul Islam# Install rust tool chain
104029a6d8aSMuminul Islam$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
105029a6d8aSMuminul Islam# If you want to build statically linked binary please add musl target
106029a6d8aSMuminul Islam$ rustup target add x86_64-unknown-linux-musl
107029a6d8aSMuminul Islam```
108029a6d8aSMuminul Islam
109919226f3SSamuel Ortiz## Clone and build
110919226f3SSamuel Ortiz
111919226f3SSamuel OrtizFirst you need to clone and build the cloud-hypervisor repo:
112919226f3SSamuel Ortiz
113919226f3SSamuel Ortiz```shell
114919226f3SSamuel Ortiz$ pushd $CLOUDH
1158ec89bc8SRob Bradford$ git clone https://github.com/cloud-hypervisor/cloud-hypervisor.git
116919226f3SSamuel Ortiz$ cd cloud-hypervisor
117919226f3SSamuel Ortiz$ cargo build --release
118919226f3SSamuel Ortiz
119919226f3SSamuel Ortiz# We need to give the cloud-hypervisor binary the NET_ADMIN capabilities for it to set TAP interfaces up on the host.
120919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./target/release/cloud-hypervisor
121919226f3SSamuel Ortiz
122029a6d8aSMuminul Islam# If you want to build statically linked binary
123029a6d8aSMuminul Islam$ cargo build --release --target=x86_64-unknown-linux-musl --all
124919226f3SSamuel Ortiz$ popd
125919226f3SSamuel Ortiz```
126919226f3SSamuel Ortiz
127424efe6cSSebastien BoeufThis will build a `cloud-hypervisor` binary under
128424efe6cSSebastien Boeuf`$CLOUDH/cloud-hypervisor/target/release/cloud-hypervisor`.
129919226f3SSamuel Ortiz
1308676759cSSamuel Ortiz### Containerized builds and tests
1318676759cSSamuel Ortiz
1328676759cSSamuel OrtizIf you want to build and test Cloud Hypervisor without having to install all the
1338676759cSSamuel Ortizrequired dependencies (The rust toolchain, cargo tools, etc), you can also use
1348676759cSSamuel OrtizCloud Hypervisor's development script: `dev_cli.sh`. Please note that upon its
1358676759cSSamuel Ortizfirst invocation, this script will pull a fairly large container image.
1368676759cSSamuel Ortiz
1378676759cSSamuel OrtizFor example, to build the Cloud Hypervisor release binary:
1388676759cSSamuel Ortiz
1398676759cSSamuel Ortiz```shell
1408676759cSSamuel Ortiz$ pushd $CLOUDH
1418676759cSSamuel Ortiz$ cd cloud-hypervisor
1428676759cSSamuel Ortiz$ ./scripts/dev_cli.sh build --release
1438676759cSSamuel Ortiz```
1448676759cSSamuel Ortiz
1458676759cSSamuel OrtizWith `dev_cli.sh`, one can also run the Cloud Hypervisor CI locally. This can be
1468676759cSSamuel Ortizvery convenient for debugging CI errors without having to fully rely on the
1478676759cSSamuel OrtizCloud Hypervisor CI infrastructure.
1488676759cSSamuel Ortiz
1498676759cSSamuel OrtizFor example, to run the Cloud Hypervisor unit tests:
1508676759cSSamuel Ortiz
1518676759cSSamuel Ortiz```shell
1523bf46d4cSBo Chen$ ./scripts/dev_cli.sh tests --unit
1538676759cSSamuel Ortiz```
1548676759cSSamuel Ortiz
1558676759cSSamuel OrtizRun the `./scripts/dev_cli.sh --help` command to view all the supported
1568676759cSSamuel Ortizdevelopment script commands and their related options.
1578676759cSSamuel Ortiz
15843c42702SAnatol Belski## Use Prebuilt Binaries
15943c42702SAnatol Belski
16043c42702SAnatol BelskiCloud Hypervisor packages targeting some popular Linux distributions are available
16143c42702SAnatol Belskithanks to the [Open Build Service](https://build.opensuse.org). The
16243c42702SAnatol Belski[OBS README](https://github.com/cloud-hypervisor/obs-packaging) explains how to
16343c42702SAnatol Belskienable the repository in a supported Linux distribution and install Cloud Hypervisor
16443c42702SAnatol Belskiand accompanying packages. Please report any packaging issues in the
16543c42702SAnatol Belski[obs-packaging](https://github.com/cloud-hypervisor/obs-packaging) repository.
16643c42702SAnatol Belski
167919226f3SSamuel Ortiz## Run
168919226f3SSamuel Ortiz
169424efe6cSSebastien BoeufYou can run a guest VM by either using an existing cloud image or booting into
170424efe6cSSebastien Boeufyour own kernel and disk image.
171919226f3SSamuel Ortiz
172919226f3SSamuel Ortiz### Cloud image
173919226f3SSamuel Ortiz
17498bce5e0SRob BradfordCloud Hypervisor supports booting disk images containing all needed
1759900daacSRob Bradfordcomponents to run cloud workloads, a.k.a. cloud images. To do that we rely on
1769900daacSRob Bradfordthe [Rust Hypervisor
177424efe6cSSebastien BoeufFirmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) project
178424efe6cSSebastien Boeufto provide an ELF formatted KVM firmware for `cloud-hypervisor` to directly
179424efe6cSSebastien Boeufboot into.
180919226f3SSamuel Ortiz
181424efe6cSSebastien BoeufWe need to get the latest `rust-hypervisor-firmware` release and also a working
182424efe6cSSebastien Boeufcloud image. Here we will use a Ubuntu image:
183919226f3SSamuel Ortiz
184919226f3SSamuel Ortiz```shell
185919226f3SSamuel Ortiz$ pushd $CLOUDH
186a3342bdbSSebastien Boeuf$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
187a3342bdbSSebastien Boeuf$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw
188b4ed9f86SRob Bradford$ wget https://github.com/cloud-hypervisor/rust-hypervisor-firmware/releases/download/0.4.1/hypervisor-fw
189919226f3SSamuel Ortiz$ popd
190919226f3SSamuel Ortiz```
191919226f3SSamuel Ortiz
192919226f3SSamuel Ortiz```shell
193919226f3SSamuel Ortiz$ pushd $CLOUDH
194919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./cloud-hypervisor/target/release/cloud-hypervisor
195919226f3SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \
196919226f3SSamuel Ortiz	--kernel ./hypervisor-fw \
197a3342bdbSSebastien Boeuf	--disk path=focal-server-cloudimg-amd64.raw \
198e8e21aebSSamuel Ortiz	--cpus boot=4 \
19900df79a5SSamuel Ortiz	--memory size=1024M \
200617b568fSMuminul Islam	--net "tap=,mac=,ip=,mask="
201919226f3SSamuel Ortiz$ popd
202919226f3SSamuel Ortiz```
203919226f3SSamuel Ortiz
2045652cc7aSSebastien BoeufMultiple arguments can be given to the `--disk` parameter.
2059900daacSRob Bradford
206919226f3SSamuel Ortiz### Custom kernel and disk image
207919226f3SSamuel Ortiz
208919226f3SSamuel Ortiz#### Building your kernel
209919226f3SSamuel Ortiz
210424efe6cSSebastien BoeufCloud Hypervisor also supports direct kernel boot into a `vmlinux` ELF kernel.
2119c759463SSebastien BoeufIn order to support virtio-watchdog we have our own development branch. You are
212424efe6cSSebastien Boeufof course able to use your own kernel but these instructions will continue with
213424efe6cSSebastien Boeufthe version that we develop and test against.
214d5d40537SRob Bradford
215d5d40537SRob BradfordTo build the kernel:
216919226f3SSamuel Ortiz
217919226f3SSamuel Ortiz```shell
218919226f3SSamuel Ortiz
219d5d40537SRob Bradford# Clone the Cloud Hypervisor Linux branch
220919226f3SSamuel Ortiz$ pushd $CLOUDH
2216c365617SRob Bradford$ git clone --depth 1 https://github.com/cloud-hypervisor/linux.git -b ch-5.15.12 linux-cloud-hypervisor
222d5d40537SRob Bradford$ pushd linux-cloud-hypervisor
223919226f3SSamuel Ortiz
224919226f3SSamuel Ortiz# Use the cloud-hypervisor kernel config to build your kernel
225d49059a3SMuminul Islam$ cp $CLOUDH/cloud-hypervisor/resources/linux-config-x86_64 .config
2268b8daf57SRob Bradford$ KCFLAGS="-Wa,-mx86-used-note=no" make bzImage -j `nproc`
227919226f3SSamuel Ortiz$ popd
228919226f3SSamuel Ortiz```
229919226f3SSamuel Ortiz
230424efe6cSSebastien BoeufThe `vmlinux` kernel image will then be located at
231424efe6cSSebastien Boeuf`linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin`.
232919226f3SSamuel Ortiz
233919226f3SSamuel Ortiz#### Disk image
234919226f3SSamuel Ortiz
235424efe6cSSebastien BoeufFor the disk image, we will use a Ubuntu cloud image that contains a root
236424efe6cSSebastien Boeufpartition:
237919226f3SSamuel Ortiz
238919226f3SSamuel Ortiz```shell
239919226f3SSamuel Ortiz$ pushd $CLOUDH
240a3342bdbSSebastien Boeuf$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
241a3342bdbSSebastien Boeuf$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw
242919226f3SSamuel Ortiz$ popd
243919226f3SSamuel Ortiz```
244919226f3SSamuel Ortiz
245919226f3SSamuel Ortiz#### Booting the guest VM
246919226f3SSamuel Ortiz
247424efe6cSSebastien BoeufNow we can directly boot into our custom kernel and make it use the Ubuntu root
248424efe6cSSebastien Boeufpartition. If we want to have 4 vCPUs and 1024 MBytes of memory:
249919226f3SSamuel Ortiz
250919226f3SSamuel Ortiz```shell
251919226f3SSamuel Ortiz$ pushd $CLOUDH
252919226f3SSamuel Ortiz$ sudo setcap cap_net_admin+ep ./cloud-hypervisor/target/release/cloud-hypervisor
253919226f3SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \
254919226f3SSamuel Ortiz	--kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \
255a3342bdbSSebastien Boeuf	--disk path=focal-server-cloudimg-amd64.raw \
256a3342bdbSSebastien Boeuf	--cmdline "console=hvc0 root=/dev/vda1 rw" \
257e8e21aebSSamuel Ortiz	--cpus boot=4 \
25846eaea16SSamuel Ortiz	--memory size=1024M \
259617b568fSMuminul Islam	--net "tap=,mac=,ip=,mask="
26046eaea16SSamuel Ortiz```
26146eaea16SSamuel Ortiz
26246eaea16SSamuel OrtizThe above example use the `virtio-console` device as the guest console, and this
26346eaea16SSamuel Ortizdevice may not be enabled soon enough by the guest kernel to get early kernel
26446eaea16SSamuel Ortizdebug messages.
26546eaea16SSamuel Ortiz
26646eaea16SSamuel OrtizWhen in need for earlier debug messages, using the legacy serial device based
26746eaea16SSamuel Ortizconsole is preferred:
26846eaea16SSamuel Ortiz
26946eaea16SSamuel Ortiz```
27046eaea16SSamuel Ortiz$ ./cloud-hypervisor/target/release/cloud-hypervisor \
27146eaea16SSamuel Ortiz	--kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \
27246eaea16SSamuel Ortiz	--console off \
27346eaea16SSamuel Ortiz	--serial tty \
274a3342bdbSSebastien Boeuf	--disk path=focal-server-cloudimg-amd64.raw \
275a3342bdbSSebastien Boeuf	--cmdline "console=ttyS0 root=/dev/vda1 rw" \
276e8e21aebSSamuel Ortiz	--cpus boot=4 \
27700df79a5SSamuel Ortiz	--memory size=1024M \
278617b568fSMuminul Islam	--net "tap=,mac=,ip=,mask="
279919226f3SSamuel Ortiz```
280919226f3SSamuel Ortiz
281919226f3SSamuel Ortiz# 3. Status
282919226f3SSamuel Ortiz
283424efe6cSSebastien BoeufCloud Hypervisor is under active development. The following stability guarantees
284424efe6cSSebastien Boeufare currently made:
285919226f3SSamuel Ortiz
286328e950aSRob Bradford* The API (including command line options) will not be removed or changed in a
28776b1a009SRob Bradford  breaking way without a minimum of 2 major releases notice. Where possible
28876b1a009SRob Bradford  warnings will be given about the use of deprecated functionality and the
28976b1a009SRob Bradford  deprecations will be documented in the release notes.
29076b1a009SRob Bradford
291328e950aSRob Bradford* Point releases will be made between individual releases where there are
29276b1a009SRob Bradford  substantial bug fixes or security issues that need to be fixed. These point
29376b1a009SRob Bradford  releases will only include bug fixes.
294328e950aSRob Bradford
295328e950aSRob BradfordCurrently the following items are **not** guaranteed across updates:
296328e950aSRob Bradford
297328e950aSRob Bradford* Snapshot/restore is not supported across different versions
298328e950aSRob Bradford* Live migration is not supported across different versions
299328e950aSRob Bradford* The following features are considered experimental and may change
30076b1a009SRob Bradford  substantially between releases: TDX, vfio-user, vDPA.
301328e950aSRob Bradford
30276b1a009SRob BradfordAs of 2022-04-05, the following cloud images are supported:
3030f48b612SMuminul Islam
3040f48b612SMuminul Islam- [Ubuntu Bionic](https://cloud-images.ubuntu.com/bionic/current/) (cloudimg)
3050f48b612SMuminul Islam- [Ubuntu Focal](https://cloud-images.ubuntu.com/focal/current/) (cloudimg)
30676b1a009SRob Bradford- [Ubuntu Jammy](https://cloud-images.ubuntu.com/jammy/current/) (cloudimg)
3071e97d141SRob Bradford
308424efe6cSSebastien BoeufDirect kernel boot to userspace should work with a rootfs from most
309424efe6cSSebastien Boeufdistributions.
310919226f3SSamuel Ortiz
311f77ea5a2SAnatol BelskiFurther details can be found in the [release documentation](docs/releases.md).
312f77ea5a2SAnatol Belski
3136444e29bSRob Bradford## Hot Plug
3146444e29bSRob Bradford
315424efe6cSSebastien BoeufCloud Hypervisor supports hotplug of CPUs, passthrough devices (VFIO),
316424efe6cSSebastien Boeuf`virtio-{net,block,pmem,fs,vsock}` and memory resizing. This
317424efe6cSSebastien Boeuf[document](docs/hotplug.md) details how to add devices to a running VM.
3186444e29bSRob Bradford
319b55d75eaSSebastien Boeuf## Device Model
320b55d75eaSSebastien Boeuf
321424efe6cSSebastien BoeufDetails of the device model can be found in this
322424efe6cSSebastien Boeuf[documentation](docs/device_model.md).
323b55d75eaSSebastien Boeuf
324919226f3SSamuel Ortiz## TODO
325919226f3SSamuel Ortiz
326424efe6cSSebastien BoeufWe are not tracking the Cloud Hypervisor TODO list from a specific git tracked
327424efe6cSSebastien Boeuffile but through
328424efe6cSSebastien Boeuf[github issues](https://github.com/cloud-hypervisor/cloud-hypervisor/issues/new)
329424efe6cSSebastien Boeufinstead.
330919226f3SSamuel Ortiz
331cf31a303SRob Bradford## Roadmap
332cf31a303SRob Bradford
333cf31a303SRob BradfordThe project roadmap is tracked through a [GitHub project](https://github.com/orgs/cloud-hypervisor/projects/6).
334cf31a303SRob Bradford
335919226f3SSamuel Ortiz# 4. `rust-vmm` project dependency
336919226f3SSamuel Ortiz
337424efe6cSSebastien BoeufIn order to satisfy the design goal of having a high-performance,
338424efe6cSSebastien Boeufsecurity-focused hypervisor the decision was made to use the
339424efe6cSSebastien Boeuf[Rust](https://www.rust-lang.org/) programming language. The language's strong
340424efe6cSSebastien Boeuffocus on memory and thread safety makes it an ideal candidate for implementing
341424efe6cSSebastien BoeufVMMs.
342919226f3SSamuel Ortiz
343424efe6cSSebastien BoeufInstead of implementing the VMM components from scratch, Cloud Hypervisor is
344424efe6cSSebastien Boeufimporting the [rust-vmm](https://github.com/rust-vmm) crates, and sharing code
345424efe6cSSebastien Boeufand architecture together with other VMMs like e.g. Amazon's
346424efe6cSSebastien Boeuf[Firecracker](https://firecracker-microvm.github.io/) and Google's
347424efe6cSSebastien Boeuf[crosvm](https://chromium.googlesource.com/chromiumos/platform/crosvm/).
348919226f3SSamuel Ortiz
349424efe6cSSebastien BoeufCloud Hypervisor embraces the rust-vmm project goals, which is to be able to
350424efe6cSSebastien Boeufshare and re-use as many virtualization crates as possible. As such, the Cloud
351424efe6cSSebastien BoeufHypervisor relationship with the rust-vmm project is twofold:
352919226f3SSamuel Ortiz
353424efe6cSSebastien Boeuf1. It will use as much of the rust-vmm code as possible. Any new rust-vmm crate
354424efe6cSSebastien Boeuf   that's relevant to the project goals will be integrated as soon as possible.
355424efe6cSSebastien Boeuf2. As it is likely that the rust-vmm project will lack some of the features that
356424efe6cSSebastien Boeuf   Cloud Hypervisor needs (e.g. ACPI, VFIO, vhost-user, etc), we will be using
357424efe6cSSebastien Boeuf   the Cloud Hypervisor VMM to implement and test them, and contribute them back
358424efe6cSSebastien Boeuf   to the rust-vmm project.
359919226f3SSamuel Ortiz
360919226f3SSamuel Ortiz## Firecracker and crosvm
361919226f3SSamuel Ortiz
362424efe6cSSebastien BoeufA large part of the Cloud Hypervisor code is based on either the Firecracker or
363424efe6cSSebastien Boeufthe crosvm projects implementations. Both of these are VMMs written in Rust with
364424efe6cSSebastien Boeufa focus on safety and security, like Cloud Hypervisor.
365919226f3SSamuel Ortiz
366424efe6cSSebastien BoeufHowever we want to emphasize that the Cloud Hypervisor project is neither a fork
367424efe6cSSebastien Boeufnor a reimplementation of any of those projects. The goals and use cases we're
368424efe6cSSebastien Boeuftrying to meet are different. We're aiming at supporting cloud workloads, i.e.
369424efe6cSSebastien Boeufthose modern, full Linux distribution images currently being run by Cloud
370424efe6cSSebastien BoeufService Provider (CSP) tenants.
371919226f3SSamuel Ortiz
372424efe6cSSebastien BoeufOur primary target is not to support client or serverless use cases, and as such
373424efe6cSSebastien Boeufour code base already diverges from the crosvm and Firecracker ones. As we add
374424efe6cSSebastien Boeufmore features to support our use cases, we believe that the divergence will
375424efe6cSSebastien Boeufincrease while at the same time sharing as much of the fundamental
376424efe6cSSebastien Boeufvirtualization code through the rust-vmm project crates as possible.
377919226f3SSamuel Ortiz
378919226f3SSamuel Ortiz# 5. Community
379919226f3SSamuel Ortiz
380424efe6cSSebastien BoeufThe Cloud Hypervisor project follows the governance, and community guidelines
381424efe6cSSebastien Boeufdescribed in the [Community](https://github.com/cloud-hypervisor/community)
382424efe6cSSebastien Boeufrepository.
3837bfe87b7SSamuel Ortiz
3847bfe87b7SSamuel Ortiz## Contribute
3857bfe87b7SSamuel Ortiz
386424efe6cSSebastien BoeufWe are working on building a global, diverse and collaborative community around
387424efe6cSSebastien Boeufthe Cloud Hypervisor project. Anyone who is interested in
388424efe6cSSebastien Boeuf[contributing](CONTRIBUTING.md) to the project is welcome to participate.
389919226f3SSamuel Ortiz
390424efe6cSSebastien BoeufWe believe that contributing to a open source project like Cloud Hypervisor
391424efe6cSSebastien Boeufcovers a lot more than just sending code. Testing, documentation, pull request
392424efe6cSSebastien Boeufreviews, bug reports, feature requests, project improvement suggestions, etc,
393424efe6cSSebastien Boeufare all equal and welcome means of contribution. See the
394424efe6cSSebastien Boeuf[CONTRIBUTING](CONTRIBUTING.md) document for more details.
395919226f3SSamuel Ortiz
396*362f95c8SRob Bradford## Slack
397919226f3SSamuel Ortiz
3982e0f1c2aSSamuel OrtizGet an [invite to our Slack channel](https://join.slack.com/t/cloud-hypervisor/shared_invite/enQtNjY3MTE3MDkwNDQ4LWQ1MTA1ZDVmODkwMWQ1MTRhYzk4ZGNlN2UwNTI3ZmFlODU0OTcwOWZjMTkwZDExYWE3YjFmNzgzY2FmNDAyMjI)
399919226f3SSamuel Ortizand [join us on Slack](https://cloud-hypervisor.slack.com/).
40037e27842SRob Bradford
401*362f95c8SRob Bradford## Mailing list
402*362f95c8SRob Bradford
403*362f95c8SRob BradfordPlease report bugs using the [GitHub issue
404*362f95c8SRob Bradfordtracker](https://github.com/cloud-hypervisor/cloud-hypervisor/issues) but for
405*362f95c8SRob Bradfordbroader community discussions you may use our [mailing
406*362f95c8SRob Bradfordlist](https://lists.cloudhypervisor.org/g/dev/).
407*362f95c8SRob Bradford
40837e27842SRob Bradford## Security issues
40937e27842SRob Bradford
410ddef99a0SRob BradfordPlease contact the maintainers listed in the MAINTAINERS.md file with security issues.
411