(This is a guest post by Antoni Sawicki aka Tenox)
Microsoft is releasing Windows 10 for ARM64 CPUs and this time, unlike Windows RT fiasco, there will be a full desktop app support including a dynamic binary translator to allow running existing x86 apps on ARM CPU, much like FX!32 on Alpha NT or Rosetta on Mac OS X.
Latest Visual Studio updates now brings official ARM/ARM64 support for Desktop Apps, a little hidden, but here is how to enable it.
Being able to compile Windows ARM apps, I wanted to try to actually run them, but … on what exactly? There are some developer evaluation boards. Apparently someone managed to run it on Raspberry PI. Most importantly however you can run Windows 10 ARM64 on QEMU.
I’m not claiming to be the first. Some clever people have already done it. I just wanted to make it little easier for the lazier of us. Here is how.
Follow the link above but skip the shady UUP business in step #3 and download ready made iso instead. Google the iso image from windows.cmd and it will take you to this link. You need the rest of the files like UEFI firmware and virtio drivers.
For the even more impatient here is a ready to run image with Windows pre-installed. Because QEMU now comes with DLL hell I’m not including it in the archive. You will have to install it separately.
If you want to test your binaries the easiest way is to create an .iso file and attach it like the original Windows preview CD.
I downloaded 16299.15.170928-1534.RS3_RELEASE_CLIENTCOMBINED_UUP_ARM64FRE_EN-US.ISO just before 1709 was officially released, but I don’t remember how (IIRC it involved XML files from MediaCreator).
I got it to run in Qemu with WithinRafael’s UEFI, but there are a few problems:
– it randomly BSODs with UNSUPPORTED_PROCESSOR
– I couldn’t get any GUI x86 programs to work – they start up (show in Task Manager), but never open any windows; console programs (including more complex ones, like FAR Manager) work fine
I also tested the ARM ports from xda-developers, many things work fine (but some complain about missing DLLs).
Getting some PAGE_FAULT_IN_NONPAGED_AREA BSOD’s when trying to boot the ready-to-run image, using qemu 2.12.0 (from ArchLinux repo)