Windows 11 fails to install under QEMU/libvirt while VirtualBox succeeds — why?

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)

Hi Paul, Did you load the virtio drivers in the W11 install environment? Greetings, Dominique. Van: Paul Larochelle via Users <users@lists.libvirt.org> Verzonden: maandag 19 mei 2025 19:30 Aan: users@lists.libvirt.org Onderwerp: Windows 11 fails to install under QEMU/libvirt while VirtualBox succeeds — why? 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>

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

On Mon, May 19, 2025 at 05:30:07PM +0000, 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.
If you're going to manually craft the XML, instead of using existing provisioning tools that are designed to get this right, please at least share your XML config, otherwise we're flying blind when trying to suggest what is wrong. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
participants (4)
-
Daniel P. Berrangé
-
Dominique Ramaekers
-
Michal Prívozník
-
Paul Larochelle