xref: /cloud-hypervisor/README.md (revision 149c08981bffdf8800cc63c7c7940faa9af3419a)
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
623899cd0eSRuoqing HeCloud Hypervisor supports the `x86-64`, `AArch64` and `riscv64`
633899cd0eSRuoqing Hearchitectures, with functionality varying across these platforms. The
643899cd0eSRuoqing Hefunctionality differences between `x86-64` and `AArch64` are documented
653899cd0eSRuoqing Hein [#1125](https://github.com/cloud-hypervisor/cloud-hypervisor/issues/1125).
663899cd0eSRuoqing HeThe `riscv64` architecture support is experimental and offers limited
673899cd0eSRuoqing Hefunctionality. For more details and instructions, please refer to [riscv
683899cd0eSRuoqing Hedocumentation](docs/riscv.md).
69919226f3SSamuel Ortiz
70919226f3SSamuel Ortiz### Guest OS
71919226f3SSamuel Ortiz
72328e950aSRob BradfordCloud Hypervisor supports `64-bit Linux` and Windows 10/Windows Server 2019.
73919226f3SSamuel Ortiz
74919226f3SSamuel Ortiz# 2. Getting Started
75919226f3SSamuel Ortiz
76d15e1f1aSHenry WangThe following sections describe how to build and run Cloud Hypervisor.
77d15e1f1aSHenry Wang
78d15e1f1aSHenry Wang## Prerequisites for AArch64
79d15e1f1aSHenry Wang
80d15e1f1aSHenry Wang- AArch64 servers (recommended) or development boards equipped with the GICv3
81d15e1f1aSHenry Wang  interrupt controller.
828f4de459SHenry Wang
8362681a77SRob Bradford## Host OS
8462681a77SRob Bradford
85c03f3b54SYi WangFor required KVM functionality and adequate performance the recommended host
86c03f3b54SYi Wangkernel version is 5.13. The majority of the CI currently tests with kernel
87c03f3b54SYi Wangversion 5.15.
8862681a77SRob Bradford
89ffc222b2SRob Bradford## Use Pre-built Binaries
908f4de459SHenry Wang
91ffc222b2SRob BradfordThe recommended approach to getting started with Cloud Hypervisor is by using a
92ffc222b2SRob Bradfordpre-built binary. Binaries are available for the [latest
93ffc222b2SRob Bradfordrelease](https://github.com/cloud-hypervisor/cloud-hypervisor/releases/latest).
94ffc222b2SRob BradfordUse `cloud-hypervisor-static` for `x86-64` or `cloud-hypervisor-static-aarch64`
95ffc222b2SRob Bradfordfor `AArch64` platform.
96919226f3SSamuel Ortiz
97ffc222b2SRob Bradford## Packages
98919226f3SSamuel Ortiz
99ffc222b2SRob BradfordFor convenience, packages are also available targeting some popular Linux
100ffc222b2SRob Bradforddistributions. This is thanks to the [Open Build
101ffc222b2SRob BradfordService](https://build.opensuse.org). The [OBS
102ffc222b2SRob BradfordREADME](https://github.com/cloud-hypervisor/obs-packaging) explains how to
10343c42702SAnatol Belskienable the repository in a supported Linux distribution and install Cloud Hypervisor
10443c42702SAnatol Belskiand accompanying packages. Please report any packaging issues in the
10543c42702SAnatol Belski[obs-packaging](https://github.com/cloud-hypervisor/obs-packaging) repository.
10643c42702SAnatol Belski
107ffc222b2SRob Bradford## Building from Source
108919226f3SSamuel Ortiz
109ffc222b2SRob BradfordPlease see the [instructions for building from source](docs/building.md) if you
110ffc222b2SRob Bradforddo not wish to use the pre-built binaries.
111919226f3SSamuel Ortiz
112ffc222b2SRob Bradford## Booting Linux
113919226f3SSamuel Ortiz
114b93d5058SHenry WangCloud Hypervisor supports direct kernel boot (the x86-64 kernel requires the kernel
1156362b711SStefan Nuernbergerbuilt with PVH support or a bzImage) or booting via a firmware (either [Rust Hypervisor
116ffc222b2SRob BradfordFirmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware) or an
117b93d5058SHenry Wangedk2 UEFI firmware called `CLOUDHV` / `CLOUDHV_EFI`.)
118ffc222b2SRob Bradford
119ffc222b2SRob BradfordBinary builds of the firmware files are available for the latest release of
12083d757d8SDaniel Farina[Rust Hypervisor
121ffc222b2SRob BradfordFirmware](https://github.com/cloud-hypervisor/rust-hypervisor-firmware/releases/latest)
122ffc222b2SRob Bradfordand [our edk2
123ffc222b2SRob Bradfordrepository](https://github.com/cloud-hypervisor/edk2/releases/latest)
124ffc222b2SRob Bradford
125ffc222b2SRob BradfordThe choice of firmware depends on your guest OS choice; some experimentation
126ffc222b2SRob Bradfordmay be required.
127ffc222b2SRob Bradford
128ffc222b2SRob Bradford### Firmware Booting
129ffc222b2SRob Bradford
130ffc222b2SRob BradfordCloud Hypervisor supports booting disk images containing all needed components
131ffc222b2SRob Bradfordto run cloud workloads, a.k.a. cloud images.
132ffc222b2SRob Bradford
133ffc222b2SRob BradfordThe following sample commands will download an Ubuntu Cloud image, converting
134ffc222b2SRob Bradfordit into a format that Cloud Hypervisor can use and a firmware to boot the image
135ffc222b2SRob Bradfordwith.
136919226f3SSamuel Ortiz
137919226f3SSamuel Ortiz```shell
138a3342bdbSSebastien Boeuf$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
139a3342bdbSSebastien Boeuf$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw
140a9e30c88SRob Bradford$ wget https://github.com/cloud-hypervisor/rust-hypervisor-firmware/releases/download/0.4.2/hypervisor-fw
141919226f3SSamuel Ortiz```
142919226f3SSamuel Ortiz
143ffc222b2SRob BradfordThe Ubuntu cloud images do not ship with a default password so it necessary to
144ffc222b2SRob Bradforduse a `cloud-init` disk image to customise the image on the first boot. A basic
145ffc222b2SRob Bradford`cloud-init` image is generated by this [script](scripts/create-cloud-init.sh).
146ffc222b2SRob BradfordThis seeds the image with a default username/password of `cloud/cloud123`. It
147e8d6c9ecSRavi kumar Veeramallyis only necessary to add this disk image on the first boot. Script also assigns
148e8d6c9ecSRavi kumar Veeramallydefault IP address using `test_data/cloud-init/ubuntu/local/network-config` details
149e8d6c9ecSRavi kumar Veeramallywith `--net "mac=12:34:56:78:90:ab,tap="` option. Then the matching mac address
150e8d6c9ecSRavi kumar Veeramallyinterface will be enabled as per `network-config` details.
151ffc222b2SRob Bradford
152919226f3SSamuel Ortiz```shell
153ffc222b2SRob Bradford$ sudo setcap cap_net_admin+ep ./cloud-hypervisor
154ffc222b2SRob Bradford$ ./create-cloud-init.sh
155073374e2SRob Bradford$ ./cloud-hypervisor \
156919226f3SSamuel Ortiz	--kernel ./hypervisor-fw \
157fa22cb0bSRavi kumar Veeramally	--disk path=focal-server-cloudimg-amd64.raw path=/tmp/ubuntu-cloudinit.img \
158e8e21aebSSamuel Ortiz	--cpus boot=4 \
15900df79a5SSamuel Ortiz	--memory size=1024M \
160617b568fSMuminul Islam	--net "tap=,mac=,ip=,mask="
161919226f3SSamuel Ortiz```
162919226f3SSamuel Ortiz
163ffc222b2SRob BradfordIf access to the firmware messages or interaction with the boot loader (e.g.
164ffc222b2SRob BradfordGRUB) is required then it necessary to switch to the serial console instead of
165ffc222b2SRob Bradford`virtio-console`.
1669900daacSRob Bradford
167ffc222b2SRob Bradford```shell
168073374e2SRob Bradford$ ./cloud-hypervisor \
169ffc222b2SRob Bradford	--kernel ./hypervisor-fw \
170fa22cb0bSRavi kumar Veeramally	--disk path=focal-server-cloudimg-amd64.raw path=/tmp/ubuntu-cloudinit.img \
171ffc222b2SRob Bradford	--cpus boot=4 \
172ffc222b2SRob Bradford	--memory size=1024M \
173ffc222b2SRob Bradford	--net "tap=,mac=,ip=,mask=" \
174ffc222b2SRob Bradford	--serial tty \
175ffc222b2SRob Bradford	--console off
176ffc222b2SRob Bradford```
177919226f3SSamuel Ortiz
178ffc222b2SRob Bradford### Custom Kernel and Disk Image
179919226f3SSamuel Ortiz
180ffc222b2SRob Bradford#### Building your Kernel
181ffc222b2SRob Bradford
1826362b711SStefan NuernbergerCloud Hypervisor also supports direct kernel boot. For x86-64, a `vmlinux` ELF kernel (compiled with PVH support) or a regular bzImage are supported. In order to support development there is a custom branch; however provided the required options are enabled any recent kernel will suffice.
183d5d40537SRob Bradford
184d5d40537SRob BradfordTo build the kernel:
185919226f3SSamuel Ortiz
186919226f3SSamuel Ortiz```shell
187d5d40537SRob Bradford# Clone the Cloud Hypervisor Linux branch
188f8927894SRob Bradford$ git clone --depth 1 https://github.com/cloud-hypervisor/linux.git -b ch-6.12.8 linux-cloud-hypervisor
189d5d40537SRob Bradford$ pushd linux-cloud-hypervisor
190f8927894SRob Bradford$ make ch_defconfig
191de4cd49cSHenry Wang# Do native build of the x86-64 kernel
1928b8daf57SRob Bradford$ KCFLAGS="-Wa,-mx86-used-note=no" make bzImage -j `nproc`
193de4cd49cSHenry Wang# Do native build of the AArch64 kernel
194de4cd49cSHenry Wang$ make -j `nproc`
195919226f3SSamuel Ortiz$ popd
196919226f3SSamuel Ortiz```
197919226f3SSamuel Ortiz
198de4cd49cSHenry WangFor x86-64, the `vmlinux` kernel image will then be located at
199424efe6cSSebastien Boeuf`linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin`.
200de4cd49cSHenry WangFor AArch64, the `Image` kernel image will then be located at
201de4cd49cSHenry Wang`linux-cloud-hypervisor/arch/arm64/boot/Image`.
202919226f3SSamuel Ortiz
203919226f3SSamuel Ortiz#### Disk image
204919226f3SSamuel Ortiz
205ffc222b2SRob BradfordFor the disk image the same Ubuntu image as before can be used. This contains
206ffc222b2SRob Bradfordan `ext4` root filesystem.
207919226f3SSamuel Ortiz
208919226f3SSamuel Ortiz```shell
20970954592SHenry Wang$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img # x86-64
21070954592SHenry Wang$ wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-arm64.img # AArch64
21170954592SHenry Wang$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-amd64.img focal-server-cloudimg-amd64.raw # x86-64
21270954592SHenry Wang$ qemu-img convert -p -f qcow2 -O raw focal-server-cloudimg-arm64.img focal-server-cloudimg-arm64.raw # AArch64
213919226f3SSamuel Ortiz```
214919226f3SSamuel Ortiz
215919226f3SSamuel Ortiz#### Booting the guest VM
216919226f3SSamuel Ortiz
217ffc222b2SRob BradfordThese sample commands boot the disk image using the custom kernel whilst also
218ffc222b2SRob Bradfordsupplying the desired kernel command line.
219919226f3SSamuel Ortiz
220b93d5058SHenry Wang- x86-64
221b93d5058SHenry Wang
222919226f3SSamuel Ortiz```shell
223ffc222b2SRob Bradford$ sudo setcap cap_net_admin+ep ./cloud-hypervisor
224ffc222b2SRob Bradford$ ./create-cloud-init.sh
225ffc222b2SRob Bradford$ ./cloud-hypervisor \
226919226f3SSamuel Ortiz	--kernel ./linux-cloud-hypervisor/arch/x86/boot/compressed/vmlinux.bin \
227fa22cb0bSRavi kumar Veeramally	--disk path=focal-server-cloudimg-amd64.raw path=/tmp/ubuntu-cloudinit.img \
228a3342bdbSSebastien Boeuf	--cmdline "console=hvc0 root=/dev/vda1 rw" \
229e8e21aebSSamuel Ortiz	--cpus boot=4 \
23046eaea16SSamuel Ortiz	--memory size=1024M \
231617b568fSMuminul Islam	--net "tap=,mac=,ip=,mask="
23246eaea16SSamuel Ortiz```
23346eaea16SSamuel Ortiz
234b93d5058SHenry Wang- AArch64
235b93d5058SHenry Wang
236b93d5058SHenry Wang```shell
237b93d5058SHenry Wang$ sudo setcap cap_net_admin+ep ./cloud-hypervisor
238b93d5058SHenry Wang$ ./create-cloud-init.sh
239b93d5058SHenry Wang$ ./cloud-hypervisor \
240b93d5058SHenry Wang	--kernel ./linux-cloud-hypervisor/arch/arm64/boot/Image \
241fa22cb0bSRavi kumar Veeramally	--disk path=focal-server-cloudimg-arm64.raw path=/tmp/ubuntu-cloudinit.img \
242b93d5058SHenry Wang	--cmdline "console=hvc0 root=/dev/vda1 rw" \
243b93d5058SHenry Wang	--cpus boot=4 \
244b93d5058SHenry Wang	--memory size=1024M \
245b93d5058SHenry Wang	--net "tap=,mac=,ip=,mask="
246b93d5058SHenry Wang```
247b93d5058SHenry Wang
248ffc222b2SRob BradfordIf earlier kernel messages are required the serial console should be used instead of `virtio-console`.
24946eaea16SSamuel Ortiz
250b93d5058SHenry Wang- x86-64
251b93d5058SHenry Wang
252b93d5058SHenry Wang```shell
253b93d5058SHenry Wang$ ./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
264b93d5058SHenry Wang- AArch64
265b93d5058SHenry Wang
266b93d5058SHenry Wang```shell
267b93d5058SHenry Wang$ ./cloud-hypervisor \
268b93d5058SHenry Wang	--kernel ./linux-cloud-hypervisor/arch/arm64/boot/Image \
269b93d5058SHenry Wang	--console off \
270b93d5058SHenry Wang	--serial tty \
271b93d5058SHenry Wang	--disk path=focal-server-cloudimg-arm64.raw \
272b93d5058SHenry Wang	--cmdline "console=ttyAMA0 root=/dev/vda1 rw" \
273b93d5058SHenry Wang	--cpus boot=4 \
274b93d5058SHenry Wang	--memory size=1024M \
275b93d5058SHenry Wang	--net "tap=,mac=,ip=,mask="
276b93d5058SHenry Wang```
277b93d5058SHenry Wang
278919226f3SSamuel Ortiz# 3. Status
279919226f3SSamuel Ortiz
280ffc222b2SRob BradfordCloud Hypervisor is under active development. The following stability
281ffc222b2SRob Bradfordguarantees are currently made:
282919226f3SSamuel Ortiz
283328e950aSRob Bradford* The API (including command line options) will not be removed or changed in a
28476b1a009SRob Bradford  breaking way without a minimum of 2 major releases notice. Where possible
28576b1a009SRob Bradford  warnings will be given about the use of deprecated functionality and the
28676b1a009SRob Bradford  deprecations will be documented in the release notes.
28776b1a009SRob Bradford
288328e950aSRob Bradford* Point releases will be made between individual releases where there are
28976b1a009SRob Bradford  substantial bug fixes or security issues that need to be fixed. These point
29076b1a009SRob Bradford  releases will only include bug fixes.
291328e950aSRob Bradford
292328e950aSRob BradfordCurrently the following items are **not** guaranteed across updates:
293328e950aSRob Bradford
294328e950aSRob Bradford* Snapshot/restore is not supported across different versions
295328e950aSRob Bradford* Live migration is not supported across different versions
296328e950aSRob Bradford* The following features are considered experimental and may change
29776b1a009SRob Bradford  substantially between releases: TDX, vfio-user, vDPA.
298328e950aSRob Bradford
299ffc222b2SRob BradfordFurther details can be found in the [release documentation](docs/releases.md).
3000f48b612SMuminul Islam
3010036302fSRob BradfordAs of 2023-01-03, the following cloud images are supported:
302ffc222b2SRob Bradford
30370954592SHenry Wang- [Ubuntu Focal](https://cloud-images.ubuntu.com/focal/current/) (focal-server-cloudimg-{amd64,arm64}.img)
30470954592SHenry Wang- [Ubuntu Jammy](https://cloud-images.ubuntu.com/jammy/current/) (jammy-server-cloudimg-{amd64,arm64}.img)
305*149c0898SBingxin Li- [Ubuntu Noble](https://cloud-images.ubuntu.com/noble/current/) (noble-server-cloudimg-{amd64,arm64}.img)
306cc734e2eSRuoqing He- [Fedora 36](https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/36/Cloud/) ([Fedora-Cloud-Base-36-1.5.x86_64.raw.xz](https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/36/Cloud/x86_64/images/) / [Fedora-Cloud-Base-36-1.5.aarch64.raw.xz](https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/36/Cloud/aarch64/images/))
3071e97d141SRob Bradford
308424efe6cSSebastien BoeufDirect kernel boot to userspace should work with a rootfs from most
309ffc222b2SRob Bradforddistributions although you may need to enable exotic filesystem types in the
310ffc222b2SRob Bradfordreference kernel configuration (e.g. XFS or btrfs.)
311f77ea5a2SAnatol Belski
3126444e29bSRob Bradford## Hot Plug
3136444e29bSRob Bradford
314424efe6cSSebastien BoeufCloud Hypervisor supports hotplug of CPUs, passthrough devices (VFIO),
315424efe6cSSebastien Boeuf`virtio-{net,block,pmem,fs,vsock}` and memory resizing. This
316424efe6cSSebastien Boeuf[document](docs/hotplug.md) details how to add devices to a running VM.
3176444e29bSRob Bradford
318b55d75eaSSebastien Boeuf## Device Model
319b55d75eaSSebastien Boeuf
320424efe6cSSebastien BoeufDetails of the device model can be found in this
321424efe6cSSebastien Boeuf[documentation](docs/device_model.md).
322b55d75eaSSebastien Boeuf
323cf31a303SRob Bradford## Roadmap
324cf31a303SRob Bradford
325ffc222b2SRob BradfordThe project roadmap is tracked through a [GitHub
326ffc222b2SRob Bradfordproject](https://github.com/orgs/cloud-hypervisor/projects/6).
327cf31a303SRob Bradford
328ffc222b2SRob Bradford# 4. Relationship with _Rust VMM_ Project
329919226f3SSamuel Ortiz
330424efe6cSSebastien BoeufIn order to satisfy the design goal of having a high-performance,
331424efe6cSSebastien Boeufsecurity-focused hypervisor the decision was made to use the
332424efe6cSSebastien Boeuf[Rust](https://www.rust-lang.org/) programming language. The language's strong
333424efe6cSSebastien Boeuffocus on memory and thread safety makes it an ideal candidate for implementing
334424efe6cSSebastien BoeufVMMs.
335919226f3SSamuel Ortiz
336424efe6cSSebastien BoeufInstead of implementing the VMM components from scratch, Cloud Hypervisor is
337ffc222b2SRob Bradfordimporting the [Rust VMM](https://github.com/rust-vmm) crates, and sharing code
338424efe6cSSebastien Boeufand architecture together with other VMMs like e.g. Amazon's
339424efe6cSSebastien Boeuf[Firecracker](https://firecracker-microvm.github.io/) and Google's
340424efe6cSSebastien Boeuf[crosvm](https://chromium.googlesource.com/chromiumos/platform/crosvm/).
341919226f3SSamuel Ortiz
342ffc222b2SRob BradfordCloud Hypervisor embraces the _Rust VMM_ project's goals, which is to be able
343ffc222b2SRob Bradfordto share and re-use as many virtualization crates as possible.
344919226f3SSamuel Ortiz
345ffc222b2SRob Bradford## Differences with Firecracker and crosvm
346919226f3SSamuel Ortiz
347424efe6cSSebastien BoeufA large part of the Cloud Hypervisor code is based on either the Firecracker or
348ffc222b2SRob Bradfordthe crosvm project's implementations. Both of these are VMMs written in Rust
349ffc222b2SRob Bradfordwith a focus on safety and security, like Cloud Hypervisor.
350919226f3SSamuel Ortiz
351ffc222b2SRob BradfordThe goal of the Cloud Hypervisor project differs from the aforementioned
352ffc222b2SRob Bradfordprojects in that it aims to be a general purpose VMM for _Cloud Workloads_ and
353ffc222b2SRob Bradfordnot limited to container/serverless or client workloads.
354919226f3SSamuel Ortiz
355ffc222b2SRob BradfordThe Cloud Hypervisor community thanks the communities of both the Firecracker
356ffc222b2SRob Bradfordand crosvm projects for their excellent work.
357919226f3SSamuel Ortiz
358919226f3SSamuel Ortiz# 5. Community
359919226f3SSamuel Ortiz
360424efe6cSSebastien BoeufThe Cloud Hypervisor project follows the governance, and community guidelines
361424efe6cSSebastien Boeufdescribed in the [Community](https://github.com/cloud-hypervisor/community)
362424efe6cSSebastien Boeufrepository.
3637bfe87b7SSamuel Ortiz
3647bfe87b7SSamuel Ortiz## Contribute
3657bfe87b7SSamuel Ortiz
366ffc222b2SRob BradfordThe project strongly believes in building a global, diverse and collaborative
367ffc222b2SRob Bradfordcommunity around the Cloud Hypervisor project. Anyone who is interested in
368424efe6cSSebastien Boeuf[contributing](CONTRIBUTING.md) to the project is welcome to participate.
369919226f3SSamuel Ortiz
370ffc222b2SRob BradfordContributing to a open source project like Cloud Hypervisor covers a lot more
371ffc222b2SRob Bradfordthan just sending code. Testing, documentation, pull request
372424efe6cSSebastien Boeufreviews, bug reports, feature requests, project improvement suggestions, etc,
373424efe6cSSebastien Boeufare all equal and welcome means of contribution. See the
374424efe6cSSebastien Boeuf[CONTRIBUTING](CONTRIBUTING.md) document for more details.
375919226f3SSamuel Ortiz
376362f95c8SRob Bradford## Slack
377919226f3SSamuel Ortiz
378feb523efSBo ChenGet an [invite to our Slack channel](https://join.slack.com/t/cloud-hypervisor/shared_invite/enQtNjY3MTE3MDkwNDQ4LWQ1MTA1ZDVmODkwMWQ1MTRhYzk4ZGNlN2UwNTI3ZmFlODU0OTcwOWZjMTkwZDExYWE3YjFmNzgzY2FmNDAyMjI),
379feb523efSBo Chen [join us on Slack](https://cloud-hypervisor.slack.com/), and [participate in our community activities](https://cloud-hypervisor.slack.com/archives/C04R5DUQVBN).
38037e27842SRob Bradford
381362f95c8SRob Bradford## Mailing list
382362f95c8SRob Bradford
383362f95c8SRob BradfordPlease report bugs using the [GitHub issue
384362f95c8SRob Bradfordtracker](https://github.com/cloud-hypervisor/cloud-hypervisor/issues) but for
385362f95c8SRob Bradfordbroader community discussions you may use our [mailing
386362f95c8SRob Bradfordlist](https://lists.cloudhypervisor.org/g/dev/).
387362f95c8SRob Bradford
38837e27842SRob Bradford## Security issues
38937e27842SRob Bradford
390ddef99a0SRob BradfordPlease contact the maintainers listed in the MAINTAINERS.md file with security issues.
391