Apple’s M2 chip may be getting all the attention right now, but the M1 isn’t dead yet. The M1 Windows Project, word of which reaches us via Liliputing, is working on a way to boot everyone’s favorite Microsoft operating system on M1 Macs, something not usually allowed outside virtual machines.
There's been plenty of work on getting Linux to boot natively on the M1, and a certain amount of success too, which means developer Arminder Singh doesn’t have to start his project entirely from first principles. And while Windows does support Arm chips in its latest versions, that’s not necessarily very much help, as Singh notes on his site: “Apple’s chips are architecturally very different from standard ARM64 chips from companies like Qualcomm or MediaTek and a lot of hardware enablement needs to be done as a result.”
Singh identifies two features of the M1 chip that make it hard to run Windows natively: the interrupt controller, which is present on the Apple chip in a non-standard form that the Windows kernel doesn’t know what to do with, and the IOMMU (input output memory management unit) which presents challenges related to page sizes when communicating with the hardware. Once these are solved, all the Apple-specific hardware on the Mac will require a driver to be written for it, or at least for those items that can’t be solved with the ACPI (Advanced Configuration and Power Interface).
There's an extremely interesting section on Singh’s site regarding the use of a lightweight hypervisor (m1n1, the bootloader taken from the Asahi Linux project) to launch Windows’ UEFI firmware in order to handle the interrupt controller issue — it would get Windows running close to the bare metal, but would mean the OS couldn’t be able to run VMs itself. But of course, there are oddities and issues.
Singh is currently “working on getting m1n1 and its hypervisor updated to handle booting UEFI and Windows better, including setting up the vGIC in EL1.” He’s also working on getting Microsoft’s Project Mu compiled for M1 platforms. “There is zero guarantee that I will be able to get Windows working in a great way by the end of it all,” Singh writes. “But I’m going to try my absolute hardest.”
If you want to keep up with Singh and his remarkable work on the M1 and Windows, find him on GitHub or Twitter.