ARM64 chips are considered more energy efficient compared to x86 CPUs from Intel and AMD. Using the new platform, OEMs are able to create even smaller, lighter and powerful devices with the power of full Windows 10. There is a way to install and try Windows 10 for ARM SoCs in QEMU. Here is how.
QEMU is a free and open-source hosted hypervisor that performs hardware virtualization. With QEMU, it is easy to emulate a completely different set of hardware from the physical hardware you have. The software supports emulation of the AArch64/ARM64 architecture, so it can be used to install Windows 10 for ARM.
While Windows 10 runs slowly inside QEMU, it is good enough to see what exactly Windows 10 for ARM is.
Here are steps you need to take to get Windows 10 for ARM working in QEMU. Keep in mind that it won't support network because of missing drivers.
To install Windows 10 for ARM in QEMU, do the following.
- Download and install QEMU for Windows
- Download the Windows 10 (arm64) ESD/UUP files from any trusted source. For example, you can use the following web site created by adguard.
- Now, download the UUP files to ISO converter from here. It is adapted to build ISO images for ARM.
- Download the UEFI firmware and recompiled/signed arm64 storage drivers package.
- Create a new system.vhdx file of 23GB or larger (fixed size, not expanding, initialized using GPT partitioning scheme).
- To start your virtual machine, use the following batch file:
qemu-system-aarch64.exe ^ -M virt ^ -cpu cortex-a57 ^ -smp 3 ^ -m 4G ^ -pflash QEMU_EFI.img ^ -pflash QEMU_VARS.img ^ -device VGA ^ -device nec-usb-xhci ^ -device usb-kbd ^ -device usb-mouse ^ -device usb-storage,drive=install ^ -drive if=none,id=install,format=raw,media=cdrom,file=.\17083.1000.180119-1645.RS_PRERELEASE_CLIENTCOMBINED_UUP_ARM64FRE_EN-US.ISO ^ -device usb-storage,drive=drivers ^ -drive if=none,id=drivers,readonly=on,file=.\drivers.vhdx ^ -device virtio-blk,drive=system ^ -drive if=none,id=system,format=raw,file=.\system.vhdx
You are done!
Note: During setup, you will need to provide VirtIO drivers (browse to the mounted disk).
The batch file provided above will configure QEMU to emulate the following device:
- virtualize a Cortex A57 CPU (with 3 cores)
- set up 4GiB of RAM
- use my recompiled TianoCore EDKII ArmVirtPkg firmware, with minor edits to re-enable VGA support and include a whimsical boot logo to discourage serious usage. (This is similar to the build provided by Googulator in that I reverted two VGA commits. No other changes were made. Latest master.)
- use some scratch space for UEFI variable storage (e.g. boot order)
- use VGA for graphics needs
- set up a NEC USB XHCI Host Controller
- ... and plug four virtualized USB devices into it
- a USB keyboard
- a USB mouse
- a CDROM hosting our install media
- a removable hard drive hosting the VirtIO driver package vhdx
- set up a VirtIO Block Device hosting the main system vhdx
The result should be as follows:
All credits go to Rafael Rivera.