CloudHv is a port of OVMF for the Cloud Hypervisor project. | |
The Cloud Hypervisor project | |
---------------------------- | |
Cloud Hypervisor is a Virtual Machine Monitor that runs on top of KVM. The | |
project focuses on exclusively running modern, cloud workloads, on top of a | |
limited set of hardware architectures and platforms. Cloud workloads refers to | |
those that are usually run by customers inside a cloud provider. This means | |
modern operating systems with most I/O handled by paravirtualised devices | |
(i.e. virtio), no requirement for legacy devices, and 64-bit CPUs. | |
https://github.com/cloud-hypervisor/cloud-hypervisor | |
Design | |
------ | |
Based on Cloud Hypervisor's motto to reduce the emulation as much as possible, | |
the project logically decided to support the PVH boot specification as the only | |
way of booting virtual machines. That includes both direct kernel boot and OVMF | |
firmware which must be generated as PVH ELF binaries. | |
PVH allows information like location of ACPI tables and location of guest RAM | |
ranges to be shared without the need of an extra emulated device like a CMOS. | |
Features | |
-------- | |
* Serial console | |
* EFI shell | |
* virtio-pci | |
Build | |
----- | |
The way to build the CloudHv target is as follows: | |
OvmfPkg/build.sh -p OvmfPkg/CloudHv/CloudHvX64.dsc -a X64 -b DEBUG | |
Usage | |
----- | |
Assuming Cloud Hypervisor is already built, one can start a virtual machine as | |
follows: | |
./cloud-hypervisor \ | |
--cpus boot=1 \ | |
--memory size=1G \ | |
--kernel Build/CloudHvX64/DEBUG_GCC5/FV/CLOUDHV.fd \ | |
--disk path=/path/to/disk.raw | |
Releases | |
-------- | |
In edk2-stable202202, CloudHv is generated as data-only binary. | |
Starting with edk2-stable202205, CloudHv is generated as a PVH ELF binary to | |
reduce the amount of emulation needed from Cloud Hypervisor. | |
For TDX, things are handled differently and PVH is not used, which is why the | |
firmware is always generated as a data-only binary. | |
+-------------------+----------------+ | |
| | CloudHv | | |
+-------------------+----------------+ | |
| edk2-stable202202 | Data binary | | |
+-------------------+----------------+ | |
| edk2-stable202205 | PVH ELF binary | | |
+-------------------+----------------+ |