Document:Installing ARM32-based Windows 8 releases on QEMU
Prerequisites[edit | edit source]
The following requirements used in order to install this build onto a virtual machine are listed below:
- A copy of QEMU v6.2.0, modified for Windows RT compatibility
- A version of the TianoCore EDK II firmware designed for ARM32 emulation (included above), to be placed in the QEMU installation directory under
fw/QEMU_EFI_1512_driver1998.fd
- One virtual hard disk image (for storing the operating system)
Precautions[edit | edit source]
- Certain Windows 8 builds (such as 8330 (fbl_woa) or 8422 (fbl_woa)) may fail to properly load certain binaries on most startup attempts due to an emulation bug that causes the boot environment to read files incorrectly (especially the Hardware Abstraction Layer) causing an invalid checksum error, despite the files themselves being unmodified. This can be worked around by attempting to retry the startup attempt multiple times.
- USB emulation is largely unstable and may result in all input devices failing to register any user inputs. To restore input, switch to the QEMU compatibility monitor (Ctrl+Alt+2) and run the following commands:
device_del kbd device_add usb-kbd,id=kbd device_del mice device_add usb-tablet,id=mice
- Multiple BSODs might cause "Preparing Automatic Repair" messages, an early boot error will appear afterwards.
- As of 2024, builds within the 85xx-9200 range cannot be booted on QEMU because the Hardware Abstraction Layer (HAL) implementation in these builds is not compatible with the current state of emulated ARM system. This can be resolved by replacing
hal.dll
with the one in 8439 and disabling Driver Signing Enforcement (DSE).
Instructions[edit | edit source]
Create the needed virtual disk image through the diskpart
utility by running the below script; they will be created under a directory in the C: drive named ARM8
. The partitions it will contain will be respectively mounted under drive letters F and P.
create vdisk file="C:\ARM8\HDD.vhd" maximum=65536 type=expandable select vdisk file="C:\ARM8\HDD.vhd" attach vdisk convert gpt create partition efi size=100 format quick fs=fat32 assign letter=F create partition primary format quick fs=ntfs assign letter=P exit
Deploy the image and apply the generic product key from the build's installation media by invoking the following DISM commands, then add the boot files to the EFI partition:
DISM /Apply-Image /ImageFile:"X:\path\to\install.wim" /ApplyDir:P:\ /Index:1 DISM /Image:P:\ /Set-ProductKey:NFV72-RG2HG-7FTTP-8FJTB-FF848 /AcceptEula bcdboot "P:\Windows" /s F: /f UEFI
Eject the currently attached virtual disk from the machine, then paste and run the contents of the below script onto a batch file within the QEMU installation directory, replacing YYYY-MM-DD
with the build's compile date:
set MAIN="C:\ARM8\HDD.vhd"
qemu-system-arm ^
-M virt,force_el3=true,force_psci=true,pci=false,highmem=false ^
-cpu cortex-a15 -smp cores=4,threads=2 -m 2048 ^
-device usb-kbd,id=kbd -device usb-tablet,id=mice ^
-drive id=SD,if=none,file=%MAIN% -device sd-card,drive=SD ^
-bios fw\QEMU_EFI_1512_driver1998.fd -device VGA ^
-rtc base=YYYY-MM-DD,clock=vm ^
--accel tcg,thread=multi
Continue installing the operating system through normal means.