Many developers encounter the frustrating "This PC doesn't meet the minimum system requirements" error when trying to install Windows 11 in QEMU, even on capable hardware. This typically occurs due to missing virtualization features or incorrect QEMU configuration.
Windows 11 requires three critical components that QEMU must emulate:
- TPM 2.0 (Trusted Platform Module)
- Secure Boot
- UEFI firmware with proper virtual hardware support
Here's a working configuration that bypasses these requirements:
qemu-system-x86_64 \
-machine q35,accel=kvm \
-cpu host \
-smp 4 \
-m 4096 \
-device qemu-xhci \
-device virtio-tablet \
-device virtio-keyboard \
-drive file=Win11.qcow2,if=virtio \
-drive file=Win11_install.iso,media=cdrom \
-device virtio-net,netdev=net0 \
-netdev user,id=net0 \
-bios /usr/share/edk2/x64/OVMF.fd \
-device virtio-rng-pci \
-debugcon file:debug.log -global isa-debugcon.iobase=0x402 \
-enable-kvm \
-global ICH9-LPC.disable_s3=1 \
-global driver=cfi.pflash01,property=secure,value=on \
-machine type=q35,smm=on \
-global ICH9-LPC.disable_s3=1 \
These parameters are essential for Windows 11 compatibility:
- OVMF.fd: UEFI firmware supporting Secure Boot
- q35 machine type: Modern chipset emulation
- TPM emulation: Add
-chardev socket,id=chrtpm,path=/tmp/tpm-sock
and-tpmdev emulator,id=tpm0,chardev=chrtpm
For testing purposes, you can bypass TPM checks by modifying the Windows 11 ISO:
# Mount ISO
mkdir -p /mnt/iso /mnt/wim
mount -o loop Win11_install.iso /mnt/iso
# Extract install.wim
cp /mnt/iso/sources/install.wim .
# Modify requirements
wimlib-imagex export install.wim 1 install_modified.wim \
--boot --check-integrity \
--include-integrity
# Repackage ISO
mkisofs -o Win11_modified.iso \
-b boot/etfsboot.com -no-emul-boot \
-boot-load-size 8 -iso-level 2 -J -l -D -N \
-joliet-long -relaxed-filenames -allow-limited-size \
-V "WIN11_MODIFIED" /mnt/iso
Check your QEMU environment supports required features:
qemu-system-x86_64 -machine help | grep q35
qemu-system-x86_64 -cpu help | grep -i tpm
ls -l /usr/share/edk2/*/OVMF*.fd
For optimal Windows 11 performance in QEMU:
- Allocate at least 4 CPU cores and 8GB RAM
- Use virtio drivers for storage and network
- Enable KVM acceleration if available
- Consider GPU passthrough for graphics-intensive tasks
Many developers encounter the frustrating Windows 11 installation error when testing with QEMU, despite having capable host hardware. The error message "This PC doesn't meet the minimum system requirements" typically appears right after selecting the OS type during setup.
Windows 11 enforces several hardware requirements that QEMU's default configuration doesn't satisfy:
- TPM 2.0 chip (missing by default)
- Secure Boot capability (disabled)
- UEFI with 64-bit CPU (often misconfigured)
- 4GB+ RAM allocation (sometimes insufficient)
Here's a working configuration that bypasses Windows 11 checks:
qemu-system-x86_64 \
-enable-kvm \
-m 8G \
-smp 4 \
-cpu host \
-bios /usr/share/OVMF/OVMF_CODE.fd \
-drive file=Win11_install.iso,media=cdrom \
-drive file=win11.qcow2,format=qcow2 \
-tpmdev passthrough,id=tpm0,path=/dev/tpm0 \
-device tpm-tis,tpmdev=tpm0 \
-machine type=q35,accel=kvm \
-global ICH9-LPC.disable_s3=1 \
-net nic -net user
OVMF UEFI Firmware: Must be used instead of legacy BIOS. Most distros provide this in packages like 'ovmf' or 'edk2-ovmf'.
TPM Emulation: Either pass through a hardware TPM or use software emulation with swtpm:
swtpm socket --tpmstate dir=/tmp/mytpm1 --ctrl type=unixio,path=/tmp/swtpm-sock &
qemu-system-x86_64 [...] -chardev socket,id=chrtpm,path=/tmp/swtpm-sock \
-tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0
If you can't modify QEMU configuration, create an autounattend.xml file with these registry tweaks:
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>reg add "HKLM\\SYSTEM\\Setup\\LabConfig" /v "BypassTPMCheck" /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>reg add "HKLM\\SYSTEM\\Setup\\LabConfig" /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
After successful installation, check system information matches expected configuration:
systeminfo | findstr /i "System\ Memory Processor"
wmic /namespace:\\root\cimv2\security\microsofttpm path win32_tpm get *