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?
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:
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.
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
Log in to post a comment.