xref: /cloud-hypervisor/README.md (revision feb523ef785287b28598162325e2eda9c3f917f0)
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
81ffc222b2SRob BradfordFor required KVM functionality the minimum host kernel version is 4.11.  For
82ffc222b2SRob Bradfordadequate performance the minimum recommended host kernel version is 5.6. The
8362681a77SRob Bradfordmajority of the CI currently tests with kernel version 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
111b93d5058SHenry Wangbuilt with PVH support) 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
116ffc222b2SRob Bradford[Rust Hyperivor
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
143ffc222b2SRob Bradfordis only necessary to add this disk image on the first boot.
144ffc222b2SRob Bradford
145919226f3SSamuel Ortiz```shell
146ffc222b2SRob Bradford$ sudo setcap cap_net_admin+ep ./cloud-hypervisor
147ffc222b2SRob Bradford$ ./create-cloud-init.sh
148073374e2SRob Bradford$ ./cloud-hypervisor \
149919226f3SSamuel Ortiz	--kernel ./hypervisor-fw \
150a0922930SWei Liu	--disk path=focal-server-cloudimg-amd64.raw --disk path=/tmp/ubuntu-cloudinit.img \
151e8e21aebSSamuel Ortiz	--cpus boot=4 \
15200df79a5SSamuel Ortiz	--memory size=1024M \
153617b568fSMuminul Islam	--net "tap=,mac=,ip=,mask="
154919226f3SSamuel Ortiz```
155919226f3SSamuel Ortiz
156ffc222b2SRob BradfordIf access to the firmware messages or interaction with the boot loader (e.g.
157ffc222b2SRob BradfordGRUB) is required then it necessary to switch to the serial console instead of
158ffc222b2SRob Bradford`virtio-console`.
1599900daacSRob Bradford
160ffc222b2SRob Bradford```shell
161073374e2SRob Bradford$ ./cloud-hypervisor \
162ffc222b2SRob Bradford	--kernel ./hypervisor-fw \
163a0922930SWei Liu	--disk path=focal-server-cloudimg-amd64.raw --disk path=/tmp/ubuntu-cloudinit.img \
164ffc222b2SRob Bradford	--cpus boot=4 \
165ffc222b2SRob Bradford	--memory size=1024M \
166ffc222b2SRob Bradford	--net "tap=,mac=,ip=,mask=" \
167ffc222b2SRob Bradford	--serial tty \
168ffc222b2SRob Bradford	--console off
169ffc222b2SRob Bradford```
170919226f3SSamuel Ortiz
171ffc222b2SRob Bradford### Custom Kernel and Disk Image
172919226f3SSamuel Ortiz
173ffc222b2SRob Bradford#### Building your Kernel
174ffc222b2SRob Bradford
175de4cd49cSHenry WangCloud Hypervisor also supports direct kernel boot. For x86-64, a `vmlinux` ELF kernel (compiled with PVH support) is needed. In order to support development there is a custom branch; however provided the required options are enabled any recent kernel will suffice.
176d5d40537SRob Bradford
177d5d40537SRob BradfordTo build the kernel:
178919226f3SSamuel Ortiz
179919226f3SSamuel Ortiz```shell
180d5d40537SRob Bradford# Clone the Cloud Hypervisor Linux branch
181c152f9f6SBo Chen$ git clone --depth 1 https://github.com/cloud-hypervisor/linux.git -b ch-6.2 linux-cloud-hypervisor
182d5d40537SRob Bradford$ pushd linux-cloud-hypervisor
183de4cd49cSHenry Wang# Use the x86-64 cloud-hypervisor kernel config to build your kernel for x86-64
184ffc222b2SRob Bradford$ wget https://raw.githubusercontent.com/cloud-hypervisor/cloud-hypervisor/main/resources/linux-config-x86_64
185de4cd49cSHenry Wang# Use the AArch64 cloud-hypervisor kernel config to build your kernel for AArch64
186de4cd49cSHenry Wang$ wget https://raw.githubusercontent.com/cloud-hypervisor/cloud-hypervisor/main/resources/linux-config-aarch64
187de4cd49cSHenry Wang$ cp linux-config-x86_64 .config  # x86-64
188de4cd49cSHenry Wang$ cp linux-config-aarch64 .config # AArch64
189de4cd49cSHenry Wang# Do native build of the x86-64 kernel
1908b8daf57SRob Bradford$ KCFLAGS="-Wa,-mx86-used-note=no" make bzImage -j `nproc`
191de4cd49cSHenry Wang# Do native build of the AArch64 kernel
192de4cd49cSHenry Wang$ make -j `nproc`
193919226f3SSamuel Ortiz$ popd
194919226f3SSamuel Ortiz```
195919226f3SSamuel Ortiz
196de4cd49cSHenry WangFor x86-64, the `vmlinux` kernel image will then be located at
197424efe6cSSebastien Boeuf`linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin`.
198de4cd49cSHenry WangFor AArch64, the `Image` kernel image will then be located at
199de4cd49cSHenry Wang`linux-cloud-hypervisor/arch/arm64/boot/Image`.
200919226f3SSamuel Ortiz
201919226f3SSamuel Ortiz#### Disk image
202919226f3SSamuel Ortiz
203ffc222b2SRob BradfordFor the disk image the same Ubuntu image as before can be used. This contains
204ffc222b2SRob Bradfordan `ext4` root filesystem.
205919226f3SSamuel Ortiz
206919226f3SSamuel Ortiz```shell
20770954592SHenry Wang$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img # x86-64
20870954592SHenry Wang$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-arm64.img # AArch64
20970954592SHenry Wang$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw # x86-64
21070954592SHenry Wang$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-arm64.img focal-server-cloudimg-arm64.raw # AArch64
211919226f3SSamuel Ortiz```
212919226f3SSamuel Ortiz
213919226f3SSamuel Ortiz#### Booting the guest VM
214919226f3SSamuel Ortiz
215ffc222b2SRob BradfordThese sample commands boot the disk image using the custom kernel whilst also
216ffc222b2SRob Bradfordsupplying the desired kernel command line.
217919226f3SSamuel Ortiz
218b93d5058SHenry Wang- x86-64
219b93d5058SHenry Wang
220919226f3SSamuel Ortiz```shell
221ffc222b2SRob Bradford$ sudo setcap cap_net_admin+ep ./cloud-hypervisor
222ffc222b2SRob Bradford$ ./create-cloud-init.sh
223ffc222b2SRob Bradford$ ./cloud-hypervisor \
224919226f3SSamuel Ortiz	--kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \
225a0922930SWei Liu	--disk path=focal-server-cloudimg-amd64.raw --disk path=/tmp/ubuntu-cloudinit.img \
226a3342bdbSSebastien Boeuf	--cmdline "console=hvc0 root=/dev/vda1 rw" \
227e8e21aebSSamuel Ortiz	--cpus boot=4 \
22846eaea16SSamuel Ortiz	--memory size=1024M \
229617b568fSMuminul Islam	--net "tap=,mac=,ip=,mask="
23046eaea16SSamuel Ortiz```
23146eaea16SSamuel Ortiz
232b93d5058SHenry Wang- AArch64
233b93d5058SHenry Wang
234b93d5058SHenry Wang```shell
235b93d5058SHenry Wang$ sudo setcap cap_net_admin+ep ./cloud-hypervisor
236b93d5058SHenry Wang$ ./create-cloud-init.sh
237b93d5058SHenry Wang$ ./cloud-hypervisor \
238b93d5058SHenry Wang	--kernel ./linux-cloud-hypervisor/arch/arm64/boot/Image \
239a0922930SWei Liu	--disk path=focal-server-cloudimg-arm64.raw --disk path=/tmp/ubuntu-cloudinit.img \
240b93d5058SHenry Wang	--cmdline "console=hvc0 root=/dev/vda1 rw" \
241b93d5058SHenry Wang	--cpus boot=4 \
242b93d5058SHenry Wang	--memory size=1024M \
243b93d5058SHenry Wang	--net "tap=,mac=,ip=,mask="
244b93d5058SHenry Wang```
245b93d5058SHenry Wang
246ffc222b2SRob BradfordIf earlier kernel messages are required the serial console should be used instead of `virtio-console`.
24746eaea16SSamuel Ortiz
248b93d5058SHenry Wang- x86-64
249b93d5058SHenry Wang
250b93d5058SHenry Wang```shell
251b93d5058SHenry Wang$ ./cloud-hypervisor \
25246eaea16SSamuel Ortiz	--kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \
25346eaea16SSamuel Ortiz	--console off \
25446eaea16SSamuel Ortiz	--serial tty \
255a3342bdbSSebastien Boeuf	--disk path=focal-server-cloudimg-amd64.raw \
256a3342bdbSSebastien Boeuf	--cmdline "console=ttyS0 root=/dev/vda1 rw" \
257e8e21aebSSamuel Ortiz	--cpus boot=4 \
25800df79a5SSamuel Ortiz	--memory size=1024M \
259617b568fSMuminul Islam	--net "tap=,mac=,ip=,mask="
260919226f3SSamuel Ortiz```
261919226f3SSamuel Ortiz
262b93d5058SHenry Wang- AArch64
263b93d5058SHenry Wang
264b93d5058SHenry Wang```shell
265b93d5058SHenry Wang$ ./cloud-hypervisor \
266b93d5058SHenry Wang	--kernel ./linux-cloud-hypervisor/arch/arm64/boot/Image \
267b93d5058SHenry Wang	--console off \
268b93d5058SHenry Wang	--serial tty \
269b93d5058SHenry Wang	--disk path=focal-server-cloudimg-arm64.raw \
270b93d5058SHenry Wang	--cmdline "console=ttyAMA0 root=/dev/vda1 rw" \
271b93d5058SHenry Wang	--cpus boot=4 \
272b93d5058SHenry Wang	--memory size=1024M \
273b93d5058SHenry Wang	--net "tap=,mac=,ip=,mask="
274b93d5058SHenry Wang```
275b93d5058SHenry Wang
276919226f3SSamuel Ortiz# 3. Status
277919226f3SSamuel Ortiz
278ffc222b2SRob BradfordCloud Hypervisor is under active development. The following stability
279ffc222b2SRob Bradfordguarantees are currently made:
280919226f3SSamuel Ortiz
281328e950aSRob Bradford* The API (including command line options) will not be removed or changed in a
28276b1a009SRob Bradford  breaking way without a minimum of 2 major releases notice. Where possible
28376b1a009SRob Bradford  warnings will be given about the use of deprecated functionality and the
28476b1a009SRob Bradford  deprecations will be documented in the release notes.
28576b1a009SRob Bradford
286328e950aSRob Bradford* Point releases will be made between individual releases where there are
28776b1a009SRob Bradford  substantial bug fixes or security issues that need to be fixed. These point
28876b1a009SRob Bradford  releases will only include bug fixes.
289328e950aSRob Bradford
290328e950aSRob BradfordCurrently the following items are **not** guaranteed across updates:
291328e950aSRob Bradford
292328e950aSRob Bradford* Snapshot/restore is not supported across different versions
293328e950aSRob Bradford* Live migration is not supported across different versions
294328e950aSRob Bradford* The following features are considered experimental and may change
29576b1a009SRob Bradford  substantially between releases: TDX, vfio-user, vDPA.
296328e950aSRob Bradford
297ffc222b2SRob BradfordFurther details can be found in the [release documentation](docs/releases.md).
2980f48b612SMuminul Islam
2990036302fSRob BradfordAs of 2023-01-03, the following cloud images are supported:
300ffc222b2SRob Bradford
30170954592SHenry Wang- [Ubuntu Focal](https://cloud-images.ubuntu.com/focal/current/) (focal-server-cloudimg-{amd64,arm64}.img)
30270954592SHenry Wang- [Ubuntu Jammy](https://cloud-images.ubuntu.com/jammy/current/) (jammy-server-cloudimg-{amd64,arm64}.img )
30370954592SHenry 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/))
3041e97d141SRob Bradford
305424efe6cSSebastien BoeufDirect kernel boot to userspace should work with a rootfs from most
306ffc222b2SRob Bradforddistributions although you may need to enable exotic filesystem types in the
307ffc222b2SRob Bradfordreference kernel configuration (e.g. XFS or btrfs.)
308f77ea5a2SAnatol Belski
3096444e29bSRob Bradford## Hot Plug
3106444e29bSRob Bradford
311424efe6cSSebastien BoeufCloud Hypervisor supports hotplug of CPUs, passthrough devices (VFIO),
312424efe6cSSebastien Boeuf`virtio-{net,block,pmem,fs,vsock}` and memory resizing. This
313424efe6cSSebastien Boeuf[document](docs/hotplug.md) details how to add devices to a running VM.
3146444e29bSRob Bradford
315b55d75eaSSebastien Boeuf## Device Model
316b55d75eaSSebastien Boeuf
317424efe6cSSebastien BoeufDetails of the device model can be found in this
318424efe6cSSebastien Boeuf[documentation](docs/device_model.md).
319b55d75eaSSebastien Boeuf
320cf31a303SRob Bradford## Roadmap
321cf31a303SRob Bradford
322ffc222b2SRob BradfordThe project roadmap is tracked through a [GitHub
323ffc222b2SRob Bradfordproject](https://github.com/orgs/cloud-hypervisor/projects/6).
324cf31a303SRob Bradford
325ffc222b2SRob Bradford# 4. Relationship with _Rust VMM_ Project
326919226f3SSamuel Ortiz
327424efe6cSSebastien BoeufIn order to satisfy the design goal of having a high-performance,
328424efe6cSSebastien Boeufsecurity-focused hypervisor the decision was made to use the
329424efe6cSSebastien Boeuf[Rust](https://www.rust-lang.org/) programming language. The language's strong
330424efe6cSSebastien Boeuffocus on memory and thread safety makes it an ideal candidate for implementing
331424efe6cSSebastien BoeufVMMs.
332919226f3SSamuel Ortiz
333424efe6cSSebastien BoeufInstead of implementing the VMM components from scratch, Cloud Hypervisor is
334ffc222b2SRob Bradfordimporting the [Rust VMM](https://github.com/rust-vmm) crates, and sharing code
335424efe6cSSebastien Boeufand architecture together with other VMMs like e.g. Amazon's
336424efe6cSSebastien Boeuf[Firecracker](https://firecracker-microvm.github.io/) and Google's
337424efe6cSSebastien Boeuf[crosvm](https://chromium.googlesource.com/chromiumos/platform/crosvm/).
338919226f3SSamuel Ortiz
339ffc222b2SRob BradfordCloud Hypervisor embraces the _Rust VMM_ project's goals, which is to be able
340ffc222b2SRob Bradfordto share and re-use as many virtualization crates as possible.
341919226f3SSamuel Ortiz
342ffc222b2SRob Bradford## Differences with Firecracker and crosvm
343919226f3SSamuel Ortiz
344424efe6cSSebastien BoeufA large part of the Cloud Hypervisor code is based on either the Firecracker or
345ffc222b2SRob Bradfordthe crosvm project's implementations. Both of these are VMMs written in Rust
346ffc222b2SRob Bradfordwith a focus on safety and security, like Cloud Hypervisor.
347919226f3SSamuel Ortiz
348ffc222b2SRob BradfordThe goal of the Cloud Hypervisor project differs from the aforementioned
349ffc222b2SRob Bradfordprojects in that it aims to be a general purpose VMM for _Cloud Workloads_ and
350ffc222b2SRob Bradfordnot limited to container/serverless or client workloads.
351919226f3SSamuel Ortiz
352ffc222b2SRob BradfordThe Cloud Hypervisor community thanks the communities of both the Firecracker
353ffc222b2SRob Bradfordand crosvm projects for their excellent work.
354919226f3SSamuel Ortiz
355919226f3SSamuel Ortiz# 5. Community
356919226f3SSamuel Ortiz
357424efe6cSSebastien BoeufThe Cloud Hypervisor project follows the governance, and community guidelines
358424efe6cSSebastien Boeufdescribed in the [Community](https://github.com/cloud-hypervisor/community)
359424efe6cSSebastien Boeufrepository.
3607bfe87b7SSamuel Ortiz
3617bfe87b7SSamuel Ortiz## Contribute
3627bfe87b7SSamuel Ortiz
363ffc222b2SRob BradfordThe project strongly believes in building a global, diverse and collaborative
364ffc222b2SRob Bradfordcommunity around the Cloud Hypervisor project. Anyone who is interested in
365424efe6cSSebastien Boeuf[contributing](CONTRIBUTING.md) to the project is welcome to participate.
366919226f3SSamuel Ortiz
367ffc222b2SRob BradfordContributing to a open source project like Cloud Hypervisor covers a lot more
368ffc222b2SRob Bradfordthan just sending code. Testing, documentation, pull request
369424efe6cSSebastien Boeufreviews, bug reports, feature requests, project improvement suggestions, etc,
370424efe6cSSebastien Boeufare all equal and welcome means of contribution. See the
371424efe6cSSebastien Boeuf[CONTRIBUTING](CONTRIBUTING.md) document for more details.
372919226f3SSamuel Ortiz
373362f95c8SRob Bradford## Slack
374919226f3SSamuel Ortiz
375*feb523efSBo ChenGet an [invite to our Slack channel](https://join.slack.com/t/cloud-hypervisor/shared_invite/enQtNjY3MTE3MDkwNDQ4LWQ1MTA1ZDVmODkwMWQ1MTRhYzk4ZGNlN2UwNTI3ZmFlODU0OTcwOWZjMTkwZDExYWE3YjFmNzgzY2FmNDAyMjI),
376*feb523efSBo Chen [join us on Slack](https://cloud-hypervisor.slack.com/), and [participate in our community activities](https://cloud-hypervisor.slack.com/archives/C04R5DUQVBN).
37737e27842SRob Bradford
378362f95c8SRob Bradford## Mailing list
379362f95c8SRob Bradford
380362f95c8SRob BradfordPlease report bugs using the [GitHub issue
381362f95c8SRob Bradfordtracker](https://github.com/cloud-hypervisor/cloud-hypervisor/issues) but for
382362f95c8SRob Bradfordbroader community discussions you may use our [mailing
383362f95c8SRob Bradfordlist](https://lists.cloudhypervisor.org/g/dev/).
384362f95c8SRob Bradford
38537e27842SRob Bradford## Security issues
38637e27842SRob Bradford
387ddef99a0SRob BradfordPlease contact the maintainers listed in the MAINTAINERS.md file with security issues.
388