Ubuntu – Cannot get grub/boot after Ubuntu install on surface pro 3

bootgrub2uefi

I've gotten a surface pro 3 and installed Ubuntu xenial nightly on it. I've disabled secure boot and when I reboot the system after install it goes straight to the bios screen without any boot loader (grub).

If I reboot the USB disk and use grub from the install menu I can get the system to boot with the follow grub command sequence.

> c
> ls (hd2,gpt2)
> set root=(hd2,gpt2)
> linux /boot/vmlinuz-4.4.0-2-generic root=/dev/sda2
> initrd /boot/initrd.img-4.4.0-2-generic
> boot

I've tried running efibootmgr and it lists Ubuntu as the first boot. I've also tried installing refind through the PPA and it seems like it should work.

I tried using boot-repair and have the following pastebin of the output from that.

http://paste.ubuntu.com/14853201/

Same issue if I set the "Alternate System Boot Order" to SSD only or "Network->USB->SSD".

Any assistance in trying to figure out why I can't get it to load a boot loader would be appreciated.

Best Answer

It looks like you've got a flaky EFI that's forgetting its settings. I recommend you look through the firmware's options to see if there's one to reset its options to the factory defaults. (Such an option usually exists.) If so, use it, then try either running Boot Repair again or re-install rEFInd (boot to Ubuntu in any way you can and run sudo refind-install). The idea here is that EFIs sometimes go "out to lunch" when cruft builds up in their NVRAM settings, and resetting them to the defaults sometimes revives them.

If that fails, look at the EFI/Boot directory on the ESP (that is, /boot/efi/EFI/Boot in Ubuntu) in more detail. Your Boot Repair output shows that this directory exists and holds a bootx64.efi file. This program should be launched as a fallback when everything else fails, but clearly you're not getting to GRUB. Other files in the directory might provide a hint about what the bootx64.efi file is -- there may be a configuration file or well-known filename. It could be that EFI/Boot/bootx64.efi a leftover Microsoft program, which could help explain things; deleting it might be in order in that case. You could also try putting either GRUB or rEFInd there -- copy the EFI/ubuntu or EFI/refind directory to EFI/Boot and then rename the boot loader (grubx64.efi or refind_x64.efi) to bootx64.efi. The result should be a system that boots.

Related Question