0

I have installed Ubuntu 14.04 on a laptop which came with Windows 8 installed. It was working fine for almost a year and I was able to boot Ubuntu and Windows from grub screen but from few days Windows is not booting and showing following error:

error: symbol grub_efi_find_last_device_path not found. Press any key to continue...

So I booted boot-repair using usb and tried to fix it but it didn't. Here's the log: http://paste.ubuntu.com/15090095/

  • @Rinzwind I mostly use Ubuntu and very rarely boot Windows and haven't done anything in windows that can cause problem, like updating it. So my thought is that the problem might be in Ububtu/Grub. – vicodin Feb 20 '16 at 17:57
  • It's clearly a GRUB problem (note the error -- symbol grub_efi_find_last_device_path...), which is installed with Ubuntu. – Rod Smith Feb 21 '16 at 14:47
  • Did you manually or with Boot-Repair copy shimx64.efi to /EFI/Boot/bootx64.efi. That often is required for HP UEFI boot, and then boot hard drive not ubuntu UEFI entry. If so you may need to copy again. symbol grub_efi_find_last_device_path https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1533258 and: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1366546 – oldfred Feb 21 '16 at 15:34

2 Answers2

1

I'm not 100% positive of this, but my guess is that there's been a GRUB update that's causing a mismatch between different GRUB components -- the main GRUB binary, GRUB modules stored in /boot/grub, and/or the GRUB configuration file. It's possible that Boot Repair is interacting with this, because that tool re-installs GRUB, which could result in mis-matched components.

If I'm right, sticking with GRUB 2 will be difficult, because you'll need to manually re-install it. There are several ways to do this. One of the more complex is described here. A less complex procedure is here. Note that none of these is guaranteed to work; GRUB 2 is notoriously finicky and can be very easily misconfigured. It's even possible that the attempt will make matters worse by making it impossible to boot to Ubuntu. The only reason GRUB 2 works reasonably well is that GRUB and Ubuntu developers have created extremely complex configuration scripts that get things right most of the time. When they don't, you're on your own with an overly-complex tool.

Another option is to abandon GRUB 2 in favor of another boot loader. I describe several here. My own rEFInd is likely to be the easiest to get working:

  1. If Secure Boot is enabled, disable it, at least temporarily. (You should be able to re-enable it later.)
  2. Download the USB flash drive or CD-R version of rEFInd from its downloads page.
  3. Prepare a boot medium.
  4. Boot to the rEFInd boot medium. You should then be able to boot either Windows or Ubuntu. Test both.
  5. If you can boot both Windows and Ubuntu with rEFInd, boot to Ubuntu.
  6. Install the rEFInd Debian package or PPA.
  7. Test that you can boot from the hard disk via rEFInd.
  8. If desired, re-enable Secure Boot. Note that you'll need to enroll the EFI\refind\keys\refind.cer or EFI\refind\keys\refind_local.cer key when you first boot if you re-enable Secure Boot. This is a one-time task. See the rEFInd Secure Boot documentation for more on this subject.
Rod Smith
  • 44,284
  • 7
  • 63
  • 105
1

Updating to the latest grub version (at the moment 2.02~beta2-29ubuntu0.3) leads to error: symbol grub_efi_find_last_device_path not found when I try to start Windows on my dual boot system having Ubuntu 15.10 next to Windows 10.

This can be fixed by downgrading to the version before the latest one in the ubuntu repository till this bug is fixed.

Here is how I downgraded my grub installation:

sudo apt-get install grub2-common=2.02~beta2-29ubuntu0.2 \
grub-common=2.02~beta2-29ubuntu0.2 grub-efi-amd64=2.02~beta2-29ubuntu0.2 \
grub-efi-amd64-bin=2.02~beta2-29ubuntu0.2

sudo apt-mark hold grub-common grub-efi-amd64-bin grub2-common grub-efi-amd64

Without the hold line apt would install the latest version on the next upgrade. As soon as the bug is fixed you can remove the hold mark with

sudo apt-mark install grub-common grub-efi-amd64-bin grub2-common grub-efi-amd64

Source: http://blog.coffeebeans.at/archives/1035

Update (16 october 2016): Since I am still facing this issue on a fresh new ubuntu 16.10 and the package-versions above were not existing in the repository of yakkety anymore:

1) Add temporarily following to your apt-sources.file:

###### Ubuntu Main Repos
deb http://de.archive.ubuntu.com/ubuntu/ wily main restricted universe multiverse 

###### Ubuntu Update Repos
deb http://de.archive.ubuntu.com/ubuntu/ wily-security main restricted universe multiverse 
deb http://de.archive.ubuntu.com/ubuntu/ wily-backports main restricted universe multiverse 

2) perform an apt update && apt dist-upgrade

3) Save your fresh installed & old grub2 packages from future updates: sudo apt-mark hold grub-common grub-efi-amd64-bin grub2-common grub-efi-amd64

4) Undo above changes in your apt file to be in sync with your desired ubuntu package (I assume that you don't want to use wily in >= 2016).

or:

1) Download the four deb-files manually from here: https://launchpad.net/~ubuntu-security-proposed/+archive/ubuntu/ppa/+build/8443424

2) install with dpkg -i grub*.deb

3) Keep your fresh installed & old grub2 packages safe from future (buggy) updates: sudo apt-mark hold grub-common grub-efi-amd64-bin grub2-common grub-efi-amd64

(everything on your own risk)

Aydin K.
  • 119
  • On running first command I'm getting following output:

    Reading package lists... Done Building dependency tree Reading state information... Done E: Version '2.02~beta2-29ubuntu0.2' for 'grub2-common' was not found E: Version '2.02~beta2-29ubuntu0.2' for 'grub-common' was not found E: Version '2.02~beta2-29ubuntu0.2' for 'grub-efi-amd64' was not found E: Version '2.02~beta2-29ubuntu0.2' for 'grub-efi-amd64-bin' was not found

    – vicodin Mar 03 '16 at 14:22
  • see my update.. – Aydin K. Oct 16 '16 at 18:48