...
Prerequisites
Windows ISO
Microsoft does not distribute official ISO for windows-arm64.
UUPDump website allows you to build an iso from windows update servers. Pick most recent version of windows 11 (avoid “Cumulative update”). Select “Windows pro”. https://uupdump.net/known.php?q=22h2+arm64
Then you can download the iso using a script shell. Some dependencies are needed, and the tool will guide you to report those that are missing.
You should obtain a file named like “XXXXX.X_PROFESSIONAL_ARM64_EN-US.ISO”.
In our example, latest version is 22621.1www.microsoft.com/en-us/software-download/windows11arm64
If you only want to boot the windows kernel and a limited user-space, you can use Microsoft Validation OS instead (see instructions here).
Virtio drivers
Virtio windows drivers (https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md) are needed to make your disk recognized by windows. Pick latest iso from link above.
In our example, latest version is 0.1.229266.
EFI
Download latest EFI from https://packages.debian.org/sid/qemu-efi-aarch64 . This will be used to boot windows image. Download package from “all” link, and extract it using:
...
You should now have those files available in current folder:
22621.1Win11_PROFESSIONAL24H2_ARM64EnglishInternational_EN-USArm64.ISOiso
virtio-win-0.1.229266.iso
QEMU_EFI.fd
win11-arm64.img
...
Code Block |
---|
qemu-system-aarch64 \ -M virt,virtualization=true -m 8G -cpu max,pauth-impdef=on -smp 8 \ -bios ./QEMU_EFI.fd\ --accel tcg,thread=multi\ -device ramfb \ -device qemu-xhci -device usb-kbd -device usb-tablet \ -nic user,model=virtio-net-pci \ -device usb-storage,drive=install \ -drive if=none,id=install,format=raw,media=cdrom,file=./22621.1Win11_PROFESSIONAL24H2_ARM64EnglishInternational_EN-USArm64.ISOiso \ -device usb-storage,drive=virtio-drivers \ -drive if=none,id=virtio-drivers,format=raw,media=cdrom,file=./virtio-win-0.1.229266.iso \ -drive if=virtio,id=system,format=raw,file=./win11-arm64.img |
Notes:
...
--accel tcg,thread=multi is to speed up emulation
devices are added for graphics output (ramfb), keyboard/mouse (usb*) and network (-nic)
pauth-impdef=on speeds up pointer authentication https://www.qemu.org/docs/master/system/arm/cpu-features.html#tcg-vcpu-features
Run QEMU on aarch64 hardware
In case you have access to a linux-aarch64 machine:
replace
--accel tcg
with--accel kvm
(or--accel hvf
on MacOS)replace cpu with
-cpu=host
Note: It has been successfully booted on a 80-core aarch64 server, running Linux 6.0 and qemu-system 6.2.
Setup Windows
Setup will take between 1 and 2 hours on a high end x64 processor. It requires several manual steps.
...
Now, close regedit, command prompt, go back to previous page (using top left arrow), and click again on “i don’t have a product key”. Windows is now happy to install be installed on your VM
Find your disk
Keep on advancing, select a “Custom install”, and you should now hit this screen:
...
By following this (https://www.makeuseof.com/windows-11-set-up-without-internet-connection/ ), we can skip this and continue installation.
In short: Open a command prompt (using Shift + F10), and type OOBE\BYPASSNRO
...