|
| 1 | + |
| 2 | +CloudHv is a port of OVMF for the Cloud Hypervisor project. |
| 3 | + |
| 4 | +The Cloud Hypervisor project |
| 5 | +---------------------------- |
| 6 | + |
| 7 | +Cloud Hypervisor is a Virtual Machine Monitor that runs on top of KVM. The |
| 8 | +project focuses on exclusively running modern, cloud workloads, on top of a |
| 9 | +limited set of hardware architectures and platforms. Cloud workloads refers to |
| 10 | +those that are usually run by customers inside a cloud provider. This means |
| 11 | +modern operating systems with most I/O handled by paravirtualised devices |
| 12 | +(i.e. virtio), no requirement for legacy devices, and 64-bit CPUs. |
| 13 | + |
| 14 | +https://github.com/cloud-hypervisor/cloud-hypervisor |
| 15 | + |
| 16 | +Design |
| 17 | +------ |
| 18 | + |
| 19 | +Based on Cloud Hypervisor's motto to reduce the emulation as much as possible, |
| 20 | +the project logically decided to support the PVH boot specification as the only |
| 21 | +way of booting virtual machines. That includes both direct kernel boot and OVMF |
| 22 | +firmware which must be generated as PVH ELF binaries. |
| 23 | +PVH allows information like location of ACPI tables and location of guest RAM |
| 24 | +ranges to be shared without the need of an extra emulated device like a CMOS. |
| 25 | + |
| 26 | +Features |
| 27 | +-------- |
| 28 | + |
| 29 | +* Serial console |
| 30 | +* EFI shell |
| 31 | +* virtio-pci |
| 32 | + |
| 33 | +Build |
| 34 | +----- |
| 35 | + |
| 36 | +The way to build the CloudHv target is as follows: |
| 37 | + |
| 38 | +OvmfPkg/build.sh -p OvmfPkg/CloudHv/CloudHvX64.dsc -a X64 -b DEBUG |
| 39 | + |
| 40 | +Usage |
| 41 | +----- |
| 42 | + |
| 43 | +Assuming Cloud Hypervisor is already built, one can start a virtual machine as |
| 44 | +follows: |
| 45 | + |
| 46 | +./cloud-hypervisor \ |
| 47 | + --cpus boot=1 \ |
| 48 | + --memory size=1G \ |
| 49 | + --kernel Build/CloudHvX64/DEBUG_GCC5/FV/CLOUDHV.fd \ |
| 50 | + --disk path=/path/to/disk.raw |
| 51 | + |
| 52 | +Releases |
| 53 | +-------- |
| 54 | + |
| 55 | +In edk2-stable202202, CloudHv is generated as data-only binary. |
| 56 | +Starting with edk2-stable202205, CloudHv is generated as a PVH ELF binary to |
| 57 | +reduce the amount of emulation needed from Cloud Hypervisor. |
| 58 | +For TDX, things are handled differently and PVH is not used, which is why the |
| 59 | +firmware is always generated as a data-only binary. |
| 60 | + |
| 61 | ++-------------------+----------------+ |
| 62 | +| | CloudHv | |
| 63 | ++-------------------+----------------+ |
| 64 | +| edk2-stable202202 | Data binary | |
| 65 | ++-------------------+----------------+ |
| 66 | +| edk2-stable202205 | PVH ELF binary | |
| 67 | ++-------------------+----------------+ |
0 commit comments