Repository navigation
Apple Driver Boot EFI
Abdelkader Boudih edited this page Aug 24, 2026
·
4 revisions
Upstream status: works with stock loader.efi. Apple firmware is EFI 1.x with Apple extensions, older than the UEFI 2.x baseline, but FreeBSD's loader copes on every model in the fleet.
flowchart LR
PWR[Power on] --> FW["Apple EFI firmware"]
FW -->|"Option key"| PICK["Startup Manager<br/>(firmware boot picker)"]
FW -->|default| ESP["ESP: EFI/BOOT/BOOTX64.EFI"]
PICK --> ESP
ESP --> L{"What is installed there?"}
L -->|"loader.efi"| BSD["FreeBSD loader<br/>-> kernel"]
L -->|"rEFInd / Meridian"| MENU["Boot menu"] --> BSD
L -->|"T2 machines"| SEC["T2 verifies the chain first:<br/>set reduced security in Recovery"]
SEC --> BSD
style BSD fill:#1a7a3a,color:#fff
style SEC fill:#8a6d1a,color:#fff
| Era | Boot reality |
|---|---|
| 2006 to early 2007 (EFI32) | MacBook1,1/2,1, MacBookPro1,x/2,x, iMac4,1 to 6,1, Mac mini 1,1/2,1: 32-bit EFI even on 64-bit CPUs. CSM/BIOS boot, or an EFI32 grub handing off to a 64-bit kernel |
| mid 2007 onward (EFI64) | starts with MacBookPro3,1 (mid 2007, verified booting loader.efi in this fleet); clean EFI64 boot from the ESP |
| Mac Pro exception | Mac Pro 1,1 and 2,1 kept EFI32 until the 2008 Mac Pro 3,1 went EFI64 |
| T2 (2018 to 2020) | must set reduced security + external boot in macOS Recovery first |
| Apple Silicon | different universe (iBoot), experimental arm64 bring-up territory |
- The firmware Startup Manager (hold Option) only lists things it likes;
installing loader.efi as the fallback
EFI/BOOT/BOOTX64.EFIis the reliable path on Macs. - Keeping a small macOS or the recovery partition around saves you when firmware updates or T2 security settings need touching.
- Dual-boot with another OS on the same disk: a menu bootloader in the fallback path (rEFInd, or Meridian in this fleet) picks the OS; Apple NVRAM boot-order tricks are less dependable than on PC UEFI.
- Multi-OS example in the fleet: anvil (iMac12,2) dual-boots FreeBSD and DragonFly via Meridian; ember rotates five operating systems.
Development builds on this fleet use the GENERIC_APPLE kernel config: GENERIC plus the Apple-relevant experimental drivers. Stock FreeBSD GENERIC boots the same machines, minus the extras.
Back to Apple Hardware.