How to Install Windows 10 for ARM in QEMU

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.

Windows 10 For Arm Image 2

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.

  1. Download and install QEMU for Windows
  2. Download the Windows 10 (arm64) ESD/UUP files from any trusted source.  For example, you can use the following web site created by adguard.
  3. Now, download the UUP files to ISO converter from here. It is adapted to build ISO images for ARM.
  4. Download the UEFI firmware and recompiled/signed arm64 storage drivers package.
  5. Create a new system.vhdx file of 23GB or larger (fixed size, not expanding, initialized using GPT partitioning scheme).
  6. 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:

The result should be as follows:

Windows 10 For Arm Image 1

All credits go to Rafael Rivera.

Support us

Winaero greatly relies on your support. You can help the site keep bringing you interesting and useful content and software by using these options:

37 thoughts on “How to Install Windows 10 for ARM in QEMU

  1. John Doe

    How to change display resolution:
    Press ESC key at “Start boot option”.
    Device Manager, OVMF Platform configuration, Change Preferred, Commit Changes and Exit, ESC Key, Reset.

    Cannot change display resolution from Windows.

    1. John Doe

      Some words are vanished.
      Device Manager, OVMF Platform configuration, Change Preferred, Commit Changes and Exit, ESC Key, Reset.

  2. ChibiBad

    Hello ! Thanks for your work !
    But I have a problem for installation in the hard drive, is not detected, screenshot here :

    Can you upload your main base files please ?


    1. Sergey Tkachenko Post author

      Sorry, I’ve already deleted it.

      1. ChibiBad

        Ok don’t worry, I hope to find a fix :)

    2. Cruncher

      At this point you need to install the HDD driver provided in drivers.vhdx. After this you will see the drive, which you created before (system.vhdx). You will be able to install windows there.

      1. ChibiBad

        Thanks for your feedback, can you help me to try this please ?

        1. Cruncher

          Not sure how i can help you further. Just looking at your screenshot, look for a button to install additional drivers, then navigate to the drivers disk, where Windows picks up the VirtIO Block driver.

          1. ChibiBad

            I don’t know where he is :(

  3. gilius

    I cannot get the HD to be detected either. Strange how the top one gets detected but not the bottom one:
    -drive if=none,id=drivers,readonly=on,file=drivers.vhdx ^
    -drive if=none,id=system,format=raw,file=system.vhdx
    I created using Disk Management in Windows 10 > Action menu > Create VHD > VHDX > 23 GB > initialised as GPT and formatted to NTFS.
    Anyone managed to get anywhere with this on Android phone running Ubuntu? I only got as far as the windows + hand icon then it went to an EFI/grub screen using the same Qemu script as above.

    1. gilius

      It’s working now… needed both these lines – I must have removed one:
      -device virtio-blk,drive=system ^
      -drive if=none,id=system,format=raw,file=system.vhdx

      I then clicked on load driver, C drive, unhide, click on listed driver, next… and then the drive appeared as an option to install windows.

      Now what I would love to do is delete the first drive and create a partition on the 2nd drive and only install windows to one partition instead of one drive with multiple partitions – but I guess this UEFI boot is required for Arm64?
      Would have been nice if we didn’t require the 2 flash drives and could use legacy bios, but even on the Ubuntu website they mention the need for these 2 volumes:

    2. gilius

      Unable to complete installation… I had to hit escape and boot from last device in the list following the copying over of windows files, but after that it tries to get devices ready then complains that there’s a problem doing so and restarts.

      Eventually it ends up with this…

      BTW, there’s a bug in the latest version of Qemu stopping this from working at all, so I used the the December 2017 update. Also, on Ubuntu Qemu is out of date, so I compiled the same version but still end up at the shell prompt when trying to run Rafael’s script/flash ROMs.

      1. ChibiBad

        Hello gilius, I am so happy if you run Windows ARM with success, because I can’t do that, my installation don’t detect the Hard Drive :(

        1. alv37

          Hi, when you are to the step (which is on your screenshot) click on “load drivers” then click on “browse” button and select “local drive (c:)” after that you’ll see a driver. When the driver is install you can select your drive and start windows install.

          1. Jbk

            I have the same problem, but I don’t see any drivers in C:\

  4. Andrei Lupascu

    If you receive the “ACPI BIOS ERROR”, you must use the 2017-december QEMU version. I’ve struggled some hours until i discovered this. As another comment in this thread said, the 2018 QEMU version won’t work with this image.

    1. Milkstar

      Thank you so much! I really struggled getting Windows 10 run on ARM64 in QEMU but the 2017-12-17 build of QEMU for Windows did the trick!

    2. Ravishankar

      Do you think this will be fixed in the latest QEMU on Linux ?

  5. Mario Montaño

    i’ve tryied many times to download the windows 10 arm for that UUP site but always the same problem i choose the OS and the second option keep loading the version….

  6. Heric Sandro

    I follow the step by step in detail, and when I run the VM the installation does not start.
    It goes into the BIOS and everything. I do not know what to try anymore. Can someone help me please!
    PS. My English is very bad because I’m Brazilian, and this is a web translation from Google.

  7. Yashwanth

    Followed instructions as above
    But stuck at >>Start PXE over IPv4

    1. Pere Stick

      Same problem i need to find solution, if someone can help thanks

    2. Ravishankar

      Overwite the QEMU_EFI.img and other QEMU_VARS.img with original files.

  8. maniel

    for me it seems to hang after i press any key on boot prompt as asked

    1. dangeredwolf

      Same here, still no solution

  9. Paul

    Now run an x86 app on it :-)

    1. Sergey Tkachenko Post author

      haha :-)

  10. Luis

    hi, i need your help. I must to reinstall windows 10 on asus novago Qualcomm snapdragon processor.
    have you an idea to help me? please

    thank you

  11. Grima04

    I have tried this with Limbo Emulator which is basically Qemu for Android. My goal was to run Windows 10 for ARM at nearly native speed on my phone since it also has an ARM64 CPU and then use the x86 emulator integrated into Windows for ARM to run some low requirement PC x86 games on my phone. Unfortunately I get stuck at the Press any key to boot from CD or DVD after cd-ing into FS0:\EFI\BOOT and executing BOOTAA64.EFI in the shell. As soon as I press a key, nothing happens.

  12. Brandon

    Hi, I tried all the steps you have me however I did it in limbo which is based on qemu, and it will not even get past a black screen, I also have no idea how to import the bios into limbo

  13. nicolas

    I am seeing a white Windows logo with an arm with the message “Start Boot Option” and a progress bar.

    It then switches to text mode with the message: “press any key to boot from DVD or DVD”.

    Pressing a key switches back to the white Windows logo and nothing seems to happen: is it supposed to be long?

    1. Kumar

      Hi Nicolas,
      I’m also facing the same issue. Are you able to move on from this?

  14. hooddy

    Guys how to setup Network bridge on it for hosted Windows 10?

  15. Michael

    I couldn’t get this to run actually…used the actual insider build and also an older one as suggested here:

    It’s only “Loading Files” after that i see only a black screen. Tested Quemu on Windows and also on Linux (in a WSL2 environment). Tried may things but no success :-(

    Any hekp?

  16. Ravishankar

    I would like to run Win10 ARM on qemu on Linux on a ARM64 system. Is this possible ?

    1. Ravishankar

      I use this command line to run:

      rreddy78@jetson-nano:~/qemu/build/vm_test$ qemu-system-aarch64 -M virt -cpu cortex-a57 -smp 2 -m 2G -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=18362.1198.201030-1156.19H1_RELEASE_SVC_PROD1_CLIENTPRO_OEMRET_A64FRE_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

      I get a >>Start PXE over IPV4

      and then boot process stops. It was not so when i ran it for the first time,. got the press any key to continue and then it was booting and then I got the ACPI BIOS error.

      1. Ravishankar

        The issue of >>Start PXE over IPV4 is resolved by overwriting the QEMU_EFI.img and QEMU_VARS.img with the original ones.

        But how to resolve the ACPI BIOS Error ? Does anyone know ?


Leave a Reply

Your email address will not be published. Required fields are marked *