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.

23 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.

    Reply
    1. John Doe

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

      Reply
  2. ChibiBad

    Hello ! Thanks for your work !
    But I have a problem for installation in the hard drive, is not detected, screenshot here : https://zupimages.net/up/18/07/7g4v.png

    Can you upload your main base files please ?

    Regards

    Reply
    1. Sergey Tkachenko Post author

      Sorry, I’ve already deleted it.

      Reply
      1. ChibiBad

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

        Reply
    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.

      Reply
      1. ChibiBad

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

        Reply
        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.

          Reply
          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.

    Reply
    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?
      https://s9.postimg.org/9k9s3byrj/w10arm.png
      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:
      https://wiki.ubuntu.com/ARM64/QEMU

      Reply
    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.
      https://s9.postimg.org/qfg6ucopb/w10arm5.png

      Eventually it ends up with this…
      https://s9.postimg.org/6wbll95fz/w10arm4.png

      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.

      Reply
      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 :(

        Reply
        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.

          Reply
          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.

    Reply
    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!

      Reply
  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….

    Reply
  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.

    Reply
  7. Yashwanth

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

    Reply
    1. Pere Stick

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

      Reply
  8. maniel

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

    Reply
    1. dangeredwolf

      Same here, still no solution

      Reply

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.