What allows rEFInd's bootx64.efi to be seen by Apple's boot manager?

dgktkr
2013-09-16
2013-09-16
  • dgktkr

    dgktkr - 2013-09-16

    Hi,

    I've been trying to understand what it takes for a boot loader to show up as a choice on Mac hardware when the Option key is held down during power up.

    From my reading of various postings on the web, I had come to believe that a boot loader, such as grub's grubx64.efi, had to be put in a partition with an hfs+ file system in a specific path (/System/Library/CoreServices) and had to be "blessed", but then I came across an article that indicated that that isn't necessary (http://mmanoba.wordpress.com/2013/08/29/howto-install-refind-on-mac-machine-or-usb-stick-hard-drive/).

    So I tried out the author's directions and, sure enough, rEFInd's bootx64.efi, when placed in the EFI System Partition (which is FAT32) is enough for the Apple boot manager to find and display that choice, even without the bless command having been previously applied.

    So what is the key difference between rEFInd's bootx64.efi and grub's grubx64.efi that explains why the latter is not recognized by Apple's boot manager after it is copied to the ESP?

     
  • Roderick W. Smith

    The Mac EFI implementation is a bit weird, and I'm afraid that I don't fully understand all the rules for such things; however, my understanding is that a Mac's EFI will show as bootable in its own boot manager:

    • Items that have been stored on an HFS+ volume in the path you mention and "blessed" with the bless utility.
    • Standard EFI fallback boot loaders (EFI/BOOT/bootx64.efi on x86-64 systems) on ESPs, at least on external media. (I'm not sure about on hard disks, although your experiment suggests they'd work on at least some models.)
    • BIOS-bootable media if there's an MBR or hybrid MBR with at least one partition marked as bootable/active.

    Thus, if my understanding is correct, GRUB should appear as a bootable option if it's installed to an ESP as EFI/BOOT/bootx64.efi (on x86-64 systems). AFAIK, there's nothing special about the rEFInd binary that would make it appear and GRUB not appear, if GRUB is given that special filename.

     
  • dgktkr

    dgktkr - 2013-09-16

    As mentioned above, I had a grubx64.efi file in the ESP of an external USB hard drive at /mount/point/efi/boot. Apple's boot manager didn't recognize it. Then, following Rod's suggestion above, I renamed it to grubx64.efi (I mounted the ESP, cd'ed to /mount/point/efi/boot and then executed "sudo mv grubx64.efi bootx64.efi" in a terminal window). Now Apple's boot manager recognizes it and allows it to be chosen after a restart or poweron with the Option key depressed. Thank you Rod!

    FWIW, I've experimented a bit, and the path for a boot loader in an hfs+ partition doesn't have to be what is mentioned above. To investigate this, I put a boot loader in the root of the partition's file system (i.e. /mount/point/grubx64.efi) and blessed it. After that Apple's boot loader found it just fine and allowed it to be selected. Doing things this way rather than putting the boot loader in the ESP allows you to have multiple boot loaders on any one hard drive, each being displayed with a different label in Apple's boot manager.

    My hardware is a mac mini, mid 2010, Boot ROM Version MM41.0042.B03. The external HDD is a Seagate Expansion Portable 500 GB, STBX500100, USB 3.0/USB 2.0

     
    Last edit: dgktkr 2013-09-17

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks