Hacker News new | ask | show | jobs
by marcan_42 1752 days ago
The Hackintosh seems likely to die once Apple stops releasing new macOS updates with x86 support (which is probably at least 5 years out, hopefully). Unlike x86 Macs, ARM Macs have nonstandard customizations in the CPU, making running macOS on any other ARM CPU quite impractical without deep hacks. ARM macOS also does not support anything but Apple GPUs (and requires a GPU).

That said, we know at least the VMkernel is likely to work on other ARMs, though userspace might not like it if you don't have things like AMX in your CPU, or the SPRR stuff. Rosetta is also unlikely to work without Apple's custom extensions, though some are headed for standardization. And the GPU is still an issue. If you try really hard (e.g. sticking the OS in a VM and emulating a bunch of stuff) it can hypothetically work... but it's orders of magnitude harder than a Hackintosh.

1 comments

> making running macOS on any other ARM CPU quite impractical without deep hacks

Presuming those other 2025-era ARM CPUs have standardized virtualization extensions, macOS would probably be best run through a hardware-accelerated hybrid emulator that interprets, rather than executes, the non-supported instructions. (Think Linux-aarch64 running qemu-kvm.)

“Hackintoshing” in the sense of needing to write macOS drivers for Apple-unsupported hardware/peripherals would still exist in that world, as people would want to pass hardware (like the GPU!) through to the VM for performance. Though the construction of these drivers might be easier than today, as for peripherals that are just too hard to get macOS itself to support, hardware-abstracted peripheral drivers could be written instead (or even reused from VM software like VMWare Fusion!)

> interprets, rather than executes, the non-supported instructions.

If only ARM virtualization could do that - it would've made my life much easier when writing the m1n1 hypervisor.

There is no facility for intercepting and trapping unsupported instructions in EL0/1 into EL2. The undefined instruction exception goes straight to the guest. I had to hijack this for early bringup debugging and ended up patching the guest's exception table, but needless to say that isn't terribly nice...

ARM macOS requires a GPU (WindowServer won't run without one), which means supporting Metal. So not only do you need to write a GPU driver, you need to write a GPU driver that supports Metal. Apple support paravirtualized GPUs... by passing through Metal, as I understand it. That's only easy if your host OS is macOS.

Going to answer point by point:

> That said, we know at least the VMkernel is likely to work on other ARMs, though userspace might not like it if you don't have things like AMX in your CPU, or the SPRR stuff

Open-source XNU doesn't support Apple's CPU extensions, but macOS still runs just fine on it. (but no Rosetta of course)

> by passing through Metal, as I understand it

See ParavirtualizedGraphics.framework, which uses MetalSerializer.framework under the hood.