EFI boot to Linux on a MacBook Pro

grub2refituefi

8,3 MacBook Pro 2011, running Ubuntu 11.10 amd64.

Here's the situation. Screen backlight and a few other things only work if booting in EFI, so I need to boot Ubuntu in EFI to get things working.

If I hold down Alt while booting and start Linux that way, then I boot into EFI just fine to my existing GRUB2 setup with screen brightness working.

I'd like to make this a bit more "automatic." I'm currently using rEFIt to allow me to boot into the various operating systems I've got on the machine. Unfortunately, rEFIt doesn't boot Linux in EFI mode, it uses a legacy mode, I believe, which seems to be equivalent to BIOS.

Thus, I installed a GRUB2 EFI module to rEFIt and I can now see that in my boot menu just fine. The problem is that I'm having boot problems. With the following GRUB command, I can see the kernel boot, but it hangs at

*ERROR* failed to get supported _DSM functions

and never actually completes. Here's my GRUB configuration file:

set debug=fg
insmod efi_uga
insmod font

if loadfont ${prefix}/unicode.pf2
then 
    insmod gfxterm
    set gfxmode=auto
    set fgxpayload=keep
    terminal_output gfxterm
fi

menuentry "Linux (BIOS)" {
    search --file --no-floppy --set=root /vmlinuz
    loadbios /boot/vbios.bin /boot/int10.bin
    linux /vmlinuz root=/dev/sda4 video=efifb
    initrd /initrd.img
}

I basically have two questions.

  1. Is there a way to enable EFI booting to Linux in rEFIt? If that were possible, I could avoid having to mess with GRUB altogether.

  2. What am I doing wrong with GRUB? If I can't get rEFIt to play nice, how should I be booting my kernel in the EFI GRUB configuration file? I tried using the one on my system at /boot/grub/grub.cfg, but that didn't work either.

Why can I use Apple's "alt" loader to boot into Linux with EFI support, while I can't use rEFIt to boot into Linux with EFI support?

Best Answer

Try adding noefi to the end of the GRUB_CMDLINE_LINUX_DEFAULT line in /etc/default/grub, then run grub-mkconfig -o /boot/grub/grub.cfg (assuming that's where you grub configuration file is).

I used to get the exact same error. This fixed it. Although I still can't get the keyboard to work...

Related Question