Background: My board has UEFI. I had Windows 8 and Ubuntu 14.04 LTS installed on the same physical drive (windows partitions first). Windows used UEFI to boot while Ubuntu not. It means that in order to boot into Ubuntu I had to pick up BIOS boot menu and pick non-UEFI device with Ubuntu (UEFI respectively for Windows). This worked perfectly fine for me, Ubuntu grub knew nothing about Windows installation nor Windows about Ubuntu.

Situation: I accepted Windows 10 upgrade, which added some partition before my Ubuntu partitions. Windows is still booting fine with UEFI, but Ubuntu enters Grub rescue mode on booting:

error: no such partition.
Entering rescue mode...
grub rescue>

From this point, I managed to start Ubuntu manually by typing

set prefix=(hd0,gpt5)/boot/grub
set root=(hd0,gpt5)
insmod normal

as (hd0,gpt5) is my /boot containing partition (this helped Windows 10 upgrade led to grub rescue)

Question: How to make this prefix/root change permanent? I followed this http://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd and tried to reinstall grub, but got the following:

sudo grub-install /dev/sda
Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.

I also tried boot-repair, with separate /boot/efi partition unticked, but I am getting error saying 'GPT detected. Please create BIOS-Boot and try again)[...]'

Here's my bootinfo summary http://paste.ubuntu.com/12520209/

/dev/sdc is pendrive with LiveCD Ubuntu, it's temporarily mounted.

Is there a way to indicate GRUB2 to lookup ,gpt5 instead of gpt4, as indicated in bootinfo? I browsed askubuntu, but cases I found were related to UEFI mode for both systems and I would like to avoid setting up Ubuntu in UEFI mode.

  • I was facing the same problem . Reinstalling grub2 after logging in to ubuntu using set prefix=(hd0,gpt5)/boot/grub set root=(hd0,gpt5) insmod normal normal as you mentioned above solved the problem for me. It then didn't show blocklist error. – kashish Sep 22 '15 at 11:59

Since Ubuntu has been installed in Bios legacy mode and the device was UEFI enabled, Linux seeked for partition with bios_grub flag on, which surprisingly was not there. I created new partition, 1 MB in size, between my last Windows partition and first Linux partition. I set bios_grub flag for it, and left it unformatted. I used gparted to do that. After that I executed grub-install followed by update-grub. This operation detected partition with the flag, installed core.img to this new partition and updated MBR to seek core.img there. Now, my Ubuntu grub is running in legacy mode, just as I was expecting.

I am posting my current bootinfo so that one can compare the changes.


| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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