Windows update broke grub2 (UEFI)

Haven’t logged in windows for a few months, today after a 2 hours long update of windows and it eventually failed to reboot. I tried reboot several times then windows 8 appears and said failing to update reverting the modifications. Now I can only boot to windows.

I have tried to boot in a live opensuse session from a usb disk and tried to fix grub2 with the following:

linux:~ # mount /dev/sda9 /mnt                                                                                                                                                                                                                                                 
linux:~ # mount --bind /dev /mnt/dev                                                                                                                                                                                                                                           
linux:~ # mount --bind /proc /mnt/proc
linux:~ # mount --bind /sys /mnt/sys
linux:~ # chroot /mnt                                                                                                                                                                                                                                                          
linux:/ # grub2-install /dev/sda                                                                                                                                                                                                                                               
Installing for x86_64-efi platform.                                                                                                                                                                                                                                            
grub2-install: error: cannot find EFI directory.  

Last time I was dealing with grub2-efi was about 2 years ago and set up this dual boot with windows 8. Now I have no idea what the heck is efi anymore…

maybe I just need to mount the efi partition too?
Thanks a lot, in advance.

Yes, you need. By default it is expected on /boot/efi, but you can mount it anywhere and use --efi-directory option of grub2-install.

BTW you most likely do not really need to reinstall anything - just change order of boot entries either using “BIOS” setup screen or using efibootmgr in Linux live session.

Thanks arvidjaar. I however don’t know what to do exactly with your suggestion.

Can u give the commend and where do I put it in my original commends?

In boot menu there’s only windows boot manager (which boots to windows), with two network boot options.

Window has helped you by kindly removing any reference to any inferior OS from the EFI BIOS memory thus assuring you of the highest Windows experience only. :open_mouth:
Thank you very much Microsoft :’(

Basically what you have to do is to reinstall grub2. Boot to a live media then chroot to the root partition for openSUSE on the hard drive run yast-boot management and essential reinstall grub2. It can also be done from command line. Detailed instruction have been posted many time here.

On Thu 14 May 2015 02:56:02 PM CDT, bonedriven wrote:

arvidjaar;2709889 Wrote:
>
> BTW you most likely do not really need to reinstall anything - just
> change order of boot entries either using “BIOS” setup screen or using
> efibootmgr in Linux live session.

In boot menu there’s only windows boot manager (which boots to windows),
with two network boot options.

Hi
Does your BIOS allow selecting an efi file to boot from?

Else boot in efi mode from the install media, then use rescue mode to
re add the entry with efibootmgr command.

eg for no secure efi boot;


efibootmgr -c -L "openSUSE-standard" -l "\\EFI\\opensuse\\grubx64.efi"

eg for secure efi boot;


efibootmgr -c -L "openSUSE-secure" -l "\\EFI\\opensuse\\shim.efi"

Then check it has added the entry;


efibootmgr -v

Reboot and if the entry is not added to your boot list to at least
select openSUSE.


Cheers Malcolm °¿° LFCS, SUSE Knowledge Partner (Linux Counter #276890)
SUSE Linux Enterprise Desktop 12 GNOME 3.10.1 Kernel 3.12.39-47-default
If you find this post helpful and are logged into the web interface,
please show your appreciation and click on the star below… Thanks!

here is the command line instruction


fdisk -l
determine for sure which partition contains the root partition say it is sdX# ( example use the one that has root)

 mount /dev/sdX# /mnt
 mount --bind /mnt/dev
 mount --bind /proc /mnt/proc
 mount --bind /sys /mnt/sys
 chroot /mnt
 grub2-mkconfig -o /boot/grub2/grub.cfg
 grub2-install --force /dev/sdX

Please post “efibootmgr -v” output.

This also gave the same error “no efi partition found”

I finally solved this by adding
mount /dev/sda2 (where efi partition is at) /mnt/boot/efi before chroot.


linux:~ # mount /dev/sda9 /mnt
**linux:~ # mount /dev/sda2 /mnt/boot/efi **                                                                     
linux:~ # mount --bind /dev /mnt/dev                  
linux:~ # mount --bind /proc /mnt/proc
linux:~ # mount --bind /sys /mnt/sys
linux:~ # chroot /mnt                         
linux:/ # grub2-install /dev/sda                                                            
Installing for x86_64-efi platform.                                                                                                                                                                                                                                            
grub install complete. No error reported.

If I had my portable suse at hand this problem would have been solved in 10 mins.

Boot to portable suse and start yast-boot loader with “probe foreign os” checked. Then boot the suse on the machine and use its yast-bootloader to remake the new bootloader…

Thanks all.