Lost ability to use rEFInd dual boot after updating to Yosemite OSX 10.10

7,773

Solution 1

I fixed this issue by using efibootmgr. If you cannot run Ubuntu, use a live version of it.

First make sure you have efibootmgr installed

sudo apt-get install efibootmgr

Then check the partitions from which EFI can boot

$ sudo efibootmgr
BootCurrent: 0000
Timeout: 5 seconds
BootOrder: 0000,0082
Boot0000* ubuntu
Boot0080* Mac OS X
Boot0081* Mac OS X
Boot0082* 
BootFFFF* 

In my case it lists 4 partitions. Boot0000 is the Ubuntu partition where GRUB is installed; by default I want to boot this partition.

I found out that Boot0080 is the recovery partition of the old Mavericks installation, while Boot0081 is the Yosemite recovery partition. The partition where Yosemite is actually installed, in my case, is Boot0082.

GRUB is not able to load Mac OS X directly, but I can configure EFI to load the Mac OS X partition when GRUB exits.

So I've run

sudo efibootmgr -o 0000,0082

Which, to recap, means Boot0000, where GRUB is installed, will be run first, then if you exit grub (by pressing c end then typing the command exit) you can boot into Mac OS X.

To make the process of booting Mac OS X more comfortable you can add an entry to the GRUB boot menu which exits and thus starts Mac OS X. Just edit /etc/grub.d/40_custom and append the following

menuentry "Exit to Max OS X" {
  exit
}

And reload the GRUB configuration with

sudo update-grub

All should work.

Solution 2

I recommend this (now deleted) answer on Stack Overflow (possibly also available via Wayback machine and if not here is a screenshot of it) by Ahmad Afif. The answer uses material from this Linux Mint Forums tutorial, which explains that

  • Mac boots Mac OS by default. We need it to boot our GRUB menu instead.
  • GRUB detects Mac OS but doesn't know how to boot it, so we need to fix that as well.

To fix it, make a live USB and boot from it, then fix the boot order.

Install and run efibootmgr:

sudo apt install efibootmgr
efibootmgr

One line of the output shows the BootOrder, and below that line is a key showing the names of each code, for example

BootOrder: 0080, 0000, ...
Boot0000* ubuntu
Boot0080* Mac OS
...

To change the order to boot 0000 before 0080, you can use this command:

sudo efibootmgr -o 0,80

Run efibootmgr again to check that the BootOrder has changed.

Now GRUB will boot first, and we can use it to boot Ubuntu (or Mint in the case of the tutorial), or, to boot OS X, press esc and type exit. To avoid the latter step in future, it is often sufficient to boot into Ubuntu and run this command:

sudo update-grub
Share:
7,773

Related videos on Youtube

Camilo Riviere
Author by

Camilo Riviere

Updated on September 18, 2022

Comments