How to replace boot.efi with mine

El Capitan now runs on unsupported hardware, but that was only step one. We have a few more hurdles to take. Let’s start with the installation process. Take a look at this snippet from ia.log:

Extracting boot files from /Volumes/OS X Install ESD/BaseSystem.dmg
Extracting Boot Bits from Inner DMG:
Copied prelinkedkernel
Copied Boot.efi
Copied PlatformSupport.plist
Ejecting disk images
Generating the file {
	    "Kernel Cache" = "/.IABootFiles/prelinkedkernel";
	    "Kernel Flags" = "container-dmg=file:///Applications/ root-dmg=file:///BaseSystem.dmg";
Done generating the file
Blessing /Volumes/MacintoshHD -- /Volumes/MacintoshHD/.IABootFiles

After which the InstallAssistantTool takes over:

Blessing Mount Point:/Volumes/MacintoshHD Folder:/Volumes/MacintoshHD/.IABootFiles
***************************** Setting Startup Disk *****************************
******           Path: /Volumes/MacintoshHD
******     Boot Plist: /Volumes/MacintoshHD/.IABootFiles/
/usr/sbin/bless -setBoot -folder /Volumes/MacintoshHD/.IABootFiles -bootefi /Volumes/MacintoshHD/.IABootFiles/boot.efi -options config="\.IABootFiles\" -label OS X Installer
Bless on /Volumes/MacintoshHD succeeded

Note: The boot drive (ElCapitanSSD) had El Capitan 10.11.1 installed on it and the target drive (MacintoshHD) had Yosemite 10.10.5 installed on it.

But if I install El Capitan straight from the Yosemite drive (MacintoshHD) – after downloading it from the AppStore – then bless looks like this:

/usr/sbin/bless -setBoot -folder /OS X Install Data -bootefi /OS X Install Data/boot.efi -options config="\OS X Install Data\" -label OS X Installer

The only difference here is the folder name i.e. OS X Install Data instead of .IABootfiles. And after all required files are extracted from the DMG and are saved in the target folder, then your computer will reboot. The firmware will then load/execute boot.efi which will fail, of course… if that isn’t the 32-bit one!

You can setup the initial OS X Install Data directory by entering the following terminal commands:

cd /Applications/Install OS X 10.11 El
sudo ./startosinstall --applicationpath "/Applications/Install OS X El" --volume /Volumes/MacintoshHD

This installation phase is called “Boot 1” by Apple and also sets a (visible) NVRAM variable with the name rc_imgsrc_info and the data contains a binary plist with the UUID of the installation target. Other NVRAM variables written by the InstallAssitantTool include:


But I have yet to find its content.

Ok. Fine. So how are we going to solve this problem? Well. I was wondering if anyone had tried using a launch daemon. Something my late sister used for FileGuard:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "">
<plist version="1.0">
		<string>/OS X Install Data/boot.efi</string>
		<string>/OS X Install Data/PlatformSupport.plist</string>
		<string>/System /Library/CoreServices/boot.efi</string>

What this does is actually quite simple. It checks for changes/removal of the files in the above list (see array) and when that happens it triggers the daemon, where we can restore the file(s) that we want to use. This should work for the first two file in the list (array) – so that you don’t have to modify the DMG(?) – but I don’t know if it also works for the other two files. We need to verify this. And if it doesn’t work, then we can boot from the RecoveryHD and replace the files.

Update: The installer extracts bootbase.efi from the DMG and saves it as /.IABootfiles/boot.efi or /OS X Instal Data/boot.efi. This ‘special version’ of boot.efi has System Integrity Protection disabled and that allows Apple’s installer to work. You may lose track of which is which, but you can easily verify the version info. The shortest way is to enter:

grep 'bootbase.efi' boot.efi

That won’t return anything on the ‘normal’ copies of boot.efi. Only the extracted and renamed copies of bootbase.efi includes the name. Another way is to check the “booter-name” property with ioreg.

Note: I also made a similar version of bootbase.efi so that you can replace the one found in the DMG. Just wait for Peter Holbrook to compile it, and Mike to test it😉

Update: Confirmed to be working by mikeboss!

16 thoughts on “How to replace boot.efi with mine

  1. Hey Pike,

    I wanted to say a big thank you for developing the Macosxbootloader. I’m sorry to read your comments that clearly show you loved and miss your sister.

    You asked if anyone has put together a similar Launch Daemon approach. I have, and I’ve been using it for a while. Previously I have not bothered to advertise the existence because most people seemed happy with the pikeyosfix that pre-dates mine.

    Your comments moved me, so I thought it might be time to share with you and the community.

    You can find my Boot64 install guide along with a disk image at:

    I have used your Phase 2 stable release boot.efi files for El Capitan.
    NOTE: I’ve only tested this version on Yosemite (10.10)


  2. I think I need to wait until Peter and Mike have a confirmed copy of the System Integrity Protection disabled boot.efi file working. Then I’ll check if my script needs updating….

  3. I’ve been reading some posts about installing El Capitán in my old Mac Pro. I really need to revitalised my workstation. I updated it with a 500GB SSD, 16GB RAM and 5770 graphics, but if I can’t use newer OS X I’m afraid it’s time and money lost. So, I’m missing a step by step tutorial for install El Capitán from scratch in a empty SSD (a fresh installation I mean). People like me, who works with computers but does not understand too much about computers, would really appreciate that. I understand you have to replace the boot file, etc… but when I was about formatting my SSD in order to try the installation I realised I don’t know whats the process exactly should be.

    Please, I need some help!

    And thank you for your work!

    • Hi Jose. We are still trying to determine a smooth upgrade path, but things slowed down a little after I got the flu. Anyway. I’d say start with the installation of Yosemite on the new drive. This procedure is well documented and after that… well. Then we hope to be ready for you.

  4. Hi Pike,
    I modified my Boot64 code a bit and introduced a bug. It’s sorted out now.
    I’ve also tested on my Mac Pro 1,1 (upgraded to 2,1). It seems to work fine, even with SIP allegedly turned on (at least csrutil says it’s on)

  5. Hi, again.

    per your (additional) instructions, I am getting this error:

    splifingate$ sudo ./startosinstall –applicationpath “/Applications/Install\ OS\ X\ El\” –volume /Volumes/Macintosh\ HD

    stdout: “Error: could not find OSInstallersetup.framework…”

    just for fun, of course….

  6. Good news! Your latest boot.efi works with El Capitan 10.11.1!

    I did a dumb-dumb this morning. Ran Software Update on the 2006 Mac Pro. It installed El Capitan 10.11.1.😦 When it rebooted, I got a gray screen with a blinking ‘?’. DUH! The boot.efi files got overwritten. Had to pull out my Snow Leopard Install DVD. Installed SL on a 2TB HDD in bay 3. Booted up on HDD. Copied the patched boot.efi files back onto the 240GB SSD in bay 1. Booted up the MP off the SSD and let 10.11.1 finish it’s installation. Got the MP once again up & running on El Capitan.

    Just thought you want to know. I’ll be more carefull in tge future.🙂

    • Hi!

      First…forgive my English with this kind of technical language! After to install El Capitan with the piker-Alpha Efi boot, Succes!!! It works perfectly in my Mac pro 2006.Until I had let Automatic update on…so after that, when I tried to start again from the updated El Capitan 10.11.3, the screen shows me a forbidden symbol and after few seconds it’s turned off completly.
      So, I tried to start the system from another disk with non updated version of El Capitan, and I copied the Efi boot again in the hard disk (both folders) in the updated El Capitan hard disk…but no succes.

      Could you explain how did you get again a succesful start with the upgraded OS X? May be I am not doing the things right…I replaced the Efi boot in coreservices and USR folders but nothing..

      Thanks in advance!

      • I pulled out my old Snoew Leopard DVD. Installed SL on another hard drive. Booted off the SL HD. Used Finder to to navigate to the El Capitan drive and reinstalled the patched EFI boot rom.

        Caveat: I am still at Mac OS X 10.11.1. So, I do not know if the patched EFI boot ROM file works with 10.11.3. Knowing Apple, they might have some how ‘fixed” OS X to block that patched file from working like they “fix” iOS to make jailbreaking iPhones & iPads more difficult.

      • Thanks Piker for the reply! Was so difficult for Apple to send an OTA upgrade for the EFI of the 32bitEFI machines? You manage to do a loader for 64bit with the precious help of a small company of intelligent coders. So why apple doesn’t respect their customers? On my iMacs (2009 models) when it was time to update for Mountain Lion, i remember that when i was still on Lio , my computer gave me a notification for an update to download. It was described as a critical update. And it was an update for EFI. I guess the same thing could be happen for the old Pros. Could’n it or it was an implementation of hardware? And if it was an implementation, how you manage do make a 64 EFI? (Oh yes i know you are genius people but i guess Apple has also genius employes.)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s