Use Windows on your Raspberry Pi 3/4/5.
You should disable sudo password prompting and enable TTY autologin for this to work in recent versions of Pi OS.
HyperUEFI uses QEMU with KVM to use Pi's processor to run Windows on a thin Linux layer (Pi OS Lite).
It has:
- Audio
- Networking
- USB hotplug
HyperUEFI minimizes overhead by not using a DE or a WM. It uses SDL with GL to show the guest display.
HyperUEFI only has ONE display support. (1st HDMI)
HyperUEFI keeps the guest and the host's network separated.
You need Raspberry Pi OS Lite (64-bit).
To install, clone this repo then run the following in the repo root:
bash $(bash mkinst)
Then, enable autologin using raspi-config and add the following to your bashrc file ~/.bashrc:
sudo /sbin/hymenu
Reboot and use the configurator to configure the guest
Download a Windows 10 ARM ISO and flash it to a USB drive (use a tool like WinDiskWriter or Rufus). Plug the USB drive into the Pi. Boot the guest. Hit ESC on your keyboard to enter OVMF settings. Select Boot Manager and select your drive. Wait for the Windows installer to boot. When it boots, press Shift+F10 to open the command prompt.
Run diskpart and list disks using list disk. Select the drive that Windows will be installed into using select disk DISK_NUMBER.
Then run the following commands in diskpart:
cleanconvert gptcre par efi size 512form fs fat32 quickassign letter Pcre par msr size 16cre par priform quick label Windowsassign letter Qexit
Now, cd to the folder that contains the install.wim file.
To list editions, run dism /get-wiminfo /wimfile:install.wim. Then, note the ID of your desired edition.
To install (will take a long time), run dism /apply-image /imagefile:install.wim /index:ID /applydir:Q:.
To install the bootloader, run bcdboot Q:\Windows /s P:.
To reboot, run wpeutil reboot.
Sometimes, the WIM inside the installation drive might fail. Copy the WIM from a verified image to a USB drive and invoke DISM there. You might need to unplug and replug your keyboard again to access menu after the boot menu appears. When VirtIO drivers are first installed, the resolution will be a bit off. The cursor and the VM video will be shifted (apart, even). To fix, change the VM resolution to the native resolution (mouse still works but shifted).