For anyone who wants newer Windows version, please refer to this tutorial by Vogtinator
It has been a long time since the last time I touched this Readme file. Now's 2022 already and you can build yourself a newer EDKII image instead of using this (if you have problem with using this). And also, if you really want a usable Windows on ARM (not too slow), get a Raspberry Pi and install directly on it (check out WoA project) or run on KVM on it.
To run Windows on ARM on an emulator without finding a real hardware :)
There are some pages show how to do this on the Internet. But the problem is, you will have to download the iso and install yourself
and this takes really long time to install on QEMU (about 3 -> 4 days on my machine with Pentium Dualcore T4300). Another way
is to apply the install.wim to a vhd file and put it to QEMU, but this might not work due to missing EFI loader (I have tried this too).
So in this repo I will give you my modified version of preinstalled img file originally from this post
and the download link is here.
- Disable Pagefile
- Disable Search Index
- Disable Printer Service
- Fixed EFI
- FreeArc compressed version. You must use FreeArc to extract it. (Size: 4.0 GB)
- 7z compressed version (Size: 4.2GB)
If there is a password prompt, type in win10arm64
Step 1: Install QEMU: Goto qemu.org and install QEMU if you haven't installed it yet. On Linux just run sudo apt install qemu-system-aarch64
Step 2: Download the script: Goto Release and download it. Or you can copy the script here:
- For Windows:
@echo off
title WOA
qemu-system-aarch64.exe ^
-name "Windows 10 on ARM64" ^
-M virt ^
-cpu cortex-a72 ^
-smp 3 ^
--accel tcg,thread=multi ^
-m 2048 ^
-pflash QEMU_EFI.img ^
-pflash QEMU_VARS.img ^
-device VGA ^
-device nec-usb-xhci ^
-device usb-kbd ^
-device usb-mouse ^
-device usb-storage,drive=boot ^
-drive if=none,id=boot,file="woa_17134.img" ^
-device usb-storage,drive=drivercdrom ^
-drive file="virtio-win-0.1.185.iso",media=cdrom,if=none,id=drivercdrom
- For Linux/MacOS:
#/bin/bash
qemu-system-aarch64 -name "Windows 10 on ARM64" -M virt -cpu cortex-a72 -smp 3 --accel tcg,thread=multi -m 2048 -pflash QEMU_EFI.img -pflash QEMU_VARS.img -device VGA -device nec-usb-xhci -device usb-kbd -device usb-mouse -device usb-storage,drive=boot -drive if=none,id=boot,file="woa_17134.img" -device usb-storage,drive=drivercdrom -drive file="virtio-win-0.1.185.iso",media=cdrom,if=none,id=drivercdrom
Step 3: (Optional) Install Virtio driver: Download the driver iso here and put it to the vm directory.
IMPORTANT: If you don't want to install Virtio driver or you finished install it, you can delete it (if you have downloaded it) and comment out the 2 last line in the script. For Linux/MacOS script, just remove -device usb-storage,drive=drivercdrom -drive file="virtio-win-0.1.185.iso",media=cdrom,if=none,id=drivercdrom
from arm.sh
Step 4: Start the script
Just like normal script, ./arm.sh
for Linux/MacOS and arm.sh
for Windows
When it boot to EFI shell, enter exit
. Then it will come to a list of options, select 'Boot Manager', then select 'UEFI QEMU QEMU HARDDRIVE ...3' or 'UEFI QEMU QEMU HARDDRIVE ...4.1'. If this does not work and you return to that menu, please try another boot device in that list. That should work.
- The emulator may be so lag when you boot it. After a while when the desktop loaded, you can use it normally.
- This image file can be used to flash the real rpi
- You can use
--enable-kvm
when you are on a real ARM cpu with virtualization. I'm about to run this on my phone here
- Add saved state image so you can just restore it.