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`)
- 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?
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.
Any insight or guidance would be highly appreciated.
Best regards, Paul
[signature_paul.png]
Paul Larochelle
819 342-5487
Envoyé avec la messagerie sécurisée [Proton Mail.](https://proton.me/mail/home)