Closed wisemanny closed 1 day ago
I tried to load Windows x64 from vhdx on Arm64 windows (not even sure it will work, but did not get there yet, experimenting).
Unfortunately, that will not work.
Like most other VMMs, OpenVMM requires the Host and Guest architectures to match (i.e: x86 on x86, Aarch64 on Aarch64, etc...). It would be awesome if OpenVMM could someday support a CPU-emulation mode (e.g: similar to QEMU's TCG) to support these sorts of mixed-arch use-cases, but this is not a supported scenario at this time.
As for your error regarding no entry for id found
: OpenVMM searches for the PCAT BIOS firmware that is packaged alongside Hyper-V, and I believe that Aarch64 builds of vmfirmware.dll
do not include a copy of the x86 PCAT BIOS, given that Hyper-V does not support booting x86 BIOS-based VMs on ARM. As such, its no surprise that it wasn't able to find the corresponding ID in the DLL.
As a follow-up, we may want to look into adding some better user-facing error messages when --pcat
is used on non-x86 platforms.
@daprilik thank you for the detailed answer.
Regarding the firmware, I see it is there, but ID seems to be different (probably because of aarch64), it has id of 13505 while it looks for 13500. I will close the issue.
13505 is a different firmware blob, not the PCAT blob. We definitely could improve the messaging here, but yeah there's no PCAT blob to be found on the ARM64 vmfirmware.dll.
I tried to load Windows x64 from vhdx on Arm64 windows (not even sure it will work, but did not get there yet, experimenting). The vhdx uses MBR partitioning. So, I use --pcat parameter. openvmm complains that it cannot find resource (the firmware), though I can see it in the dll:
Versions:
openvmm is the latest version from git compiled on windows as:
cargo build --target=x86_64-pc-windows-msvc
Backtrace:
It fails here: https://github.com/microsoft/openvmm/blob/main/openvmm/hvlite_pcat_locator/src/resource_dll_parser.rs#L24
Calling "rsrc.root()" returns back Err:
Should I submit the report directly to object?