0

I want to replace OSX with elementary OS on a mac.

I formatted the entire hard disk, inserted the elementary OS USB, selected "efi boot" on the boot loader (only option) and installed elementary OS. Everything works well.

The computer boots normally into elementary OS, but if i press the option key on boot, nothing shows on the bootloader.

If i install, choose something else and create just the root and swap partition i get a Windows partition on the boot loader. This leads me to think that is something related to installing in the efi mode.

Does anyone know what could be happening?

Also, why when i insert the live i only get the EFI option and not the windows (bios mode) option when i press the option key?

Thanks.

2 Answers 2

2

It's because MacBook's native bootloader looks for .efi files inside all internal and external HFS+ partitions.

Necessary conditions are...

  • there is a partition formatted as HFS+
  • the partition contains the partition id af00
  • in the root of that partition, there is a file called mach_kernel
  • inside that partition, there a boot.efi file inside /System/Library/CoreServices

Arch Linux wiki describes in detail

Using the native Apple bootloader with GRUB (Mac in archlinux wiki)

Also, it seems to load efi file from /EFI/BOOT so, if your esp(or EFI) partition has appropriate folder, native boot loader shows "EFI Boot".

1
  • Thanks for the detailed explanation. I'm gonna post how i fixed it. Thanks again. Feb 10, 2019 at 14:40
2

1 - Create a file named startup-manager-fix.service with the following text:

[Unit]
Description=Show EFI Install in Apple Startup Manager
After=rc-local.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=-/bin/mkdir /boot/efi/EFI/BOOT/
ExecStop=/bin/cp -a -f /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/BOOT/BOOTx64.EFI

[Install]
WantedBy=multi-user.target

2 - Copy the above file to the folder /etc/systemd/system/

3 - Open the terminal and insert this command to activate the service that will sync both files.

sudo systemctl daemon-reload && sudo systemctl enable startup-manager-fix.service && sudo systemctl start startup-manager-fix.service && sudo systemctl daemon-reload

4 - reboot and the next time you access the apple boot selector (press the option key on startup) the elementary OS ( or other Ubuntu based distro) EFI Installation should be present.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.