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.
  • Windows8-6.2.8422.0.fbl woa-HalFailure.png
    • 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 843x-9600.16384 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.

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