As I mess more with my M1 MacBook Pro, the more I realize just how much Apple has redone with these machines. For today, I wanted to take a peak at just how Apple handles the boot process on these machines.

So did Apple just copy-paste iOS’s boot process into M1?

Short answer, yes. Long answer, it’s complicated.

First lets take a peak at the below image:

Here we’re shown the basics of the boot procedure of an M1 Mac is nearly identical to an iOS device, except with a few key differences:

  • M1 Macs are allowed to boot other partitions and drives
    • Compared to iOS where iBoot always assumes it boots the main OS
  • M1 Macs are allowed to boot 3rd party kernels
    • ie. you can create a kernel that boots other OSes, like m1n1 for Linux

The similarities to iOS however have a great benefit as this lowers the amount of hand shakes required, compared to Intel machines with UEFI firmwares. What’s interesting is that now macOS(ie. iBoot) is now part of the boot manager compared to Intel where UEFI was the main boot manager. This makes you question where the line between macOS and firmware is.

Apple is really trying to make it’s own walled garden where it controls the entire boot process, and not having to hand shake with any 3rd party libraries such as they did with EDKII is a huge plus for security. However looking at this from a Hackintosh perspetive, it’s clear that Apple has increased the difficulty curve quite a bit.

Thankfully we do have some interesting projects that try to bootstrap iBoot and iOS in a VM environment, however their usability is fairly lacking. Here’s hoping that someone is dedicated enough to sink hundreds of hours into this ;p