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)

Reply via email to