OpenVMM currently uses the mu_msvm
UEFI firmware package in order to support
booting and running modern EFI-boot capable operating systems.
In the future, it would be useful to also support alternative UEFI firmware
packages, such as [OVMF].
Please reach out of if this is something you may be interested in helping out
with!
Two OpenVMM components work in tandem in order to load and run the mu_msvm
UEFI firmware:
-
Pre-boot: the VMM's UEFI firmware loader does 3 things:
- Writes the
mu_msvm
UEFI firmware package into guest RAM - Writes VM topology information, and
mu_msvm
-specific config data into guest RAM - Initializes register state such that the VM will begin executing from UEFI
- Writes the
-
At runtime: the UEFI code within the Guest interfaces with a bespoke
firmware_uefi
device in order to implement certain UEFI services, such as NVRam variable support, watchdog timers, logging, etc.
The cargo xflowey restore-packages
script will automatically pull down a
precompiled copy of the mu_msvm
UEFI firmware from the microsoft/mu_msvm
GitHub repo.
Alternatively, for those that wish to manually download / build mu_msvm
:
follow the instructions over on the microsoft/mu_msvm repo, and ensure the
package is extracted into the .packages/
directory in the same manner as the
cargo xflowey restore-packages
script.