On 5/19/25 19:30, Paul Larochelle via Users wrote:
Hello,
I'm writing to better understand a surprising discrepancy I encountered
while attempting to install Windows 11 in different virtualization
environments.
On my Arch Linux system, I tested two setups:
1. **VirtualBox (GUI):** Windows 11 installs successfully out of the box.
2. **QEMU/KVM with libvirt (manually crafted XML):** Windows 11 refuses
to install, stating that the system doesn't meet the requirements.
The libvirt domain configuration includes:
- UEFI boot using OVMF (`OVMF_CODE.4m.fd` and `OVMF_VARS.ms.fd`)
I have no idea what these ^^^ are since they are not what I usualy
encounter. Nevertheless, it looks there's OVMF_CODE_4m.secboot.fd which
would suggest it has secure boot enabled while the _CODE you chose hasn't?
- TPM 2.0 emulator (`tpm-crb` with `backend type='emulator'
version='2.0'`)
- Secure Boot enabled (verified using Microsoft-signed vars)
- 8 GiB of RAM, 4 vCPUs
- VirtIO disk + virtio-win ISO attached
- QXL or VirtIO video model
- `<hyperv>` feature set enabled
- Valid boot order (CD-ROM first, then disk)
Despite this, Windows 11 either refuses installation with the "This PC
can't run Windows 11" message or fails to detect a valid bootable device.
In contrast, VirtualBox seems to pass all checks without exposing TPM
configuration explicitly or enabling Secure Boot manually.
---
**My question:**
What is VirtualBox doing under the hood that makes Windows 11 accept the
environment without issues?
- Is it exposing a minimal TPM implicitly?
- Is it modifying SMBIOS/ACPI fields in a way that satisfies Windows
validation logic?
- Are there known tricks or missing XML elements in libvirt domains to
replicate this behavior?
Using virt-install I install Windows 11 happily. I never tried to come
up with domain XML from scratch myself and I'm with the project for ~15
years. There are tools for that. Is there something specific that you
need and virt-install is not offering?
My goal is not to bypass Microsoft's requirements, but rather to
understand the technical differences and replicate a compliant setup in
QEMU/libvirt, ideally without resorting to ISO modifications.
This was never the case for me.
Michal