Let me breifly introduce what I’ve done to succesfully emulate a usable Windows 11 on rapberry pi 4b. The speed is higher than when we directly install the system on Raspberry Pi.
1. Download the system.
I’ve tried several Win 11 versions, including the latest Windows 11 24H2. We know that the recent released Win11 24H2 comes with the improved emulator PRISM. I at first hoped this release can be used with QEMU version 8 or 9, But it didn’t run properly. Stuck happened after the UEFI loads and the CD-ROM can’t load the setup program.
I downloaded the Win11 21H2 using UUP provided by rg-adguard.net. The version Windows 11 [ARM64] can be installed into our virtual machine (VM). Maybe other versions of Win 11 can be used, you can have a try. But again, I still hope Win 11 24H2 with PRISM can be installed due to its emulating efficency.

2. Compile the QEMU inside Ubuntu for Raspberry Pi.
../configure --cc=gcc --cxx=g++ --target-list=x86_64-softmmu,aarch64-softmmu --enable-kvm --enable-spice --enable-vnc --en able-guest-agent && make -j4
The Qemu can be downloaded at its official website.
3. Download essential compoents.
You will need Virtio to drive your virtual disk (either in .img or .qcow2). For Win11, the latest version of Virtio should be chosen.

4. Run your Win 11 VM with libvirt.
Libvirt helps to manage your raspberry pi Win 11 easily. The program virt-manager will guide you to setup your VM. TWin 11 is now running with 4 cores and 2GB Ram. Please note that I use Hugepages to help the system run smoothly.
Here is how my xml file looks:
<domain type="kvm">
<name>win11</name>
<uuid>f04c44ae-e376-40a5-913b-56d2e7b5974c</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://microsoft.com/win/11"/>
</libosinfo:libosinfo>
</metadata>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<memoryBacking>
<hugepages/>
</memoryBacking>
<vcpu placement="static">4</vcpu>
<os firmware="efi">
<type arch="aarch64" machine="virt-9.1">hvm</type>
</os>
<features>
<acpi/>
<gic version="2"/>
</features>
<cpu mode="host-passthrough" check="none"/>
<clock offset="localtime"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/local/bin/qemu-system-aarch64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="raw" cache="none"/>
<source file="/mnt/myusbdrive/softwares/win11arm64.img"/>
<target dev="vda" bus="virtio"/>
<boot order="1"/>
<address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="raw" cache="none"/>
<source file="/mnt/myusbdrive/softwares/vol.img"/>
<target dev="vdb" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<target dev="sda" bus="scsi"/>
<readonly/>
<address type="drive" controller="0" bus="0" target="0" unit="0"/>
</disk>
<controller type="pci" index="0" model="pcie-root"/>
<controller type="pci" index="1" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="1" port="0x8"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="2" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="2" port="0x9"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/>
</controller>
<controller type="pci" index="3" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="3" port="0xa"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
</controller>
<controller type="pci" index="4" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="4" port="0xb"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x3"/>
</controller>
<controller type="pci" index="5" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="5" port="0xc"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x4"/>
</controller>
<controller type="pci" index="6" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="6" port="0xd"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x5"/>
</controller>
<controller type="pci" index="7" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="7" port="0xe"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x6"/>
</controller>
<controller type="pci" index="8" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="8" port="0xf"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x7"/>
</controller>
<controller type="pci" index="9" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="9" port="0x10"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="10" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="10" port="0x11"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
</controller>
<controller type="pci" index="11" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="11" port="0x12"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
</controller>
<controller type="pci" index="12" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="12" port="0x13"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
</controller>
<controller type="pci" index="13" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="13" port="0x14"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
</controller>
<controller type="pci" index="14" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="14" port="0x15"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
</controller>
<controller type="pci" index="15" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="15" port="0x16"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
</controller>
<controller type="pci" index="16" model="pcie-to-pci-bridge">
<model name="pcie-pci-bridge"/>
<address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
</controller>
<controller type="usb" index="0" model="qemu-xhci" ports="15">
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</controller>
<controller type="scsi" index="0" model="virtio-scsi">
<address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
</controller>
<interface type="network">
<mac address="52:54:00:e4:d4:ef"/>
<source network="default"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
</interface>
<input type="keyboard" bus="usb">
<address type="usb" bus="0" port="1"/>
</input>
<input type="tablet" bus="usb">
<address type="usb" bus="0" port="2"/>
</input>
<graphics type="vnc" port="5960" autoport="no" listen="0.0.0.0">
<listen type="address" address="0.0.0.0"/>
</graphics>
<audio id="1" type="none"/>
<video>
<model type="ramfb" heads="1" primary="yes"/>
</video>
</devices>
</domain>

Leave a Reply